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 .