Академический Документы
Профессиональный Документы
Культура Документы
Avanzados
Programacin o
Introduccin a Matlab o
Pgina de Abertura a
Este documento fue escrito por profesores del Departamento de Matemticas de la Universidad de Antioquia y generado a partir de un a A A archivo LTEX compilado con pdfLTEX, utilizando el paquete pdfscreen.sty .
Pgina 1 de 75 a
Copyleft c 2006. Departamento de Matemticas, Universidad de Antioquia. a Este documento puede ser distribuido y/o modicado bajo los trminos de la e Licencia de Documentacin Libre GNU, Versin 1.2 o cualquier otra versin o o o posterior publicada por la Free Software Foundation. Documentacin completa o de la licencia es incluida en GNU Free Documentation License.
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 2 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
1.
1.1.
Introduccin o
El nombre
Introduccin o Variables y Formatos
Matlab, acrnimo en ingls de Matrix laboratory, es un sistema inteo e ractivo de programacin para realizar clculos numricos con vectores y o a e matrices. Como su nombre lo sugiere, Matlab est diseado para la a n resolucin de problemas que pueden ser enunciados en trminos de matrices, o e como lo son la solucin numrica de sistemas de ecuaciones lineales, el o e clculo de autovalores y autovectores, la factorizacin de matrices, etc. a o Matlab incorpora un sencillo y eciente lenguaje de programacin o que, junto con sus capacidades grcas, hacen de l una herramienta muy a e util para el desarrollo de experimentos numricos. Muchos de estos pro e gramas vienen con el sistema, son funciones internas (built-in functions) diseadas para resolver problemas generales y otros conforman librer n as especializadas (toolboxes) para resolver problemas ms concretos. a Una ventaja de Matlab es la sencillez de su lenguaje de programacin: o muchos programas que resultan dif ciles de implementar en lenguajes como C, Fortran, etc, se implementan con relativa facilidad en Matlab. Por supuesto, un programa en C resulta ser generalmente mucho ms eciente a que en Matlab. Una desventaja de Matlab es su alto valor comercial: Matlab R es una marca registrada de The MathWorks, Inc. y por ejemplo el costo de una licencia comercial de Matlab 7.1 Service Pack 3 (sin ningn toolbox ) oscila en torno de los US$2000. u
Avanzados
Programacin o
Pgina de Abertura a
Pgina 3 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
1.2.
El usuario puede iniciar Matlab haciendo doble clic sobre el cono de Matlab o invocando la aplicacin desde el men de Inicio de Windows. Al o u ejecutarse Matlab, deber aparecer una ventana como la que se muestra a a continuacin. o
Avanzados
Programacin o
Pgina de Abertura a
Pgina 4 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Partes a destacar del entorno de trabajo de Matlab: 1. Ventana de Comandos o Consola (Command Windows) Es la ventana principal por medio de la cual el usuario se comunica con Matlab. El prompt (>>) indica que matlab est listo para a recibir comandos, desde realizar operaciones bsicas entre nmeros a u (ver seccin 2, Variables y Formatos) hasta invocar programas que o el propio usuario realice (ver seccin 6, Programacin). o o
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 5 de 75 a
Regresar
2. Directorio Actual de Trabajo (Current Directory) El directorio actual de trabajo es una ruta que Matlab utiliza como punto de referencia. Cualquier archivo de Matlab que el usuario
Pantalla Completa
Cerrar
Abandonar
desee ejecutar debe estar ubicado en el directorio de trabajo excepto en la situacin descrita en 3. Una manera rpida de ver o cambiar el o a directorio de trabajo es por medio del campo mostrado en la gura.
Avanzados
Programacin o
Por defecto, el directorio de trabajo es C:\MATLAB7\work donde el 7 hace referencia a la versin de Matlab. En este ejemplo, los archivos o del Current Directory aparecen listados en la gura.
Pgina de Abertura a
Pgina 6 de 75 a
Regresar
Tres de ellos son archivos de Matlab (M-les), archivos con extensin .m y pueden ser invocados desde la linea de comandos. o
Pantalla Completa
Cerrar
Abandonar
3. Camino de bsqueda (Search Path) u El Search Path es una lista de directorios que Matlab utiliza para buscar archivos relacionados con Matlab (M-les entre ellos). Si un archivo de Matlab no se encuentra en el directorio actual, pero el directorio donde se encuentra ubicado el archivo hace parte del Search Path, entonces el usuario puede ejecutarlo sin problemas desde consola. Finalmente, escriba el comando demo en la ventana de comandos y oprima la tecla enter:
>> demo
Pgina de Abertura a
Avanzados
Programacin o
Deber aparecer una ventana con ejemplos de las funcionalidades de a Matlab. La columna de la izquierda contiene un men con varias deu mostraciones. Elija alguna de las opciones y haga clic donde crea necesario.
Pgina 7 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
2.
2.1.
Variables y Formatos
Operadores Aritmticos e
Introduccin o Variables y Formatos
El primer uso bsico que le podemos dar a la ventana de comandos de a Matlab es el de una calculadora, ingresamos los valores a operar y oprimimos la tecla enter:
>> 3+4 ans = 7
Avanzados
Programacin o
Las operaciones aritmticas son realizadas en el siguiente orden de prie oridad: potenciacin (), divisin (/), producto (), y suma (+) y resta o o (). As por ejemplo
>> 5/10*2+5 ans = 6
Pgina de Abertura a
Pgina 8 de 75 a
Regresar
mientras que
Pantalla Completa
Cerrar
Abandonar
Adicional a la operacin de divisn (/), existe en Matlab una opeo o racin de divisin por izquierda (\), como muestra el siguiente ejemplo. o o
>> 4\3 ans = 0.7500
Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Observemos que los resultados de los clculos son almacenados por dea fecto en la variable ans (del ingls, answer ). Si queremos ver el contenido e de la variable, escribimos ans en la linea de comandos y oprimimos enter:
>> ans ans = 0.7500
Pgina 9 de 75 a
Regresar
Pantalla Completa
Como consecuencia de esta ultima operacin, el contenido de la variable o ans es modicado nuevamente.
Grcos a
Clculos a
Avanzados
Programacin o
2.2.
Operadores de Comparacin o
Existen en Matlab seis operadores de comparacin: igual a (==), difeo rente de (=), menor que (<), mayor que (>), menor o igua a (<=) y mayor o igual a (>=). Por ejemplo
>> 1 == 2 ans = 0
Pgina de Abertura a
Pgina 10 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
produce como resultado ans = 1 (verdadero). Observemos que al igual que con los operadores aritmticos, para los operadores de relacin el orden e o importa:
>> 1>2==2<3 ans = 1
Avanzados
Programacin o
Pgina de Abertura a
produce 0 (falso).
Pgina 11 de 75 a
2.3.
Operadores Lgicos o
Regresar Pantalla Completa
Los operadores lgicos son el Y (&), el O ( | ) y la negacin (). Matlab o o le da prioridad primero a , luego a & y nalmente a |. Asi por ejemplo
Cerrar
Abandonar
Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
da falso. Otra operacin lgica es el O excluyente (xor). La tabla de o o verdad para todos estos operadores es mostrada a continuacn o A 0 0 1 1 B 0 1 0 1 A&B 0 0 0 1 A|B 0 1 1 1 A 1 1 0 0 xor(A, B) 0 1 1 0
Pgina 12 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
2.4.
Formato de Variables
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Adems de ans, existen otro tipo de variables en Matlab cuyo contenido a se encuentra pre determinado. Por ejemplo la variable pi almacena el valor 3.14159 . . .
>> pi ans = 3.1416
Clculos a
Avanzados
Programacin o
1.
Pgina de Abertura a
En el caso de variables numricas, Matlab presenta por defecto los e contenidos de las variables aproximados a 4 cifras decimales. El usuario puede modicar el formato con el que se presentan los contenidos de tales variables con el comando format, como se muestra en el siguiente ejemplo, sin olvidar que esto no modica los contenidos de las variables ni la manera como Matlab ejecuta internamente los computos.
Pgina 13 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Otros tipos de formatos se presentan en la siguiente tabla. Tipo short long short e long e short g long g short eng long eng Formato punto jo, 5 d gitos punto jo, 15 d gitos punto otante, 5 d gitos punto otante, 15 d gitos punto jo o otante, 5 d gitos punto jo o otante, 15 d gitos 5 d gitos, potencias mltiplos de 3 u 16 d gitos, potencias mltiplos de 3 u Ejemplo 3.1416 3.14159265358979 3.1416e+000 3.141592653589793e+000 3.1416 3.14159265358979 3.1416e+000 3.14159265358979e+000
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 14 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
2.5.
Denicin de Variables o
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
El usuario puede denir su propias variables. Mientras que el operador == nos permite determinar cuando el contenido de dos variables es el mismo, como se mostr en la seccin Operadores de Comparacin, el operador = o o o nos permite asignarle un valor a una variable: lo que se encuentre al lado derecho del igual es asignado a lo que se encuentre al lado izquierdo del igual. Por ejemplo
>> a = 2 a = 2
Avanzados
Programacin o
Pgina de Abertura a
asigna a la variable x el valor de 6. El punto y coma (;) al nal de la denicin de x previene que Matlab muestre el contenido de la variable. o Si queremos ver su contenido
Regresar
Pantalla Completa
Cerrar
Abandonar
>> x x = 6
Grcos a
Clculos a
Avanzados
Programacin o
Cmo recuperar pi? El comando clear borra el contenido de una o variable, en este caso la asignacin que hicimos: o
>> clear pi >> pi ans = 3.1416
Pgina de Abertura a
Pgina 16 de 75 a
Regresar
Si estamos interesados en borrar todas las variables que hemos denido, entonces debemos usar el comando clear all. Otro comando de gran utilidad es who, el cual lista todas las variables que hemos denido:
Pantalla Completa
Cerrar
Abandonar
Grcos a
Clculos a
Avanzados
Programacin o
Bytes 8 8
Pgina de Abertura a
La utilidad de varios comandos se puede inferir fcilemente a partir de a su nombre como es el caso de clear o who; para otros comandos, como pwd, cuya utilidad quiz no es inmediatamente, el comando help nos puede ser a de gran ayuda. Por ejemplo
Pgina 17 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
>> help pwd PWD Show (print) current working directory. PWD displays the current working directory. S = PWD returns the current directory in the string S. See also cd. Reference page in Help browser doc pwd
Avanzados
Programacin o
nos da informacin del comando en cuestin: pwd (del ingls, present o o e working directory) nos muestra el directorio actual de trabajo. Para acceder a un listado de comandos de carcter general a
>> help general
Pgina de Abertura a
Pgina 18 de 75 a
2.6.
Funciones Elementales
Regresar
Adems de las cuatro operaciones aritmticas bsicas y de de los comana e a dos ya vistos, Matlab incorpora una serie de funciones internas (built-in
Pantalla Completa
Cerrar
Abandonar
functions) como lo son las funciones matemticas bsicas seno, coseno, a a tangente, exponecial y logar tmo entre otras. As por ejemplo, para la funcin coseno , o
>> cos(pi) ans = -1
Avanzados
Programacin o
Pgina de Abertura a
Regresar
Pantalla Completa
Cerrar
Abandonar
Si deseamos informacin de alguna funcin interna de Matlab, por o o ejemplo seno, utilizamos el comando help:
>> help sin SIN Sine. SIN(X) is the sine of the elements of X. See also asin, sind. Overloaded functions or methods (...) help sym/sin.m Reference page in Help browser doc sin
Avanzados
Programacin o
Pgina de Abertura a
Para acceder a un listado con informacin detallada de las funciones o elementales (elementary functions) implementadas en Matlab
>> help elfun
Pgina 20 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
2.7.
Ejercicios
Introduccin o Variables y Formatos
Avanzados
Programacin o
Pgina de Abertura a
Pgina 21 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
3.
3.1.
Vectores y Matrices
Edicin de Vectores o
Introduccin o Variables y Formatos
Avanzados
Programacin o
>> y = [3;6;9;1] y = 3 6 9 1
% vector columna
Pgina de Abertura a
Pgina 22 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
>> w = [13 45 32 1] y = 13 45 32 1
Avanzados
Programacin o
Pgina de Abertura a
11
13
15
17
Esta intruccin genera un vector de componentes del 1 al 18 por increo mento de a 2 mientras que
Pgina 23 de 75 a
>> zz = 35:-1:1;
Regresar
Pantalla Completa
Cerrar
Abandonar
Clculos a
Avanzados
Programacin o
1.5000
1.7500
2.0000
Pgina de Abertura a
3.2.
Existen instrucciones que permiten generar vectores especiales y que realizan tareas sobre los vectores, entre ellos tenemos:
Pgina 24 de 75 a
>> b = ones(1,4) v = 1 1 1
Regresar
Pantalla Completa
Cerrar
Abandonar
>> a = ones(4,1) a = 1 1 1 1
Avanzados
Programacin o
que genera un vector columna de unos de 4 componentes. Si queremos generar vectores de ceros en lugar de unos:
>> c = zeros(1,5) c = 0 0 0
Pgina de Abertura a
0
Pgina 25 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 26 de 75 a
Pantalla Completa
Cerrar
Abandonar
Si queremos extraer simplemente una entrada o varias entradas de un vector empleamos las siguientes instrucciones
>> d(3) ans = 0.4860
Avanzados
Programacin o
Pgina de Abertura a
3.3.
Para realizar las operaciones con vectores es necesario que ellos tengan el mismo numero de elementos, consideremos los vectores:
>> x=[4 6 3 3]; y=[2 6 -2 -3];
Pgina 27 de 75 a
Regresar
Pantalla Completa
Abandonar
Introduccin o
12
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
18
Para multiplicarlos componente a componente, es decir x(i) y(i), empleamos las operaciones punto, esto es:
Pgina 28 de 75 a
Regresar
36
-6
-9
Pantalla Completa
Cerrar
Abandonar
Introduccin o
1.0000
-1.5000
-1.0000
Clculos a
Avanzados
Programacin o
36
Si queremos multiplicar directamente se produce un error ya que la multiplicacin (como matrices) no est denida o a
>> x*y ??? Error using == mtimes Inner matrix dimensions must agree.
Pgina de Abertura a
mientras que
>> x*y ans = 29
Pgina 29 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
3.4.
Edicin de Matrices o
Introduccin o Variables y Formatos
Avanzados
Programacin o
Si tenemos el vector
>> h=[2 3 4];
Pgina de Abertura a
Pgina 30 de 75 a
3 -1 -3 4
Regresar
Pantalla Completa
Cerrar
Abandonar
3.5.
Tambin existen instrucciones en Matlab que construyen matrices simie lares a las de los vectores:
>> C=ones(2) C = 1 1 1 1 % genera una matriz 2x2 de unos
Grcos a
Clculos a
Avanzados
Programacin o
>> D=zeros(2,3) C = 0 0 0 0
Pgina de Abertura a
>> E=rand(3,2) % genera una matriz 3x2 aleatoria E = 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621
Pgina 31 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
>> F=eye(3) F = 1 0 0 1 0 0
0 0 1
Avanzados
Programacin o
>> diag(F) F = 1 1 1
Pgina de Abertura a
>> diag([1 F = 1 0 0
2 3]) 0 2 0 0 0 3
Regresar
Pantalla Completa
Si tenemos la matriz
Cerrar
Abandonar
Avanzados
Programacin o
>> tril(G) G = 2 0 -2 6 5 7
Pgina de Abertura a
>> triu(G) G = 2 -5 0 6 0 0
Regresar
Pantalla Completa
Abandonar
>> H=G H = 2 -5 8
% obtiene la transpuesta de G -2 6 -7 5 7 -6
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 34 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
En general, la sintaxis para extraer componentes, las y columnas son: A(i,j) = extrae la componente de la la i columna j de la matriz A A(i,:) = extrae la la i de la matriz A A(:,j) = extrae la columna j de la matriz A
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
3.6.
Programacin o
Siempre que est denida la operacin podemos sumar, restar, multiplicar e o matrices, resolver sistemas de ecuaciones Ax = b, etc.
>> A=[1 3 4; 6 8 -2]; B=[2 -1 -3;-5 -2 -4]; F=[2 3;5 -1];
Pgina de Abertura a
>> C=A+B C = 3 1
2 6
1 -6
Pgina 35 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
>> D=A-B D = -1 11
Introduccin o
4 10
7 2
Avanzados
Programacin o
Pgina de Abertura a
9 64
16 4
Pgina 36 de 75 a
Regresar
-3 -16
-12 8
Pantalla Completa
Cerrar
Abandonar
% obtiene el determinante de F
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
17 : 34
Pgina de Abertura a
Pgina 37 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
4.
Grcos a
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Cada vez que Matlab realiza un grco se abre una nueva ventana llamada a Figure 1, para activarla y ver los resultados es necesario dar clic sobre ella ya que esta se minimiza al volver a la ventana del Command Windows. Si queremos tener mas de una ventana de gracos abierta es necesario emplear la instrucc figure. on
Avanzados
Programacin o
4.1.
Graca Simple
Una primer forma de gracar en Matlab es tomando un conjunto de pares ordenados (xi , yi ) y representarlos empleando el comando plot, para ello es necesario crear dos vectores x y y de igual longitud. Por ejemplo graquemos y = exp (x) sen (2x) , para 0 x 10. Las instrucciones en Matlab son
>> x=0:0.1:10; >> y=sin(x).*exp(x/10); >> plot(x,y)
Pgina de Abertura a
Pgina 38 de 75 a
Regresar
Pantalla Completa
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 39 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
En forma similar podemos representar mas de una grca dentro del a mismo plano coordenado.
Pgina 40 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
4.2.
>> >> >> >>
Etiquetas y T tulo
plot(x,y,x,z) xlabel(x) % coloca una etiqueta al eje x ylabel(y) % coloca una etiqueta al eje y title(Ejemplos iniciales) % coloca titulo al grfico a
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 41 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Si queremos colocar t tulos sobre cada curva empleamos la instruccin o text. La sintaxis es text(x,y,texto). Para las curvas anteriores
>> plot(x,y,x,z) >> text(8,2.3,exp(x)sin(2x)) >> text(8,-2.8,cos(x)exp(x/10))
Avanzados
Programacin o
Pgina de Abertura a
Pgina 42 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
4.3.
Estilos y Colores
Introduccin o Variables y Formatos Vectores y Matrices
Para especicar los colores y los estilos de l` nea damos un argumento adicional al plot. A continuacin gracamos y en rojo y z con signo +. o
>> plot(x,y,r,x,z,+)
Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 43 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Los argumentos opcionales adicionales al plot despus de cada pareja e de vectores son: Simbolo y m c r g b w k Color amarillo magenta cien rojo verde azul blanco negro Simbolo . o x + * : -. -Estilo de l nea punto c rculo marca x ms a estrella l nea slida o l nea punteada l nea punto raya l nea de trazos
Avanzados
Programacin o
Pgina de Abertura a
Tenga en cuenta que puede utilizar al mismo tiempo s mbolo y color, es decir
Pgina 44 de 75 a
>> plot(x,z,m*)
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Si queremos aproximar ceros de una funcin es necesario tener una o cuadricula que nos lo permita, para ello se emplea la instruccin grid on o despues del plot as
Pgina 45 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
y si queremos especicar un rango para los ejes para la bsqueda de ceros u empleamos la instruccin axis([xmin,xmax,ymin,ymax]). o Para tener mas opciones para los ejes tenemos la ayuda en linea
Pgina 46 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
4.4.
Manipulacin de Grcos o a
Introduccin o Variables y Formatos Vectores y Matrices
Para incluir ms de una grca en una ventana sin tener que listar todos a a los vectores en una misma l nea empleamos hold on:
>> >> >> >> >> >> x=-2:0.1:2; y=sin(x); z=cos(x).*exp(x); plot(x,y,r*) hold on plot(x,z,c+) hold off figure % activa una nueva ventana de grafico
Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 47 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
La instruccin subplot(m,n, p) subdivide la ventana de la gura aco tual en una matriz m n planos coordenados activando el p esimo plano. Las subgracas se numeran de izquierda a derecha por medio de las las. a Consideremos el siguiente ejemplo:
>> >> >> >> >> >> >> >> >> >> >> x=linspace(0,2*pi,100); y=sin(2*x); z=cos(3*x); w=sin(x).*cos(x); subplot(2,2,1) % selecciona la subgrafica plot(x,y); title(sin(2x)) subplot(2,2,2) % selecciona la subgrafica plot(x,z); title(cos(3x)) subplot(2,2,3) % selecciona la subgrafica plot(x,w); title(sin(x)cos(x)) subplot(2,2,4) % selecciona la subgrafica plot(x,q); title(tan(x)) figure % activa una nueva ventana de
Clculos a
Avanzados
Programacin o
inferior izquierda
Pgina de Abertura a
El resultado obtenido es
Pgina 48 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
La instruccin fplot permite gracar funciones en forma simblica, es o o decir, sin necesidad de crear las parejas de puntos.
>> fplot(sin(x)/x,[-10 10])
Pgina 49 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Tambin es posible dar un rango en y, es decir, emplear la instruccin e o fplot(fun,[xmin xmax ymin ymax]).
4.5.
Grcos 3D a
Pgina 50 de 75 a
Matlab proporciona una variedade de funciones para visualizar datos 3D. Empleamos la instruccin plot3(x,y,z) donde x, y y z son vectores. o
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 51 de 75 a
Regresar
El primer paso para generar una grca de malla de una funcin z = a o f (x, y), es generar matrices X y Y formadas respectivamente por las
Pantalla Completa
Cerrar
Abandonar
y columnas repetidas, en algn rango de las variables x y y. Con la inu struccin [X,Y]=meshgrid(x,y) se crean X y Y matrices que representan o una rejilla ractangular de puntos en el plano xy. Para generar las imagenes empleamos X y Y con z = f (X, Y ) y nalmente empleamos la instruccin o mesh(X,Y,z)
>> >> >> >> x=-2:0.1:2; y=x; [X,Y]=meshgrid(x,y); z=sqrt(4-X.^2-Y.^2); mesh(X,Y,z)
Avanzados
Programacin o
Pgina de Abertura a
Pgina 52 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 53 de 75 a
Una graca de supercie se obtiene por medio de la instruccin surf o que tienen los mismos argumentos de mesh
Regresar
Pantalla Completa
Cerrar
Abandonar
>> surf(X,Y,z)
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 54 de 75 a
Regresar
>> surf(X,Y,w)
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
Pgina 55 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
5.
Clculos Avanzados a
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 56 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
6.
6.1.
Programacin o
La idea detrs . . . a
Introduccin o Variables y Formatos
Un programa en Matlab es bsicamente un archivo plano sin formato a (archivo ASCII) con extensin (.m) que contiene una serie de comandos de o Matlab. Existen dos clases de programas en Matlab: archivos de comandos (scripts) y funciones (functions). Estos archivos se pueden generar y editar con cualquier editor de textos. Nosotros utilizaremos el editor de textos que viene por defecto en Matlab y que puede ser invocado con el comando edit desde la consola
>> edit
Avanzados
Programacin o
Pgina de Abertura a
o haciendo doble clic sobre el cono de la hoja en blanco que aparece debajo de File, en la ventana principal de Matlab.
Pgina 57 de 75 a
Regresar
Deber entonces emerger una ventana como la que se muestra a cona tinuacin. o
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Pgina de Abertura a
6.2.
Un script es un archivo con extensin (.m) que contiene comandos de o Matlab. El usuario puede invocar el programa desde la linea de comandos, escribiendo el nombre del programa sin la extensin (.m) y oprio miendo la tecla enter. Al ser invocado, Matlab ejecutar los comandos a contenidos en el archivo en el orden en que aparecen.
Pantalla Completa
Cerrar
Abandonar
Como un primer ejemplo, y para seguir la tradicin, consideremos el o programa Hola Mundo cuyo cdigo aparece a continuacin o o
close all; clear all; clc; disp(hola mundo); % cierra todas las ventanas % borra todas las variables % limpia la pantalla % muestra el mensaje
Avanzados
Programacin o
Copiemos el cdigo en el editor de Matlab y salvemos el archivo como, o por ejemplo, holamundo.m. El script lo ejecutamos desde la ventana de comandos
>> holamundo
Pgina de Abertura a
El resultado es
hola mundo >>
Pgina 59 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
x = 3; y = -5; if (x>y) M=x; % si x es mayor que y, a M se le asigna x else M=y; % en caso contrario, a M se le asigna y end disp(el maximo es) disp(M)
Avanzados
Programacin o
Pgina de Abertura a
Este programa calcula el mayor nmero entre 3 y 5. Salvemos lo como u maximo.m y ejecutemos lo desde la ventana de comandos.
>> maximo el maximo es 3
Pgina 60 de 75 a
Regresar
Observemos que despus de su ejecucin, los valores de las variables x, e o y y M se conservan. Por ejemplo
Pantalla Completa
Cerrar
Abandonar
>> x x = 3
6.3.
Funciones
Clculos a
Avanzados
Las funciones son como scripts un poco ms complejos: aceptan argumena tos (como las funciones matemticas) y son compiladas la primera vez que a son utilizadas en una sesin dada. o Como ejemplo inicial, consideremos el siguiente cdigo que convierte el o script maximo.m en una funcin. o
% Funcion que calcula el maximo entre dos numeros function M=mayor(x,y) if (x>y) M=x; % si x es mayor que y, a M se le asigna x else M=y; % en caso contrario, a M se le asigna y end
Programacin o
Pgina de Abertura a
Pgina 61 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
A diferencia de los scripts, la primera linea del cdigo (que no es o comentario) de una funcin empieza con la palabra function. En este o caso, la funcin denida es llamada mayor y es recomendable que salvemos o el archivo con el nombre de la funcin, i.e., mayor.m. o
>> mayor(17,43) ans = 43
Avanzados
Programacin o
Observemos que despus de su ejecucin, los valores de las variables x, e o y y M no se conservan, son variables locales. Por ejemplo
>> y ??? Undefined function or variable y.
Pgina de Abertura a
>> mayor ??? Input argument "x" is undefined. Error in == mayor at 4 if (x>y)
Regresar
Pantalla Completa
Cerrar
Abandonar
Matlab muestra que el error aparece en la linea 4 del programa donde aparece la instruccin if (x>y). o Observemos que la primera linea del programa es un comentario y nos dice el propsito de la funcin. El usuario puede acceder a dicha inforo o macin desde la consola: o
>> help mayor Funcion que calcula el maximo entre dos numeros
Avanzados
Programacin o
Finalmente recordemos que la primera linea (que no es un comentario) de una funcin debe ser de la forma o function [salida] = nombre de la funcin(entrada) o donde [salida]: son los valores de salida de la funcin, puede ser slo uno o o (en cuyo caso los corchetes no son necesarios) como en el ejemplo ya visto o pueden ser varios como en el caso de funciones vectoriales. nombre de la funcin: es el nombre de la funcin que el usuario o o elija, por ejemplo mayor en el ejemplo anterior. entrada: son los argumentos de entrada de la funcin, puede ser uno o o varios como en el ejemplo de la funcin mayor. o
Pgina de Abertura a
Pgina 63 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
6.4.
Condicionales
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Matlab incorpora las estructuras de control bsicas (condicionales y bua cles) que un lenguaje de programacin requiere con el n de controlar el o ujo de ejecucin de las instrucciones de un programa. Las sentencias o condicionales permiten realizar una operacin segn se cumpla o no una o u determinada condicin. o El cdigo de la funcin mayor utiliza la sentencia condiconal if-elseo o if. Su sintaxis general es de la forma
if condicion_1 bloque_1 elseif condicion_2 bloque_2 . . . else bloque_final end
Avanzados
Programacin o
Pgina de Abertura a
Pgina 64 de 75 a
Regresar
Si la condicin 1 es verdadera, se ejecuta el bloque de sentencias 1, de o lo contrario, se ejecuta el bloque de sentencias 2, etc. Por ejemplo
Pantalla Completa
Cerrar
Abandonar
>> t = rand(1); >> if t > 0.75 s = 0; elseif t < 0.25 s = 1; else s = 1 - 2*(t-0.25); end
Avanzados
Programacin o
Cul es el valor de t y s? La funcin signo dada a continuacin ilustra a o o tambin el uso del condicional if-else-if. e
function sgn = signo(x) if x > 0 sgn = 1; elseif x < 0 sgn = -1; else sgn = 0; end
Pgina de Abertura a
Pgina 65 de 75 a
Regresar
Pantalla Completa
As por ejemplo
Cerrar
Abandonar
Otra sentencia condicional con la que cuenta Matlab es el switch. Su sintaxis general es de la forma
switch expresion case valor_1 bloque_1 case valor_1 bloque_2 . . . otherwise bloque_final end
Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 66 de 75 a
Regresar
Si el valor de expresion es igual a valor 1 entonces bloque 1 es ejecutado, si es igual a valor 2 entonces bloque 2 es ejecutado y si el valor
Pantalla Completa
Cerrar
Abandonar
de ningn valor i coincide con expresion entonces bloque final es ejeu cutado. A continuacin un ejemplo. o
function y = trig(func,x) switch func case sin y = sin(x); case cos y = cos(x); case tan y = tan(x); otherwise error(Funcion no definida) sgn = 0; end
Avanzados
Programacin o
Pgina de Abertura a
Pgina 67 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
6.5.
Bucles
Introduccin o Variables y Formatos Vectores y Matrices
Los bucles (while y for) permiten repetir las mismas operaciones sobre distintos datos. La sintaxis general del while es la siguiente
while condicion bloque end
Grcos a
Clculos a
Avanzados
Programacin o
Si condicion es verdadera, bloque es ejecutado. Despus de su ejee cucin, condicion es evaluada de nuevo. Si es verdadera, bloque es ejecuo tado nuevamente y as sucesivamente hasta que condicion sea falsa. El siguiente cdigo calcula el nmero de aos requeridos para que un o u n capital de U$1000 se incremente a U$10000 al 6% anual de inters. e
>> p = 1000; annos = 0; >> while p < 10000 annos = annos + 1; p = p*(1 + 0.06); end >> annos annos = 40
Pgina de Abertura a
Pgina 68 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
Avanzados
Programacin o
Por ejemplo para calcular el valor de cos x con x variando desde cero hasta /2 en incrementos de /10 podemos utilizar
>> for n = 0:5 y(n+1) = cos(n*pi/10); end >> y y = 1.0000 0.9511 0.8090
Pgina de Abertura a
0.5878
0.3090
0.0000
Pgina 69 de 75 a
Los bucles deber ser evitados siempre que sea posible y sustituian dos por expresiones vectorizada que resultan ser mucho ms rpidas. Una a a solucin vectorizada del problema anterior es dada por el cdigo presentado o o a continuacin. o
Regresar
Pantalla Completa
Cerrar
Abandonar
0.8090
0.5878
0.3090
0.0000
Finalmente, tres comandos que complementan a los bucles: break, continue y return.
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 70 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
7.
EDO Numrica e
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
En esta seccin utilizaremos el comando ode45 de Matlab para hallar o soluciones numricas de problemas de valor inicial de ecuaciones diferene ciales ordinarias. Vamos a considerar ecuaciones de la forma x(n) = F t, x, x , . . . , x(n1) Por medio del cambio de variable x1 = x, x2 = x , . . . , xn1 = x
(n2)
(1)
Avanzados
Programacin o
, xn = x
(n1)
(2)
Pgina de Abertura a
la ecuacin (1) se puede escribir como un sistema de n ecuaciones difereno ciales de primer orden de la forma (note la similaridad con (1)) x = F(t, x) donde x = [x1 x2 xn ]T y F(t, x) = [x2 x3 F (t, x1 , . . . xn )]T (3)
Pgina 71 de 75 a
Regresar
Pantalla Completa
T
Cerrar
Abandonar
Se trata de una ecuacin de segundo orden no lineal que que describe las o oscilaciones de un resorte no lineal. Es tambin un ejemplo de un sistema e dinmico que exhibe un comportamiento catico. a o Observemos que (4) se puede expresar como (3) con F (t, x1 , x2 ) = x2 + x1 es decir, x1 x2 = F(t, x) = x2 x2 + x1 x3 + cos t, 1 x3 1 + cos t,
Avanzados
Programacin o
Pgina de Abertura a
Empezemos escribiendo entonces la funcin F(t, x) como una funcin o o de Matlab que salvaremos como F.m:
function dx = F(t,x,flag,delta,gama,omega) dx = zeros(2,1) dx(1) = x(2) dx(2) = delta*x(2)+x(1)-x(1)^3+gama*cos(omega*t)
Pgina 72 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
ode45(Fcn,tspan,init,options,p1,p2,...) donde Fcn es el nombre de la funcin. o tspan es el intervalo de la solucin. o init es la condicin inicial. o option son opciones pasadas al solver p1,p2,... son parmetros adicionales. a Por ejemplo, si queremos resolver (4) con condiciones iniciales x(0) = 1, x (0) = 1 y parmetros = 0.15, = 0.3 y = 1 utilizamos a ode45(F,[0,100],[-1,1],[],-0.15,0.3,1) La solucin numrica obtenida por el solver (ode45) puede ser almaceo e nada en variables de salida para uso posterior.
>> [t,x] = ode45(F,[0,100],[-1,1],[],-0.15,0.3,1);
Pantalla Completa
Avanzados
Programacin o
Pgina de Abertura a
Pgina 73 de 75 a
Regresar
Cerrar
Abandonar
Observemos que la primera columna de x contiene x1 que es la solucin o de (4) (ver (2)). Para gracar las soluciones
>> >> >> >> plot(t,x) legend(x_1,x_2) xlabel(t) ylabel(x_1,x_2)
Avanzados
Programacin o
Pgina de Abertura a
Pgina 74 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar
8.
EDP Numrica e
Introduccin o Variables y Formatos Vectores y Matrices Grcos a
Clculos a
Avanzados
Programacin o
Pgina de Abertura a
Pgina 75 de 75 a
Regresar
Pantalla Completa
Cerrar
Abandonar