CADENAS DE MARKOV (ejercicios)

Anuncio
Matlab para Algorítmica y Programación
2006
Objetivo: Dar una introducción a MATLAB y mostrar algunas de sus aplicaciones a: cálculos sencillos con
vectores y matrices, y graficación. Después realizar esta hoja: Escribir “demo” y ejecutar algunas de los
programas del menú de la pantalla.
I.-MATLAB constituye un lenguaje de cálculo numérico muy eficiente basado en álgebra lineal que te permite
ejecutar instrucciones individuales, funciona como un intérprete, ejecutar programas , y mostrar tus datos
mediante diversas presentaciones gráficas. La ayuda se despliega escribiendo “help” o “help instrucción”
1.
Defina una matriz a partir de sus elementos, los cuales deben ser separados por un espacio o una coma hasta
completar un renglón de la matriz. Cada renglón debe ser separado por “;” (este símbolo también es usado para
ejecutar instrucciones donde se omita la salida de la ejecución)
a=[3 6 7; 2 8 1; 3 2 9]; %Esta es mi primera matriz escrita en Matlab
Los comentarios se anotan después del símbolo “%”.
2.
Mostremos a la matriz definida:
a
Podemos desplegar uno o varios elementos de la matriz (renglón, columna), el primer elemento de la matriz es
a(1,1).
Como ejemplo, muestra el elemento del segundo renglón y la tercera columna, a(2,3):
a(2,3)
La tercera columna completa:
a(:,3)
El segundo renglón completo:
a(2,:)
Una submatriz:
a(1:2,1:2)
3.
Existen funciones en MATLAB para realizar operaciones con matrices. Los argumentos de estas funciones,
matrices o vectores, se encierran entre paréntesis, el resultado puede ser una matriz, un vector, o un escalar, por
ejemplo:
La matriz inversa de la matriz a:
inv(a)
Un vector con los elementos de la diagonal principal:
diag(a)
Una matriz con el logaritmo natural de los elementos de la matriz a:
log(a)
Un vector con los promedios de cada columna de la matriz a:
mean(a)
Un escalar con la suma de una columna
sum(a(:,3))
Podemos decir que las operaciones y funciones de MATLAB actúan sobre matrices (un vector es una
matriz unidimensional y un escalar es una matriz de un elemento).
C. Galindo (Depto. de Computación ITAM)
Laboratorio de Probabilidad I
1
4.
Existen varios tipos de operadores, algunos son: asignación “=”, aritméticos, “+, -, * , ^ ”, relacionales, “<, >,
==,<=, >=”, lógicos, “xor, &, |, ~”, para operar con arreglos “.*, ./, .^ ” .
Podemos crear una matriz b a partir de la matriz a, por ejemplo sumando 2 a cada elemento:
b=a + 2
Podemos emplear “*” para multiplicar dos matrices y asignar el resultado a i:
i= a*b
Podemos obtener una matriz al evaluar una expresión lógica (0 es falso, 1 es verdadero):
o= (a <= 3)
Podemos obtener la matriz transpuesta de a:
a’
Podemos obtener la matriz resultado del producto de a por a:
a^2
También podemos formar una matriz elevando al cuadrado cada elemento de a, lo cual es en general distinto a la
operación anterior.:
a.^2
5.
Podemos cambiar uno o varios elementos de la matriz a sin alterar el resto:
a(1:2,2:3) = [9 9;9 9]
6.
Podemos crear un vector z con los renglones de a:
z= [a(1,:) a(2,:) a(3,:)]
7. También podemos generar matrices con valores particulares.
Una matriz de ceros de 79:
zeros(7,9)
Una matriz de unos de 97:
ones(9,7)
La matriz identidad de dimensión 5:
8.
eye(5)
Otras cuestiones de interés.
La constante  se denomina “pi” en MATLAB.
pi
Las flechas ↑ ↓ permiten “navegar” por el grupo de instrucciones que se han ejecutado
La ayuda se puede llamar con “help” o con “help palabra clave”
La lista de las variables definidas en la sesión se puede obtener con “who”
El espacio de memoria correspondiente de las variables se puede obtener con “whos”
“ans” es el nombre de una variable que tiene el valor del resultado de la última ejecución no asignada a una
variable
“home” y “clc” son dos variantes que permiten limpiar la pantalla de salida y colocar el cursor al inicio de
pantalla
“clear” borra las variables grabadas en la memoria
C. Galindo (Depto. de Computación ITAM)
Laboratorio de Probabilidad I
2
Es posible cambiar ciertas opciones del ambiente desde el menú “file->preferences”. Por ejemplo
“command window->text display->numeric format->rational”
II.-MATLAB permite desplegar información gráfica.
9. Definamos una variable, que tome valores en el rango [0,10], mediante un vector t:
t=(0:100)/10;
t
Una forma equivalente es
s=1:0.1:10
Apliquemos la función seno a cada elemento del vector t y generemos un vector f:
f=sin(t);
Grafiquemos f:
plot(f)
Grafiquemos f contra t:
plot(t,f)
10. Podemos cambiar el color y el símbolo de graficación:
plot(t,f,’r+’)
Podemos incluir títulos en la gráfica o en los ejes, así como cambiar las escalas. Escriba title(‘texto’),
xlabel(‘texto’), ylabel(‘texto’), axis([ xmin xmax ymin ymax]) , axis off.
Ejercicio 1- Grafica el vector f en el eje vertical y el vector t en el horizontal con una línea sólida roja. Escribe
títulos para la gráfica y los ejes, y ajusta la escala de /2 a 5/2 en horizontal y –2 a 2 en vertical.
Ejercicio 2- Soluciona el siguiente sistema de ecuaciones:
3x + 4y - 8z = -1
2x +
13z = 5
x + 12y - z = 12
(Pista: representa el sistema de ecuaciones como un producto de matrices A*X=B, y multiplica ambos lados
de la igualdad por la matriz inversa de A, A-1, para obtener el vector con los valores de las incógnitas)
Resp. -8/15, 13/12,7/15
11. Podemos emplear otros tipos de gráficas:
stem(t,f)
stairs(t,f)
line([1 2], [1 2]);
12. Podemos graficar funciones predefinidas
fplot('tan(x)',[-2*pi 2*pi -2*pi 2*pi],'y*') %tangente
fplot('[tan(x),sin(x),cos(x)]',[-2*pi 2*pi -2*pi 2*pi]) %funciones trigonométricas
C. Galindo (Depto. de Computación ITAM)
Laboratorio de Probabilidad I
3
13. Podemos graficar funciones definidas en forma paramétrica
t = -pi:pi/200:pi;
x=20*sin(t +pi/3);
y=cos(t);
comet(x,y);%Una elipse
t=0:1/50:2*pi;
x=sin(t);
y=cos(t);
comet(x,y);%Un círculo
s = -pi:pi/200:pi;
comet(s,sin(1./s));
III.-MATLAB nos permite simular, experimentos aleatorios, como los resultados de un volado: sol (0), águila (1).
14. Genera un número aleatorio real entre (0,1) con la instrucción “rand”
rand
15. Genera un vector x con 5000 números aleatorios seleccionados del conjunto infinito (0,1):
x=rand(1,5000);
16. Genera un vector con valores {0, 1} con la misma probabilidad de ocurrencia (p=1/2) como los de un volado:
b=(x<0.5);
Ejercicio 2.- Simula 5000 tiradas de una moneda moneda “cargada” con probabilidades 1/7 sol (0) , 6/7 águila (1) y
grafica tus resultados empleando un punto “.” como símbolo
17. Encuentra la frecuencia relativa de “1” , águilas:
fa=sum(b)/5000
Encuentra la frecuencia relativa de “0” , soles:
fs=1-fa
IV.-MATLAB nos permite programar con un lenguaje estructurado con un archivo .m
Encabezado de función
function [salida1,…,salidaN] = nombre(entrada1,…,entradaN)
C. Galindo (Depto. de Computación ITAM)
Laboratorio de Probabilidad I
4
Estructuras de selección
if expression
statements
elseif expression
statements
else
statements
end
switch switch_expr
case case_expr,
statement, ..., statement
case {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
otherwise,
statement, ..., statement
end
Estructuras cíclicas
for variable = expr, statement, ..., statement end
while expression
statements
end
C. Galindo (Depto. de Computación ITAM)
Laboratorio de Probabilidad I
5
Descargar