Tutorial MATLAB
Tutorial MATLAB
carpeta) que MATLAB utiliza para funcionar en la actual sesin. En efeco to, slo se podrn usar los archivos o ejecutar los programas, procedimientos o a y funciones que se encuentran en este directorio o en uno de uso interno de MATLAB que ya se encuentre especicado. Esta ventana tambin permite e ver y trabajar con los archivos que se encuentra en el directorio de trabajo. Observacin 1. El usuario puede incorporar una de sus carpetas como o una carpeta de uso interno de MATLAB, o lo que usualmente se llama incorporar una carpeta al Path de MATLAB. La manera ms fcil de a a hacer esto es mediante el men, siguiendo las opciones: FILE SET PATH. u
type. Nos muestra el contenido de un archivo. copyle. Copia un archivo. Por ejemplo: >> copyfile sesion_1.m sesion__2.m copia el archivo sesion 1.m en el archivo sesion 2.m dentro del directorio actual. delete. Borra un archivo.
>> 1>=2 ans = 0 Los operadores lgicos son denidos como sigue: o & | and (y) or (o) negacin lgica o o
Ejempliquemos su uso. Consideremos la variable a, a la cual le fue asignado anteriormente el valor 2. Se obtiene as que: >> a>0 & ~(a~=2) ans = 1
d) Sentencias lgicas. o
MATLAB nos permite programar rutinas usando sentencias que se ejecutaran si ciertas condiciones son ciertas. Estos comandos funcionan similarmente a cualquier otro lenguaje de programacin y slo su sintaxis es o o levemente distinta. Procederemos a explicar brevemente cada una de ellas. if, elseif, else. Se describe su uso como sigue: if condicion1 rutina1 elseif condicion2 rutina2 %.... elseif condicionN rutinaN else rutina_final end for. Repite un conjunto de sentencias (es decir, una rutina) un nmero preu determinado de veces dada por la primera sentencia. 4
for j=1:n rutina end while. Se ejecuta una rutina mientras la condicin dada en la primera senteno cia sea cierta (es decir tenga valor verdadero). Su sintaxis es la siguiente: while condicion rutina end break. Interrumpe la actual rutina. try...catch...end. Permite gestionar errores que se pueden producir en la ejecucin de un programa. Su sintaxis es: o try rutina1 catch rutina2 end En el caso de que en la primera rutina (rutina1) se produzca un error, MATLAB pasa a ejecutar la segunda rutina (rutina2). Si no se produciera un error en la primera rutina, la segunda rutina no se ejecutar nunca. a
MATLAB espera que el usuario ingrese un texto que identique su nombre, el cual ser guardado en la variable nombre. a display (o disp). Estos comandos nos permiten imprimir en pantalla un mensaje de texto o el valor de una variable. El comando display imprime adems el nombre de la variable mientras que disp no lo hace. Veamos un a ejemplo: >> display(b) b = 4 >> display(Hola) ans = Hola o bien >> disp(b) 4 >> disp(Hola) Hola
%... >> diary on As diary o suspende la ejecucin del comando mientras que diary on o lo reanuda. Se puede acceder al archivo de texto donde se guarda la sesin o solamente cuando diary esta en o.
De esta misma forma se pueden crear funciones con rutinas ms complia cadas o procedimientos que no necesariamente entregan un valor determinado. La mejor manera de evaluar una funcin previamente denida es usando o el comando feval 7
>> feval(f,0) ans = 2 Un procedimiento es creado mediante un archivo .m cuyo nombre ser el del procedimiento o rutina a ejecutar, y que contendr las instruca a ciones y sentencias a seguir.
b) Funciones predenidas.
MATLAB tiene varias funciones matemticas predenidas. Veamos ala gunas de las ms importantes. a sqrt. ra de un nmero real positivo. z u cos, sin, tan. Representan las funciones trignometricas seno, coseno y tano gente. max, min, sum, mean, sort. Estas funciones se aplican a un conjunto de valores que generalmente son guardados como un vector (esto se vera en detalle en la proxima sesin). o El comando max nos entrega el maximo valor, min el m nimo, sum la suma de todos los valores, mean el promedio y sort ordena los valores de menor a mayor. Ejemplo: >> t=[1 23 3 -5 45]; >> sum(t) ans = 67 >> sort(t) ans = -5 >> min(t) ans =
23
45
-5 >> mean(t) ans = 13.4000 oor, round. El primero nos da el nmero entero menor ms cercano al valor u a real al cual se le aplica. Mientras que el segundo aproxima el valor. >> floor(3.6) ans = 3 >> round(3.6) ans = 4 rand. Genera matrices o vectores cuyas componentes son nmeros aleatorios u entre cero y uno.
c) Grco de funciones. a
El grco de una funcin es una herramienta muy importante en el a o anal matemtico. Explicaremos brevemente los comandos que nos persis a miten realizar un grco. a plot. Este comando nos permite gracar un conjunto de datos de la forma (xi , yi ), i = 1, ..., n.. Para esto se debe trabajar con dos vectores, por ejemplo x e y, que contengan la informacin del eje x e y respectivamente. Veamos o como dibujar la funcin seno en el intervalo [-10, 10] . o >> x=-10:0.1:10; y=sin(x); >> plot(x,y); En este caso hemos creado una grilla de puntos equiespaciados entre -10 y 10, con un paso igual a 0.1, usando el comando :. Esto ha sido nalmente guardado en la variable x. 9
Veamos ahora ciertas opciones que nos permiten individualizar nuestro grco. Se puede dar un nombre a los ejes x e y usando los comandos a >>xlabel(eje x); ylabel(eje y); El tipo de l nea se determina con Tipo de l nea continua (por defecto) guiones punteada guiones y puntos Tipo de marca punto ms a estrella c rculo marca x S mbolo -: -.
Se pueden usar marcas especiales en vez de l neas mediante los cdigos S mbolo . + * o x
Podemos tambin especicar el color del trazado usando los siguientes e cdigos: Color rojo amarillo azul magenta verde blanco negro turquesa S mbolo r y b m g w k c
Por ejemplo, reproduciremos nuevamente el grco anterior con una mara ca de c rculo de color azul. >> plot(x,y,ob); Para dibujar varias funciones al mismo tiempo se debe utilizar una matriz de valores. Este tpico ser estudiado en la proxima clase. Veamos un o a ejemplo: >> A= [sin(x); cos(x)]; >> plot(x,A); 10
Observacin 3. Cuando se calculan los valores, ya sea y o la matriz o A en los ejemplos anteriores, se deben reemplazar las operaciones usuales multiplicacin * divisin / y elevado por las versiones punto o o o componente a componente de estas operaciones .* ./ . . Esto evita errores en el manejo de las dimensiones. Esto ser explicado en profundidad a en la proxima seccin. o fplot. Este comando graca directamente una funcin sin pasar por un grilo laje. Su sintaxis es la siguiente: >> fplot(nombre_funcion,[xmin xmax],opciones); Los valores xmin y xmax nos dan los valores m nimos y mximos del eje x, las opciones de grcos son las mismas que las del comando plot. a subplot. Permite hacer varios grcos al mismo tiempo haciendo divisiones a de la pantalla original. Por ejemplo >> >> >> >> subplot(2,2,1), subplot(2,2,2), subplot(2,2,3); subplot(2,2,4); plot(x,y); plot(x,A); fplot(sin,[-10 10],+g); fplot(f,[-1 1],:k);
divide la pantalla grca en cuatro partes dibujando en cada uno de los a segmentos las funciones correspondientes.
d) Denicin de polinomios. o
La manera ms simple de denir polinomios es a travs de un conjunto de a e valores reales que determinaran los coecientes del polinomio, por ejemplo, los valores del vector t denido anteriormente nos entregan el polinomio t(x) = x4 + 23x3 + 3x2 5x + 45.
11
>> polyval(t,0) ans = 45 roots. Nos entrega las ra ces del polinomio correspondiente. >> roots(t) ans = -22.8554 -1.3873 0.6214 + 1.0164i 0.6214 - 1.0164i polyder. Calcula la derivada de un polinomio. El resultado es un vector donde las componentes son los coecientes del polinomio derivado. >> polyder(t) ans = 4 69 6 -5
Note que el resultado tiene una dimensin menor que el polinomio original. o conv, deconv. Nos entrega la multiplicacin y la divisin usual de polinomios. o o En el caso de la divisin tambin nos entrega el polinomio residuo. Revisemos o e rpidamente su sintaxis. >> q=conv(p,t); >> [q,r]=deconv(p,t); Ejercicio 2. Calcular el producto entre los polinomios t, denido anteriormente, y el polinomio p(x) = 1 x2 + 5x3 + 13x4 6x5 . Ejercicio 3. Calcular el polinomio residuo de la divisin del polinomio p o por el polinomio t. 12
Los vectores se consideran como casos part culares de matrices donde una de las dimensiones es igual a 1. Existen comandos que tambin permiten denir matrices, por ejemplo e el operador traspuesto denido por la comilla simple . >> A ans = 1 2 3
4 5 6
Los comandos zeros y ones permiten crear matrices de una dimensin asignada por el usuario cuyos elementos son slo ceros y unos, respeco o tivamente. Por ejemplo: >> zeros(1,3) ans = 0 0 0
>> ones(3,2)
13
ans = 1 1 1 1 1 1
El comando diag tiene dos funciones en dependencia si se aplica a un vector o a una matriz. Si se aplica a un vector, este comando nos entrega una matriz diagonal, donde los elementos de la diagonal son las componentes del vector. >> x=[1 3 4]; diag(x) ans = 1 0 0 0 3 0 0 0 4
Si se aplica a una matriz, este comando extrae la diagonal de la matriz y nos da como respuesta un vector columna cuyas componentes son los elementos de esta diagonal. >> diag(A) ans = 1 5 Una manera muy util para denir y crear matrices es el concatenar diferentes submatrices. De esta forma se crea una matriz de un tamao n mayor cuyos bloques corresponden a los valores concatenados. Por ejemplo: >> B=[A ; x] B = 1 4 1 2 5 3 3 6 4 14
crea una nueva matriz B donde sus dos primeras las corresponden a la matriz A, y su tercera la es el vector x. Ejercicio 4. Crear directamente la matriz utilizada en el clculo de la spline a cbica asociada a una malla de 51 puntos equiespaciados donde la distancia u entre los puntos es igual a 1. Esta matriz viene dada por 2 1 1 4 1 .. . . .. . 1 4 1 1 2 Los espacios vac son considerados con el valor 0 y el tamao de la matriz os n es 50. n o Ejercicio 5. Recordando el comando rand enseado en la sesin anterior, crear una matriz de 7 las y 9 columnas cuyas componentes sean enteros entre -5 y 10. Para ver o utilizar en algn clculo el elemento (i, j) de la matriz A u a se debe usar la sintaxis: >> A(i,j)
As tambin podemos ver o utilizar una la o columna completa de una e matriz con el comando :. Veamos un ejemplo de su uso. >> A(1,:) ans = 1 2 3
muestra la primera la de la matriz A. Similarmente, A(:,j) muestra la columna j de la matriz A. Otra aplicacin interesante del comando : nos permite mostrar solo o una parte de cierta la o columna. Ejempliquemos su uso. >> A(:,1:2)
15
ans = 1 4 2 5
muestra las dos primeras columnas de la matriz A. Tambin podemos ver e o utilizar la primera y tercera columna de A de la siguiente forma >> A(:, [1 3]) ans = 1 4 3 6
Finalmente veremos el uso de la variable indicadora end que hace referencia a la ultima la o columna de una matriz. Por ejemplo, >> A(end,:) ans = 4 5 6
-3
16
0.3333
256.0000
-3.0000
1.0000
inv. Calcula la inversa de una matriz cuadrada no singular. norm. Calcula la norma (inducida) a una matriz. Existe un segundo parmetro a que nos permite especicar la norma utilizada. Por defecto se usa la norma 2, es decir, la norma inducida euclidiana. >> norm(A) ans = 9.5080 17
>> norm(A,inf) ans = 15 cond. Calcula el condicionamiento de una matriz. pinv. Calcula la pseudo-inversa de una matriz. La pseudo-inversa existe para cualquier matriz, incluso una que no sea cuadrada. >> pinv(A) ans = -0.9444 -0.1111 0.7222 0.4444 0.1111 -0.2222
rank. Calcula el rango de una matriz. Esto es la cantidad de las o columnas linealmente independientes. >> rank(A) ans = 2
>> C=A*A; >> [Q,D]=eig(C) Q = -0.4082 0.8165 -0.4082 -0.8060 -0.1124 0.5812 0.4287 0.5663 0.7039
Nos da como resultado una matriz ortogonal Q cuyas columnas son los vectores propios de la matriz C y una matriz diagonal D con los valores propios de C. poly. Devuelve un vector con los coecientes del polinomio caracter stico de una matriz cuadrada. lu. Calcula la descomposicin LU de una matriz. Veamos un ejemplo de su o uso. >> [L,U]=lu(C) L = 0.6296 0.8148 1.0000 1.0000 0.5000 0 0 1.0000 0
19