Top Banner

of 44

ESTRUCTURAS REPETITIVAS DE MATLAB

Jul 07, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    1/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Introducci´on a los Computadores (CNM–130):Estructuras repetitivas en Matlab ®

    Alejandro Piedrahita H.

    Instituto de Matem´ aticasFacultad de Ciencias Exactas y Naturales

    Universidad de Antioquia

    Copyleft 2013. Reproducci´ on permitida bajo lostérminos de la licencia de documentaci´ on libre GNU .

    http://ciencias.udea.edu.co/http://ciencias.udea.edu.co/http://ciencias.udea.edu.co/

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    2/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Contenido

    1 Introducci´on

    2 Ciclo para

    3 Ciclo mientras

    4 Números aleatorios

    5 Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    3/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Estructuras de control repetitivas

    Las estructuras de control permiten modicar el ujo de ejecuci´ onde las instrucciones de un algoritmo o programa

    Se utilizan cuando en el desarrollo de la soluci´ on de un problema esnecesario ejecutar una serie de instrucciones repetidas de veces

    El conjunto de instrucciones que se ejecuta repetidamente se llamaciclo o bucle

    Cada vez que se ejecuta el bucle se dice que se ha producido unaiteraci´ on

    Caracteŕısticas de los ciclos:

    Deben incluir una condici´ on de parada

    Deben nalizar luego de un n´ umero nito de veces

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    4/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Tipos de estructuras repetitivas

    Ciclo para (for)

    Se conoce a priori el n´ umero de veces que se deben repetir lasinstrucciones

    El n úmero de repeticiones no depende de las sentencias del ciclo

    Ciclo mientras (while)

    No se conoce a priori el n´ umero de veces que se deben repetir lasinstrucciones

    La condici´on de parada se eval´ ua antes de ejecutarse el ciclo

    El n úmero de repeticiones puede depender de las sentencias del ciclo

    Ciclo repetir (repeat)No se conoce a priori el n´ umero de veces que se debe repetir el conjuntode instrucciones

    Se ejecuta primero el ciclo y luego se eval´ ua la condici´ on de parada

    El n úmero de repeticiones puede depender de las sentencias contenidas

    en el ciclo

    d ´ l l ´ l f

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    5/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Estructura repetitiva para

    Estructura de control en la que se conoce el n´ umero m áximo deiteraciones

    Elementos del bucle:

    V: variable de control del cicloVI: valor inicial

    VF: valor nalID: incremento o decremento

    Sintaxis en Matlab

    for variable = inicio:incremento:final

    ...end

    I t d i´ Ci l Ci l i t N´ l t i R f i

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    6/44

    Introducci on Ciclo para Ciclo mientras N umeros aleatorios Referencias

    Ciclo forSintaxis en Matlab

    for variable = inicio:incremento:final

    end

    >> for i = 1:5disp(i)end

    12345

    >> i

    i = 5

    >> for i = 1:2:5disp(i)end

    1

    35

    >> for k = 5:-1:1disp(k)end

    54321

    >> for j = 1:2:5

    fprintf( ’j es %d \ n’ , j);fprintf( ’j+1 es %d \ n’ , j+1);endj e s 1j+1 es 2j e s 3j+1 es 4

    j e s 5j+1 es 6

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    7/44

    Introducci on Ciclo para Ciclo mientras N umeros aleatorios Referencias

    Variables contadoras

    Variables que se incrementan o disminuyen de forma constante cadavez que se ejecuta la instrucci´ on que lo contiene

    Usos:Cuentan las veces que ocurre un determinado suceso

    Controlan la ejecuci´ on de un bucle que se realiza un determinadonúmero de veces.

    Todo contador debe tomar un valor inicial antes de ser usadoSintaxis de un contador:

    nombre variable = nombre variable ± constante> > a = 0a =

    0> > a = a + 1 ;> > a = a + 1 ;> > a = a + 1 ;> > a = a + 1 ;>> aa =

    4

    >> impares = 0;

    >> for i = 1:2:99impares = impares+1;end

    >> imparesimpares =

    50

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    8/44

    Introducci on Ciclo para Ciclo mientras N umeros aleatorios Referencias

    Ejemplo

    Realice un programa en ( Matlab ) que lea n n´ umeros enteros desde el teclado y cuente cu´ antos de ellos son ceros.

    Soluci´ on

    n : almacena el n´umero de datos que se ingresannum: almacenar los valores de los enteros ingresados.numceros : variable contador , cuenta el n´umero de ceros

    >> numceros = 0;>> num = input( ’Ingrese un numero entero: ’ );>> Ingrese un numero entero: 2>> num = input( ’Ingrese un numero entero: ’ );>> Ingrese un numero entero: 0>> numceros = numceros+1;

    >> num = input( ’Ingrese un numero entero: ’ );>> Ingrese un numero entero: 0>> numceros = numceros+1;>> num = input( ’Ingrese un numero entero: ’ );>> Ingrese numero: -1>> numceros

    numceros =2

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    9/44

    Introducci on Ciclo para Ciclo mientras N umeros aleatorios Referencias

    Ejemplo 2.1

    nceros.m

    % El programa recibe n enteros y determina% el numero de ceros ingresados.

    clear all;

    numceros = 0;n = input( ’Ingrese n: ’ );

    for i=1:n

    num = input( ’Ingrese numero: ’ );if num == 0numceros = numceros + 1;

    endend

    fprintf( ’Numero de ceros ingresados: %d \ n’ , numceros);

    >> ncerosIngrese n: 3Ingrese n: -1Ingrese n: 0Ingrese n: 2Numero de ceros ingresados: 1

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/h6wns1bjik32q6n/nceros.mhttps://www.dropbox.com/s/h6wns1bjik32q6n/nceros.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    10/44

    p

    Variables acumuladoras

    Almacenan valores que se incrementan o disminuyen de forma variable

    Sintaxis de un acumulador en Matlab :nombre variable = nombre variable ± variablenombre variable = nombre variable * variable

    Todo contador debe tomar un valor inicial antes de ser usado:nombre variable = 0 ´ o nombre variable = 1

    >> suma = 0;>> i = 1 ;>> suma = suma + i;> > i = i + 1 ;>> suma = suma + i;> > i = i + 1 ;>> suma = suma + i;> > i = i + 1 ;>> suma = suma + i;>> sumasuma =

    4

    >> mult = 1;>> i = 1 ;>> mult = mult * i;> > i = i + 1 ;>> mult = mult * i;> > i = i + 1 ;>> mult = mult * i;> > i = i + 1 ;>> mult = mult * i;>> mult mult =

    24

    >> suma = 0;>> for i=1:4suma = suma + i;end>> sumasuma =

    4

    >> mult = 1;>> for i=1:4 mult = mult * i;end>> mult

    mult =24

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    11/44

    Ejemplo 2.2: serie geométrica

    EjemploRealice una funci´ on en Matlab que tenga como argumento un entero

    positivo n y calcule n

    i =1

    12i

    = 121

    + 122

    + 123

    + · · ·+ 12n

    Soluci´ onn : almacena el entero hasta donde se realiza la sumasuma : almacena la n-ésima suma parcial.

    >> suma = 0;>> i = 1 ;

    >> suma = suma + 1/2 ∧ i;

    > > i = i + 1 ;

    >> suma = suma + 1/2 ∧ i;> > i = i + 1 ;

    >> suma = suma + 1/2 ∧ i;> > i = i + 1 ;

    >> suma = suma + 1/2 ∧ i;> > i = i + 1 ;

    >> suma = suma + 1/2 ∧ i;

    > > i = i + 1 ;

    >> suma = suma + 1/2 ∧ i;> > i = i + 1 ;

    >> suma

    suma =0.9844

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    12/44

    geom.m

    function y = geom(n)% Calcula la suma parcial% de la serie geometrica

    suma = 0;for i=1:nsuma = suma + 1/2 ∧ i;

    end

    y = suma;end

    >> geom(1)ans =

    0.5000

    >> geom(6)ans =

    0.9844

    >> geom(10)ans =

    0.9990

    >> geom(20)

    ans =1.0000

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/m4c8a942tr8ubbh/geom.mhttps://www.dropbox.com/s/m4c8a942tr8ubbh/geom.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    13/44

    Ejemplo 2.3: Fibonacci

    Ejemplo

    Realice un programa en Matlab

    que calcule los n primeros términos de la suci´ on de Fibonacci

    1, 1, 2, 3, 5, 8, 13, 21, 34, . . .

    Soluci´ on

    n : almacena el entero hasta donde se realiza la sumaEl t́ermino n-ésimo de la sucesi´ on para n = 2 , 3, . . . est á dado por:

    f n = f n − 1 + f n − 2 con f 0 = f 1 = 1pri : representa a f n − 2 ; seg : representa a f n − 1 ; ter : representa a f n

    >> pri = 1; seg = 1;

    >> ter = pri + segter =

    2

    >> pri = segpri =

    1

    >> seg = ter

    seg =2

    >> ter = pri + segter =

    3

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    14/44

    bonacci.m

    % El programa calcula los n primeros% terminos de la sucesion de Fibonacci.

    clear all;

    pri = 1; seg = 1;n = input( ’Ingrese n: ’ );disp(pri);disp(seg);

    for k=1:(n-2)ter = pri + seg;

    pri = seg;seg = ter;disp(ter)

    end

    >> fibonacciIngrese n: 9

    112358

    132134

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/34x7kpnbhgbkaut/fibonacci.mhttps://www.dropbox.com/s/34x7kpnbhgbkaut/fibonacci.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    15/44

    Ejemplo

    Realice un programa en Matlab que encuentre todos los divisores positivos de un entero no negativo n e imprima el n´ umero de divisores que posee.

    Soluci´ onn : almacena el entero positivo ingresado por el usuarioi : almacena los divisores de n y controla el ciclonumdiv : variable contadora, cuenta los divisores de n

    >> n = 15;

    >> i = 1 ;>> numdiv = 0;

    >> if rem(n,i)==0disp(i);numdiv = numdiv + 1;

    end1

    >> i = i+1;>> if rem(n,i)==0disp(i);numdiv = numdiv + 1;end

    >> i = i+1;

    >> if rem(n,i)==0disp(i);numdiv = numdiv + 1;end

    3

    >> i = i+1;>> if rem(n,i)==0disp(i);numdiv = numdiv + 1;end

    > numdivnumdiv =

    2

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    16/44

    Ejemplo 2.4: divisores de un entero

    divisores.m

    % El programa calcula los divisores positivos% de un entero no negativo n.clear all;

    n = input( ’Ingrese n: ’ );numdiv = 0;

    for i=1:nif rem(n,i) == 0

    disp(i);numdiv = numdiv + 1;

    endend

    fprintf( ’ %d tiene %d divisores \ n’ , n, numdiv);

    >> divisoresIngrese n: 12

    12346

    1212 tiene 6 divisores

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/l7t84h8vfib45nw/divisores.mhttps://www.dropbox.com/s/l7t84h8vfib45nw/divisores.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    17/44

    Ejemplo 2.5: números primos

    EjemploUn n´ umero entero n > 1 es primo si los ´ unicos enteros positivos que lo

    dividen son 1 y n. Escriba una funci´ on en Matlab que tenga comoargumento a n y devuelva true si n es primo y false en caso contrario.

    Soluci´ onn : almacena el entero positivo ingresado por el usuarioi : almacena los divisores de n y controla el ciclo

    primo : variable booleana ( true si n es primo y false sino lo es)>> n = 35;>> i = 2 ;>> primo = true;

    >> if rem(n,i)==0 primo = false; end

    >> i = i+1;

    >> if rem(n,i)==0 primo = false; end>> i = i+1;

    >> primo

    primo =1

    >> if rem(n,i)==0 primo = false; end>> i = i+1;

    >> if rem(n,i)==0 primo = false; end>> i = i+1;

    >> ii =

    6

    >> primoprimo =

    0

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    18/44

    primo.m

    function y = primo(n)% La funcion devuelve true si n es primo% Se asume que n es un entero positivo

    if n==1y = false;

    elseif n == 2y = true;

    elsey = true;for i=2:(n/2)

    if rem(n,i) == 0y = false;

    endend

    end

    end

    >> primo(32)ans =

    0>> primo(17)ans =

    1

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/ch721j8q9cav6ss/primo.mhttps://www.dropbox.com/s/ch721j8q9cav6ss/primo.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    19/44

    Estructura repetitiva mientras

    Estructura de control utilizada cuando NO se conoce el n´ umero

    máximo de iteraciones

    Elementos del bucle:

    expresion : variable de control del ciclo

    instrucciones : sentencias a ejecutar si expresion es verdadera

    Sintaxis en Matlab

    while (expresion)

    instrucciones...end

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    20/44

    Ciclo mientrasSintaxis en Matlab

    while (expresion)

    instruccionesend

    >> n = 3 ;>> i = 1 ;

    >> while i> eps = 1;

    while (1+eps/2 ∼ = 1) eps = eps/2; end

    >> epseps =

    2.2204e-16

    >> num = 1;

    >> while (num ∼ = 666)num = input( ’Ingrese numero: ’ );endIngrese numero: 3Ingrese numero: -2Ingrese numero: 666

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    21/44

    Ejemplo ( 3.1): la conjetura de Collatz (Ulam)

    Ejemplo (Problema de Collatz)

    Sea n un entero positivo. Si n es par, div́ıdalo entre 2, sino lo es,multipĺıquelo por 3 y s´ umele 1. Repita este proceso hasta que el n´ umeroobtenido sea 1. Realice un programa en Matlab que implemente dichoproceso.

    Observaciones

    Para n = 10 la sucesi ón generada es

    10 , 5 , 16 , 8 , 4 , 2 , 1

    Conjetura de Collatz:

    “Para cualquier entero positivo n, el proceso iterativo de Collatz arriba descrito siempre terminar´ a en 1 en un n´ umero nito de pasos”

    La conjetura de Collatz es un problema abierto en matem´ aticas y hasta

    ahora no ha sido resuelto

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    22/44

    collatz.m

    % Itera el proceso de Collatz

    clear all;

    n = input( ’Ingrese entero: ’ );while n ∼ = 1

    disp(n);if rem(n,2) == 0

    n = n/2;else

    n = 3*n + 1 ;end

    end

    disp(n);

    >> collatz

    Ingrese n: 1010

    516

    8421

    https://www.dropbox.com/s/8dth51hn00z2vzj/collatz.mhttps://www.dropbox.com/s/8dth51hn00z2vzj/collatz.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    23/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    24/44

    esprimo.m

    function y = esprimo(n)% La funcion devuelve true si n es primo% Se asume que n es un entero positivo

    if n==1y = false;

    elseif n==2y = true;

    elsey = true;k = 2 ;

    while (y && k∧2> esprimo(13)ans =

    1>> esprimo(49)ans =

    0

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/ywem5ynhsvzxnob/esprimo.mhttps://www.dropbox.com/s/ywem5ynhsvzxnob/esprimo.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    25/44

    Ejemplo 3.3: función contadora de n´umeros primos

    EjemploImplemente en Matlab la funci´ on denida por

    π(x) = n´ umero de primos ≤x, x ∈R .Soluci´ on

    >> n = 8 ;>> i = 2 ;>> numprimos = 0;

    >> if esprimo(i)numprimos = numprimos+1;end> > i = i + 1 ;

    >> numprimosnumprimos =1

    >> if esprimo(i)numprimos = numprimos+1;end> > i = i + 1 ;

    >> if esprimo(i)numprimos = numprimos+1;end

    > > i = i + 1 ;

    >> if esprimo(i)numprimos = numprimos+1;end> > i = i + 1 ;

    >> if esprimo(i)numprimos = numprimos+1;end> > i = i + 1 ;

    >> numprimosnumprimos =

    3

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    26/44

    primos.m

    function y = primos(x)% Cuenta el numero de primos menores o iguales que n% Requiere la funcion primo del ejemplo (3.2 )numprimos = 0;i = 2 ;

    while i> primos(1)ans =

    0

    >> primos(pi)ans =

    2

    >> primos(150)ans =

    35

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    https://www.dropbox.com/s/5qawvuvml0ympxt/primos.mhttps://www.dropbox.com/s/5qawvuvml0ympxt/primos.m

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    27/44

    Nociones de probabilidad

    Denici ón1 Experimento aleatorio : experimento cuyo resultado no puede ser de-

    terminado de antemano.2 Espacio muestral : conjunto Ω formado por todos los posibles resultados

    de un experimento aleatorio.

    Ejemplo 1

    Experimento: lanzamiento de una moneda corriente

    Espacio muestral: Ω = {c, s} donde c =“cara” y s =“sello”

    Ejemplo 2

    Experimento: lanzamiento de un dado corriente 3 vecesconsecutivasEspacio muestral: Ω = {(a 1 , a 2 , a 3 ) | a i = 1 , 2, 3, 4, 5 ó 6}

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    N i d b bilid d

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    28/44

    Nociones de probabilidad

    Denici ón1 Experimento aleatorio : experimento cuyo resultado no puede ser de-

    terminado de antemano.2 Espacio muestral : conjunto Ω formado por todos los posibles resultados

    de un experimento aleatorio.

    Ejemplo 3

    Experimento: contar el n´ umero de veces que es necesario lanzaruna moneda corriente hasta obtener “cara” por primera vez

    Espacio muestral: Ω = {1, 2, 3, . . .}

    Ejemplo 4Experimento: registrar la posici´ on de una part́ıcula que se muevealeatoriamente sobre el eje realEspacio muestral: Ω = R

    R

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    N i d b bilid d

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    29/44

    Nociones de probabilidad

    Denici ón1 Evento : alg´ un subconjunto A

    Ω del espacio muestral

    2 Probabilidad de un evento A: n´ umero real P (A) que nos indica la “posibilidad” que tiene el evento A de ocurrir y satisface:

    P (A ) ≥ 0 para todo evento A ;

    P (Ω) = 1 ;

    Si A1 , A 2 , . . . son eventos mutuamente excluyentes (A i ∩ A j = ∅ ) ,P (A 1 ∪ A 1 ∪ · · · ) = P (A 1 ) + P (A 2 ) + · · ·

    Ejemplo 5

    Experimento: lanzamiento de una moneda corriente

    Eventos: {c} = “se obtuvo cara” y {s} = “se obtuvo sello”Es igualmente probable obtener “cara” o “sello”:

    P ({c}) = P ({s}) = 12

    = 0 .5

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    N i d b bilid d

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    30/44

    Nociones de probabilidad

    Denici ón1 Evento : alg´ un subconjunto A⊆Ω del espacio muestral

    2 Probabilidad de un evento A: n´ umero real P (A) que nos indica la “posibilidad” que tiene el evento A de ocurrir y satisface:

    P (A ) ≥ 0 para todo evento A ;

    P (Ω) = 1 ;

    Si A1 , A 2 , . . . son eventos mutuamente excluyentes (A i ∩ A j = ∅ ) ,

    P (A 1 ∪ A 1 ∪ · · · ) = P (A 1 ) + P (A 2 ) + · · ·

    Ejemplo 6

    Experimento: lanzamiento de un dado corriente Eventos: cualquier subconjunto de Ω =

    {1, . . . , 6

    }Es igualmente probable obtener cualquier “cara”:P ({1}) = · · ·= P ({6}) =

    16

    = 0 .1666 · · ·La pobabilidad de “obtener 2 ´ o 5” es:

    P ({2}∪{5}) = P ({2}) + P ({5}) = 16 +

    16 =

    13

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Nociones de probabilidad

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    31/44

    Nociones de probabilidad

    Denici ónFrecuencia relativa : si al repetirse N veces el experimento, el evento A

    ocurre n(A) veces, la frecuencia relativa de A est´ a dada por

    fr (A) = n(A)

    N

    Proposici´on

    La frecuencia relativa de un evento nos permite estimar su probabilidad:

    fr (A) →P (A) cuando n se hace “grande”Ejemplo 7

    Experimento: se lanza una moneda corriente n = 100 veces y en 56 delos lanzamientos se obtiene “cara”Eventos: A = “se obtuvo cara” y B = “se obtuvo sello”Las frecuencias relativas de los eventos A y B son:

    fr (A) = n(A)

    N =

    56

    100 = 0 .56 y f r (B ) =

    n(B )

    N =

    44

    100 = 0 .44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Nociones de probabilidad

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    32/44

    Nociones de probabilidad

    Denici ón (Resumen)

    Un espacio de probabilidad es una terna (Ω,

    F , P ) donde:

    1 Ω es un conjunto formado por todos los posibles resultados de un experimento aleatorio (espacio muestral)

    2 F es una colecci´ on de subconjuntos de Ω (eventos)3 P : F →R es una funci´ on tal que

    P (A ) ≥ 0 para todo evento A ;

    P (Ω) = 1 ;

    Si A1 , A 2 , . . . son eventos mutuamente excluyentes (A i ∩ A j = ∅ ) ,

    P (A 1 ∪ A 1 ∪ · · · ) = P (A 1 ) + P (A 2 ) + · · ·

    Propiedades1 P (∅ ) = 02 A ∩B = ∅ =⇒ P (A∪B ) = P (A) + P (B )3 P (Ac ) = 1 −P (A)4

    P (A∪B ) = P (A) + P (B ) −P (A ∩B )

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    33/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Generadores de congruencia

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    34/44

    Generadores de congruencia

    Generador de congruencia lineal

    Sea m un entero positivo, a y b enteros y x0 ∈ {1, . . . , m }. Entonces lasucesi ón u0 , u 1 , . . . , generada por

    xn +1 = ax n + b (mód m)u n = xn /m

    es una sucesi´on de n úmeros que resulta “casi imposible” de distinguir de unasucesi ón de n úmeros que distribuyen uniformemente en [0 , 1).

    >> a = 3 ; b = 0 ;>> m = 7 ; x = 2 ;>> for i = 1:8disp(x);x = rem(a*x+b,m);end

    26451326

    >> a = 171; b = 0;>> m = 29241; x = 3;>> for i = 1:8disp(x);x = rem(a*x+b,m);end

    3513000000

    >> a = 171; b = 0;>> m = 30269; x = 27218;>> for i = 1:8disp(x/m);x = rem(a*x+b,m);end

    0.89920.76390.61850.76140.19480.30850.75920.8276

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Números pseudoaleatorios en Matlab

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    35/44

    Numeros pseudoaleatorios en Matlab

    Comando Genera

    rand() Número pseudoaleatorio que distribuye uniformemente en (0 , 1)randn() Número pseudoaleatorio que distribuye normal en (0 , 1)randi(n) Número pseudoaleatorio entero ≤ n que distribuye uniformemente

    >> rand()ans =0.7475

    >> randn()ans =

    1.6050

    >> randi(8)ans =

    5

    >> for i=1:10disp(rand())end

    0.36730.74490.89230.24260.12960.12960.35000.28710.92750.0513

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Ejemplo: simulaci´on de un experimento tipo Bernoulli

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    36/44

    Ejemplo: simulaci on de un experimento tipo Bernoulli

    EjemploUtilice n´ umeros pseudoaleatorios para simular la realizaci´ on del lanzamientode una moneda corriente 10 veces consecutivas.

    Soluci´ on

    Experimento: lanzamiento de una moneda corriente 10 vecesconsecutivas

    Espacio muestral: Ω = {(a 1 , . . . , a 10 ) | a i = 0 ó 1}“a i = 0” ⇐⇒ “se obtuvo cara en el i-ésimo lanzamiento”“a i = 1” ⇐⇒ “se obtuvo sello en el i-ésimo lanzamiento”En cada lanzamiento hay igual posibilidad de obtener cara (0) o sello(1)

    Para simular cada lanzamiento, generamos un n´ umero pseudoaleatorior que distribuya uniformemente en (0 , 1):

    cara : 0 ≤ r < 12 sello :

    12 ≤ r ≤ 1

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    37/44

    lanzamientos.m

    % Simula el lanzamiento de una moneda

    % corriente 10 veces consecutivasfor i = 1:10

    if rand() < 1/2disp(0);

    elsedisp(1);

    endend

    >> lanzamientos001

    1100010

    >> lanzamientos0010111110

    >> lanzamientos111

    1110000

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Ejemplo: simulaci´on de la probabilidad de un evento

    https://www.dropbox.com/s/jm1cl6z0fx7tsmj/primo.Rhttps://www.dropbox.com/s/jm1cl6z0fx7tsmj/primo.R

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    38/44

    Ejemplo: simulaci on de la probabilidad de un evento

    Ejemplo (Lanzamiento de una moneda corriente)

    Utilice n´ umeros pseudoaleatorios para simular la probabilidad de “obtener cara” al lanzar una moneda corriente.

    Soluci´ on

    Experimento: lanzamiento de una moneda corriente

    Espacio muestral: Ω = {0, 1}{0} = “se obtuvo cara ”{1} = “se obtuvo sello ”Es igualmente probable obtener cara (0) o sello (1):

    P ({0}) = P ({1}) = 12

    = 0 .5

    Para simular P ({0}) utilizamos frecuencias relativas: si al lanzar lamoneda N veces, el evento {0} ocurre n veces, entoncesf r (

    {0

    }) =

    n

    N →P (

    {0

    }) cuando n se hace “grande”

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    39/44

    lanzamientos.m

    function f = moneda(N)% Calcula la frecuencia relativa de% obtener cara al lanzar N veces una

    % moneda corriente% Cuenta el numero de caras obtenidasn = 0 ;for i = 1:N

    if rand() < 1/2n = n+1;

    endendf = n/N;

    end

    >> moneda(20)ans =

    0.4000

    >> moneda(57)ans =

    0.5088

    >> for i=100:100:2000disp(moneda(i))end

    0.4300

    0.48500.53330.46250.52000.51330.47860.5088

    0.49560.51600.50640.45920.49460.49460.50200.50200.49250.49470.51390.51390.51000.5015

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Bibliografı́a I

    https://www.dropbox.com/s/jm1cl6z0fx7tsmj/primo.Rhttps://www.dropbox.com/s/jm1cl6z0fx7tsmj/primo.R

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    40/44

    g

    S. AttawayMatlab : A Practical Introduction to Programming and Problem Solving Butterworth-Heinemann, 2011

    L. BlancoProbabilidad

    Universidad Nacional de Colombia, Primera edici´ on, 2004.J.W. Brown, D.J. MurdochA First Course in Statistical Programming With RCambridge University Press, 1th edition , 2008

    D. Burton

    Elementary Number Theory McGraw Hill Higher Education, 5th edition, 2002

    O. Cair´oMetodoloǵıa de la programaci´ on Segunda edici´on. Alfaomega Grupo Editor, S.A., 2005

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Bibliograf́ıa II

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    41/44

    g

    M.A. CriadoProgramaci´ on en lenguajes estructurados Alfaomega Grupo Editor, S.A. de C.V. Primera Edici´ on, 2006

    S. GhahramaniFundamentals of Probability with Stochastic Processes Pearson Education, Inc., 2005

    D.J. HunterEssentials of Discrete Mathematics Jones & Bartlett Learning; 2 edition, 2010

    H.P. LangtangenA Primer on Scientic Programming with Python Springer, 2011O. Jones, R. Maillardet, A. RobinsonIntroduction to Scientic Programming and Simulation Using RChapman and Hall/CRC; 1 edition, 2009

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Bibliograf́ıa III

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    42/44

    J. Kiusalaas

    Numerical Methods in Engineering with MatlabCambridge University Press, 2 edition, 2009

    D.E. KnuthThe Art of Computer Programming Volume 1, Fundamental Algorithms Addison Wesley Longman, 1997

    S. LipschutzSchaum’s Outline of Essential Computer Mathematics McGraw-Hill, 1th edition, 1982

    Ch.F. Van Loan

    Introduction to Scientic Computing Prentice-Hall, Inc., 1997

    C.B. MolerNumerical Computing with MatlabSIAM, 2004

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    43/44

    Introducci´ on Ciclo para Ciclo mientras N´umeros aleatorios Referencias

    Bibliografı́a V

  • 8/18/2019 ESTRUCTURAS REPETITIVAS DE MATLAB

    44/44

    A. ShenAlgorithms and Programming Springer Undergraduate Texts in Mathematics and Technology, 2010

    P. TymannSchaum’s Outline of Principles of Computer Science McGraw-Hill, 1th edition, 2008

    J. VillateIntrodu¸c˜ ao aos Sistemas Dinˆ amicos: uma abordagem pratica com Maxima

    Copyright © 2005, 2006, 2007 .