Teoría de Prácticas de Computación Numérica

El sistema MATLAB
3.1. Introducción
-

MATLAB (MATnx LABoratory) es un entorno interactivo basado en matrices para la realización de cálculo numérico y visualización de resultados. Permite la resolución de problemas sin escribir un programa y con facilidades de representación gráfica de los resultados. Los cálculos sobre matrices están basados en los desarrollados en los proyectos LiNPACK y EISPACK. El objetivo de estos proyectos era crear paquetes de subrutinas en FORTRAN para tratamiento de matrices (véase el subapartado 2.4.1). Achialmente, el sistema IMATLAB se usa tanto a nivel académico, dentro de la universidad, como a nivel de investigación e industria para la resolución de complicados problemas científicos o de ingenieria. Es empleado para el desarrollo de cálculo numérico de propósito general y resolución de problemas con formulación matricial que aparecen en control, estadística y procesado de señales. MATLAB aporta, por medio de las too1bo;ses (que no se incorporan en el sistema base, sino que se adquieren separadamente), funciones para resolver problemas específicos como. por ejemplo, procesado de señales, diseño de sistemas de control, identificación de sistemas, simulación de sistemas dinámicos, optimización, redes kuronales, etc. La principal ventaja del entorno MATLAB es su extensibilidad, que permite al usuario crear funciones que resuelven problemas específicos y, de este modo, aumentar la aplicabilidad del sistema. En este capítulo damos una introducción, suficiente para el desarrollo del libro, del sistema MATLAB. Se trata de una introducción práctica, se presentan ejemplos y la salida correspondiente que produce MATLAB al ejecutar los mismos, se proponen ejercicios y se indican los aspectos m i s importantes. Hay muchas características del sistema MATLAB que no se incluyen en este tema. Solo pretendemos que el lector tome un primer contacto con el sistema y se dé cuenta de su potencia frente a los lenguajes de alto nivel convencionales. Las funciones de cjlculo numérico que aporta MATLAB se estudian en detalle en los capítulos siguientes al ir presentando los distintos métodos.

74

CÁLCULO NUMÉRICO

P A R A COMPUTACIÓNEN CIENCIA E ~NGENIER~A

En este libro describimos fundanie~.talmente la versión actual de MATLAB, aunque se hace referencia a las funcionalidades que son novedad de esta versión y que por lo tanto n o funcionarán con versiones anteriores. La razón de este mirar hacia atrás es que en muchas universidades es aún difícil acceder a la Última versión de MATLAB y se sigue contando con licencias de versiones anteriores como, la 4.2 o incluso la 3.5. Para consultar cualquier orden del sistema se puede usar la orden deayuda help orden, que nos da información ~ b r la e orden especificada. Por ejemplo:
help zerok

ZEROS Al1 zeros. ZEROS (N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros ZEROS(SIZE(A)) is the same size as A and al1 zeros.

Esta breve introducción al sistema MATLAB intenta ser tan sólo una pequeña guía práctica que oriente al lector en sus primeros pasos. Para profundizar en el sistema MAT1,AB remitirnos a la bibliografía presentada en la parte introductoria o a la ayuda en línea (le MATLAB. Además 10s lectores con conexión Internet pueden obtener información adicional en la página PVeb http://www.mathworks.com ysiguiendo los enlaces a los que se puede acceder desde allí. Ejecutando la orden help 'help se pueden ver las opciones de la orden
help.

.

,

3.2. Acceso a MATlAB
El programa se inicia- ejecutando la aplicación MATLAB dentro del entorno que se esté ttrilizando. En nuesti'o caso desarrollaremos los ejemplos oon PC y sistemas operativos de lafamilia Windows de 32 bits. La ventana de órdenes de la versión 5 de MATLAB bajo Windows se muestra en la figura 3.1. Usando esta ventana nos comunicamos con el intérprete MATLAB. El intérprete niuestra la Iínea de órdenes (>>) para indicar que está listo para aceptar órdenes MATLAB, que describiremos después. También se puedeejecutar una orden de la línea de comandos del sistema operativo desde la línea de órdenes de MATLAB si se precede del carácter !. En este caso se abre una ventana con ei resultado de la orden: Las órdenes ejecutadas anteriormente pueden recuperarse por medio de las teclas < . ~ Y I By~ <ABAJO>. Una vez retuperada una orden, se puedereeditar posicionándonos con las teclas <DERECHA> e <IZQUIERDA>. Se puede grabar e n u n fichero la sesión por medio de la orden diary nombre-fichero. De este modo, todo lo que se visitaliza en pantalla, menos-los gráficos, se escribe en este fichero hasta que se ejecuta la orden d i a q off. Si se quiere volver a guardar se ejecuta de nuevo la orden diary on.

CAP~~ULO 3: EL SISTEMA MATLAB

75

FIGURA 3.1. Ventana de órdenes de MATLAB 5.

Vamos a centrarnos inicialmente en las siguientes opciones que nos proporciona el menú de la ventana de órdenes de la versión 5. Las opciones de las versiones anteriores son más reducidas.

a) File: contiene opciones para crear archivos, configurar la impresora y las órdenes (algunas no las describimos aquí).
l . New: contiene la siguientes opciones:

~ci-file:abre el editor para crear un fichero .M (en versiones antiguas de MATLAB hay que especificar un editor por defecto en la opción Editor). * Figure: crea una ventana gráfica.
2. Open: permite abrir en el editor el fichero que se seleccione en el cuadro de diálogo de selección de archivo, en particular ficheros .M. 3. Save Workspace as ...:guarda en el fichero .mt, que se selecciona en el cuadro de diálogo de selección de archivo, el espacio de trabajo actual. 4. Open Workspace as ...:abre un espacio de trabajo almacenado previamente. 5 . Show Workspace: inicia la herramienta gráficazde MATLAB que muestra el estado actual de la memoria de trabajo. 6. Set Path: inicia la herramienta gráfica que permite gestionar el encaminamiento de MATLAB. 7. Preferentes: permite establecer diversas opciones, entre ellas el formato numérico, configurar algún editor opcional, especificar las fuentes y algunas opciones de con-

l

C) IJII~CIOIV: lista las ventanas abiertas por MATLAB para que se pueda conmutar entre ellas. Poste: copia el contenido del poitapapeles de Windows en la línea de órdenes. l . .3. Si no se ha seleccionado ningún teho se imprime toda la sesión.Te. . Print . ~. 8. 10. por ejemplo al gestor de encaminamientos (PATH manager) y al visor gráfico del estado de la tnenioria. Cirt: corta el tkxto seleccionado de la ventana de órdenes copiándolo en el portapa- peles de Wiildows. Todas las variables representan matrices. pretan como escalares y las matrices con una sola fila o columna se interpretan como vectores. inter.ssion: r borra $1 bl!fir donde se almacena la historia de . d) He&: abre el programa de ayuda interactiva de Windows para MATLAB. 2. sino que se puede acceder opcionalmente a toda una documentación sobre el sistema con vínculos en formatos HTML (legible con ciialquiei navegador de Web como Netscape) y PDF (AdobeAcrobaf).la sesión. u dos matrices 3 x 3. frinfer Setzp. 3. 9. y las filas pueden estar separadas por punto y coma (.. las siguientes sentencias asignan a las variables A y .. h) E&: contiene opciones que permiten editar la sesión MATLAB. ~ l e n .trol del portapapeles de Windows (estas opciones se encontraban disponibles en versiones anteriores en el menú'options). . Por ejemplo. Copy: copia' el texto seleccionado de la ventana de órdenes en el portapapeles de ~indbws'.) o por iin retorno'de carro. !ntroducción de matrices MATLAB trabaja esencialmente con matrices rectangulares formadas por números reales o~ coniplejos. La versión 5 presenta además una barra de iconos con atajos a algunas de estas funciones. . Exit ItfATLAB: sale de MATLAB.. 4. la primera de ellas es indicando explicitamente su lista de componentes. 3. Los elementos de una misma fila pueden estar separados por blancos o por comas. En el caso de la versión 5 la ayuda ha sido mejorada notablemente y ahora ya no se reduce a una sucinta descripción de cada función.. L ~ matrices S se pueden introducir de diversas formas..:imprime el texto seleccionado en la ventana de órdenes. Las matrices 1 x 1 se.:abre el cuadro de diálogo de configuración de impresora.

4057 . 9501 O . 0185 0. A(2. Aleatsria = O. Otra posibilidad para crear matrices es por medio de sentencias y funciones ya ímplementadas en MATLAB. Como ejemplo valga la función r d í n ) .2311 O. ) el elemento componente de la segunda fila y tercera Por ejemplo. que crea una matriz n x n con valores generados aleatonamente y distribuidos uniformemente entre O y 1. ~ ( 2 . 6068 0 . 3 representa columna. Una posibilidad relacionada con esta es la de leer archivos de datos externos.7919 O.34e-9.7621 O.9218 0.4860 0.CAP~TULO 3: El SISTEMA MATLAB 77. Este procedimiento puede ser especialmente útil para crear matrices muy grandes ya que los errores se pueden eliminar rápidamente editando el archivo.8913 0. como por ejemplo 2. Se debe evitar los espacios en blanco cuando se escribe un número en forma exponencial. 1763 0. Las matrices pueden crearse también por medio de archivos .8214 0. 6154 0.7382 O. 4565 O.31 ans = 5 .M. que describiremos más tarde. Los elementos de una matriz se pueden identificar usando índices entre paréntesis.4447 O.

. Crear dos matrices c y D con tres filas y tres columnas. Op-eraciones sobre matrices y componentes de matrices MATLAB puede realizar el conjunto de operaciones sobre matrices mostrado en el cuadro 3.1. . 3. La única excepción es el caso de matrices escalares (1 x l).1.2. ~~ AXB ans = 41 40 94 50' 95 149 122 - 148 199 . entonces se .4. Otras estructuras dedatos más complejas como son estructuras detipo registi-o también pueden definirse en esta versión. CUADRO 3. . realiza' la operación del escalar con cada elemento de la matriz.Ejercicios 3. Visualizar en pantalla algunos de los componentes de las matrices c y D definidas en el ejercicio anterior. 3. La versión 5 d e MATLAB permite además inkoducir y trabajar con arrays multidiniensionales. por ejemplo al sumar dos matrices con diferente número de filas ocolumnas.1 Operaciones sobre matrices I OPERADOR DESCRIPCION resta transpuesta división izquierda división derecha MATLAB produce un mensaje de error si estas operaciones s e realizan sobre matrices con un tamaño no compatible.

MATLAB define la división derecha en función de la división izquierda como blA = (Aslb')'. Comprobar la diferencia entre tratar las matrices como entidades o como conjunto de componentes al realizar operaciones. A veces estaremos interesados en aplicar operaciones sobre los componentes individuales de la matriz. el resultado se visualiza en pantalla y s e asigna a variable.. Si se omite variable.C~Piulo 3: EL SISTEMA MATLAB Como vernos en el cuadro anterior. La suma y resta ya operan componente a componente. . En este caso tendremos que realizar operaciones sobre componentes. para multiplicar los componentes de las dos matrices A y B de nuestros ejemplos podemos hacer lo siguiente: A . El resto de operaciones se precede por un punto para que actúen sobre componentes. existen dos "divisiones" diferentes: 79 izquierda) es la solución del sistema de ecuaciones A*x = b. b * A. Por ejemplo.5. b'* A y b.* B? 3. Tras interpretar y evaluar expresión. Realizar sobre las dos matrices c y D todas las operaciones posibles.3. 3. En realidad. Debemos tener en cuenta lo siguiente: Una sentencia termina con un retorno de carro.' - - B Ejercicios 3. Si b =[O 1 31 ¿Están definidas A * b.4. si queremos obtener el cuadrado de una matriz escribimos ~ " 2 .pero puede ser que estemos interesados en obtener una matriz que tenga por componentes los cuadrados de los componentes de otra matriz. x = ~ \ (división b En algunas ocasiones se usa una matriz.) seguidos de un retorno de carro. Si una sentencia ocupa más de una línea se puede continuar en la siguiente siempre que terminemos la línea con tres o más puntos (. Por ejemplo. Sobre los algoritmos que emplea MATLAB para realizar esta operación trataremos más adelante en este libro. x = ~ / (división b derecha) es la solución de x*A = b (formalmente x = bA-'). Expresiones y variables hlATLAB es un lenguaje basado en expresiones formadas por variables. sino como un conjunto de componentes.' el resultado es asignado a la variable por defecto ans (answer). operadores y funciones. como podemos ver en los ejemplos presentados anteriormente.. no como una entidad. Una sentencia es la asignación de la evaluación de una expresión a una variable (variable = expresión).

Para una información más amplia es preferible utilizar la orden whos.). El espacie de trabajo El conjunto de variables definidas en una sesión forman el espacio de trabajo (ii~orkspace) d e la sesión. Las variables permanentes son variables del sistema MATLAB. siempre que se separen por una coma (. 3 . Sin embargo. Por defecto. S . m t usando' la . Si no queremos que el resultado de una expresión se visualice en pantalla debemos terminar la sentencia correspondiente con punto y coma (.5. ¿Qué información se recoge en cada columna? Cuando s&liriiosde una sesión blATL. Para visualizar las variables que se han creado en la sesión actual.XB lis variables se pierden. 128 B 3 by3 9 72 ' G r a n d . 6 . MATLAB di'ferencia las mayúsculas de las minúsculas. la variable temporal no es igual que la variable Temporal. Usar la orden whos para visualizar información sobre las variables de tu espacio de trabajo.80 CALCULO NUMÉRICO PARA COMPUTACIÓN EN CIENCIA E ~NGEN~ER~A Es posible escribir varias sentencias en la misma línea. puedeutilizarse la. es posible modificar esta opción de modo que no se prodtizca distinción entre mayúsculas y minúsculas.. Tambirn es posible definir nuevas variables como permanentes.) o un punto y coma (. pertenecientes al espacio de trabajo actual. Para ello guardanios el espacio de trabajo en un fichero con extensión . total is 34 elements using 272 bytes Density Full Full m11 Complex No NO No La misma inforniación se obtiene en MATLAB 5 pulsando sobre el icono ' :: Es posible eliminar una viriable del espacio de trabajo por medio de la orden ciear n~mbr<variable.). Your variables are: A Aleatoria B Ele!ents Bytes Nqe Size 9 72 3 by 3 A Alsatoria 4 by 4 16 . Por ejemplo. . L a orden ciear sin argumentos eliniina todas las variables no permanentes. orden who. puede dar el caso de que nos interese guardar estas variables para trabajar con ellas en sesiones posteriores. la variable permanente eps almacena la precisión iíel computador (generalmente lo-''). Por ejemplo. Ejercicios l/g$g 3. .

. n) hilb(m.mat se usa la orden lcad..C~Prni~o 3: ELSISTEMA MATLAB 81 128 double array 72 double array . . . -1 . Funciones para construir matrices Las funciones de construcción de matrices más comunes se muestran en el cuadro 3. . n) vander ( x l toeplitz(C.) t r i l (A) rand (m. Ventana de espcio de trabajo en MATLAB 5. . .. . Las matrices se pueden constnrir por medio de bloques.-. el resultado es el vector dLagonal de la matrizx Parte triangular superior de una motriz Parte hiangular inferior de una matriz Matriz generada aleótoriame'nte Mahiz.. ..n) diag (x) t r i u li... . . >. !.. si hemos definido previamente en el sistema una matriz A 3 x 3.' . . ... :. .~ . : : .R) Mahiz identidad Motriz de ceros Matriz de unos Si x es un vector.de Hilbert Mahiz mágica Matriz de Vandermonde constnjida a partir del vector x Matriz de Toeplitz no simétrica con c como primera columna y R como primera fila. . . .. Por ejemplo.2. . .. Para recuperar el espacio de trabajo almacenado en un fichero . orden save. el resultado es una motriz con el vector x como diagonal principal.n) ones (m.. .. . .-... .2 Funciones de construcción de malrices eye ín) zeros (m. : .7. Si x es una matriz cuadrada..n) magic [m. podemos constmir una matriz E 6 x 6 del siguiente modo: . 3. ..2. . . : > :. : FIGURA 3.. CUADRO 3. toeplitz(c] es una matriz de Toeplitz simétrica.

s e n t e n c i a . Lo más normal es que la expresión sea del tipo x:y. 'lo que es lo mismo: f o r v a r i a b l e = expresión sentencias end Encada iteración se almacena una columna de la expresión en la variable. para sumar dos matrices podríamos usar.6. 3. los elementos de la parte triangular inferior igual -a 3. end o. el bloque superior derecho la matriz identidad.8..8.r a r i a b l e = expresión. . 3.. crear una matriz G 12 x 12 formada por cuatro bloques 6 x 6. A continuación.82 CÁLCULO NUMERICO P A R A COMPUTAC~ÓN E N CIENCIA E INGENIER~A Ejercicios - 3. de modo que el bloque superior izquierdo sea la matriz F. Crear una matriz F 6 'x 6 que tenga los elementos de la parte triangular superior igual a 2.' el bloque inferior izquierdo una matriz mágica y el bloque inferior derecho una matriz de ceros. Control de flujo programando en MATLAB 13 sistema MATLAB incorpora las construcciones o estructuras típicas de un lenguaje estructurado: while O Eor e i f . y los -elementos de la diagonal los correspondientes a los de una matriz generda-aleatoriamente. Su forma general es: f o r . s e n t e n c i a . y s e ejecutan las sentencias hasta la siguiente sentencia m..ios siguientes bucles for anidados: .! Construcción í o r Un bucle for repite un conjunto de sentencias un número de veces. Por ejemplo. incrernentándose en cada iteración una unidad.'en cuyo caso la variable toma desde el valor x al valor y.

j)+B(i. instrücción del bucle for: for i=1:3 for j=1:3 .j). for j = 1:3. end 83 El mismo resultado se produce con: f o r i=1:3 f o r j=1:3 H(i. Para evitar esto y visualizar el resultado al final seañade punto y coma al final de la.j)=A(i. j) end end De este modo se visualiza la matriz H en cada iteración según se va creando. end. ~(i.CAP~~ULO 3: EL SISTEMA MATLAB for i = 1:3.j)=A(i.j)+~(i.

.8. . lo que .84 CA~CULO NUMÉRICO P A R A COMPUTACIÓN EN CIENCIAE INGENIER~A 3. end .3. es lo mismo: while condición sentencias : t ' 1 t i end 'a 4 Por ejemplo. i=l.. para saber en que posición de un vector v está almacenado el valor 9 . .hnríirnos los siguiente: El mismo resiiltado se produce con: V=[l 2 3 9 5 6 81. . o. while V(i)-=9 end Las posibles operadores~de comparación para construir condiciones en MATLAB se muestran el cuadro 3. .2. sentencia. Construcción while La constriicción while repite un conjunto de sentencias mientras que se cumpla una condición: while condición. sentencia. .

Si se aplican a matrices del mismo tamaño se crea otra matriz del mismo tamaño con unos o ceros como resultado de realizar las comparaciones entre componentes correspondientes. 4>5 y 4==5.Construcción if La constriicción if ejecuta un conjunto de sentencias si una condición se ciimple. Utilizar un bucle for para multiplicar dos matrices resultado en la matriz H.8.3 Operadores de comparación OPERADOR < > DESCRIPCI~N menor que mayor que menor o igual que mayor o igual que igual que no igual que <= >= --= Además. Ejercicios 3. A y B. A continiiación comparar dos matrices para ver como se forma la matriz resultado de la comparación. CUADRO 3.4 Operadores lógicos DESCRIPCION NOT Cuando estos operadores lógicos se aplican a escalares se produce el resultado O ó 1 si es cierto o falso.8.4. 3.CUADRO 3. y almacenar el 3. Probar el resultado de hacer las siguientes comparaciones 4 4 . se pueden crear condiciones más complicadas por medio de los operadores lógicos mostrados en el cuadro 3.3. Su forma general es: .7.

. sum.. Utilizar la orden help para ver como actúan y que acción realizan las funciones anteriores. floor y ceil. Funciones escalares Hay funciones que sólo operan sobre escalares. Otras funciones MATLAB sólo operan sobre vectores (fila o columna) si se crea un escalar. lo que es lo mismo: if condición sentencias end . e if mejorada para condicionales. sentenciasijend \ la^ i . asin. any. acos. cos.. sentencia. sqrt. lo que es lo mismo: if condición sentencias else sentencias e r i d La versión 5 incorpora instrucciones switch/case nuevas. abs. std. end o. Ejercicios 3. prod. exp. tan..9. sort.16. o . pero que pueden operar componente a componente cuando se aplican sobre matrices y crear así otra matriz. Se reconiienda utilizar la orden help para ver como actúan y qué acción realizan las funciones anteriores. . log. atan. Utilizando la función conv jes posible multiplicar do's polinomios? . min. rem. sign. .9. . Las funciones más comunes son: m. al1 y conv. sentencia. Si queremos que actúe fila a fila hacemos que actúe sobre la transpuesta de la matiz.. sentencias. También existe la opción de que se ejecute otro conjunto diferente de sentencias si condición no se cumple: i f condición. mean. median.10. round. . Utilizando estas funciones. . pero pueden operar columna a columna cuando se aplican sobre matrices al crear un vector fila que contiene los resultados de su aplicación sobre cada columna. jcómo se puede obtener el elemento mayor de una matriz? 3. Las funciones más comunesson: sin. Funciones vectoriales . 3. 3.86 CALCULO NUMERICO P A R A COMPUTACIÓN EN CIENCIAE INGENIER~A if condición. else.

CAP~ULO 3: EL SISTEMA MATLAB 87 3. Por ejemplo E (1: 4 . nonn. 3 > representa la tercera columna de la matriz E. qr. Generación de submatrices El carácter dos puntos (:) y los vectores de índices permiten referenciar vectores y submatrices de una matriz.7representaeívector 10. Esta es una de las principales ventajas de MATLAB frente a otros lenguajes de alto nivel. Las más comunes son: eig.1 2. Utilizando la orden help puede verse cómo actúan y qué acción realizan las funciones anteriores. size. det. sqrtm. schur. ans = . Es importante entender su funcionamiento porque ahorra muchas operaciones al reducir el uso de bucles y. por tanto. p l y .3 0. expm. cond yrang.1 0. chol. Funciones matriciales La potencia de MATLAB reside en sus funciones matriciales. inv.1:0. El carácter : también se usa para referencia una submatriz de una matriz.5.5 0. representa realmente el vector [i 2 3 4 S]. Veamos algunos ejemplos: La expresión 1. ans = 3 6 9 1 Por otro lado E ( :. 3 ) representa el vector columna formado por los cuatro primeros elementos de la tercera columna de la matriz E. usada generalmente en los bucles for.Esta expresión se puede generalizar de manera que los niuneros no sean enteros y el incremento de valores sea diferente a la unidad. rref. Por ejemplo. hess.laexpresión 0.. svd. 3. lu. 3 6 9 1 . hace el código más legible.71.11. que resuelven importantes problemas de cálculo numérico.2:0.

1 1.> ! C u O U ! m s = 2. E(:. 2. . :. Crear una tabla de senos.88 CÁLCULO NUMÉRICO PARA COMPUTACION EN CIENCIA E ~NGENIER~A T En la misnia lógica. Los índices se pueden usar a ambos lados de la asignación.0 con incremento O. representa la submatriz formada por todas las filas y las columnas 2 y 4 de la matriz E. E(124. [i 31 ) = B ( : . 5 8 1 1 1 1 i 1 1 1 1 1 j 1 ~. 1:2 ) asigna a la siibmatriz de A formada por todas las filas y las columnas I y 3 lasubinatriz de B formada por todas las filas y las columnas 1 y 3 - Ejercicios 3.0 al ángulo 3. 3.(matriz forniada por dos columnas) desde el ángulo 0. 1 2 . [2. . Así por ejemplo E(:. Crear una matriz aleatoria D 10 x 10. E ( 1 : 4 .:) . l. 4 1 ) . j ms = 1 '2 4 7 5 8 3 6 o O ~0 o O O o O i 9 3 1 1 4 1 1 1 i L Se pueden usar vectores de enteros como índices. . :) representa una matriz formada por las cuatro primeras ? ii filas de todas las columnas de la matriz E. Por ejemplo A ( : . Visiializar la tercera fila de la matriz.l.. Visiializar la séptima columna de la matriz.41) . .

4 5 6 71. 4 y 5 de las columnas 5.M. Ficheros . 6. Esto significa que dentro del guión se pueden usar las variables globales y las nuevas variables que se crean dentro del guión pasan a formar parte de las variables globales. . Visualizar la submatriz formada por las columnas 1. un archivo que se 1lame~matriz.m.Hay dos tipos de archivos .13. podemos crear.ejecutar secuencias -de sentencias almacenadas en archivos con extensión . M MATLAB puede . 4 5 6 7 ] . Si ejecutamos el guión anterior en una sesión donde la variable vj existe. Por ejemplo. 6 y 9 de la matriz D del ejercicio anterior.13. Podemos crear funciones para resolver problemas. 3. Guiones Un guión MATLAB está fofrnadó por un conjunto de sentencias MATLAB.13. - 3. Visualizar la submatriz 4 x 4 formada por las filas 2 .M: guiones y funciones.1.C~Pfful0 3: E l SISTEMA MATLAB 89 4. 7 y 8. '"3 = v1 . Funciones Gracias a las funcionqs podemos hacer más potente el sistema MATLAB. 3 . por medio-del editor.2. eliminamos la variable del entorno definiendo una nueva. V 2 = [ 1 2 3 4 . >.mcon el siguiente contenido: vi = [ 1 2 3 4 . 3. pasando a formar éstas parte del conjunto de .13. con el siguiente resultado: Es importante tener en cuenta que el guión utiliza el espacio de trabajo global. Los guiones se usan a menudo para crear matrices de gran tamaño porque los errores se pueden eliminar rápidamente. incluso a sí mismos recursivamente. 3. Los guiones pueden llamar a otros guiones. + V2 Al usar la nueva orden matriz se ejecutan las sentencias incluidas en el fichero matriz .

Por ejemplo. 'i i -.? B Valbres de s a l i d a 8 % m: Mayor elemento de l a matriz A . B % B . . La variable nargin almacena el número de argumentos usados al llamar a la función. Si en una sesión queremos saber el máximo elemento de una matriz E y asignar este valor al escalar a.. De este modo se llama a la función pasando la matriz E como argumento y asignado el resultado al escalar a. ri) - ~ e v u e i v ee l mayor elemento de l a c o i m a n' de una matriz A o de l a matriz entera dependiendo s i se introduce o no un valor para n . function m = maxcol(A.n) BK?. Sólo existen mientras la función se está ejecutando. i f nargin < 2 . Las variables creadas en una función son locales. :i 1 1 i 1 i Las funciones se pueden invocar con valores por defecto para los argumentos de entrada. % %= Valores de entrada A: Matriz .MATLAB.\ z . De estemodo la función se puede usar dentro de una sesión MATLqB como si se tratara de cualquier otra función. .XCOL(A. . Por ejemplo la función:. escribiremos a = --(E). Esto quiere decir que sus nombres de variable son independientes de los utilizados en la sesión donde se invoca a la función. vamos a crear una función qúe admita como parámetro una matriz y devuelva el elemento mayor: funccion m = m a x h í A ) %KUli4O(A) Ije&elve el mayor elemento de ijna matriz 8 % . . % %~ 8 8 % Valores de entrada A: Matriz n: Numero de columna Ylalores d e s a l i d a n: Valor mayor - . ~ t i l i z a m o s u neditor para escribir el textp anterior en un fichero qúe llamanios m~i.m.?io . i m = niaxímaxíA)).

.

a las siguientes búsquedas: .i ! i .92 CALCULO NUMERICOPARACOMPUTACIÓNENCIENCIA E INGENIER~A . 3. > . Las primeras líneas comentadas se visualizan en pantallaal ejecutar la prden help usando como argumento la función. Ejercicios 3.3. ~ ~ 9 Otros ingredientes útiles: \ Un símbolo % indica que el resto de la línea es un comentario y. dónde busco MAJLAB los ficheros . Valores de entrada A: Matriz n: Numero de c o l m a Valores de salida m a : valor mayor m i : Valor menor \ a i .. el entorno reali. ~ . i3. Implementar una función que tenga como parámetro una matriz y un escalar.. y produzca como salida la matriz elevada al escalar. W I N ( A . funcionalidad esta que permite escribir códigos más-autocontenidos. ..l 3 I i 1 componente de la matriz a Se puede conocer dentro de la función el número de argumentos de salida por rnedio. * La versión 5 de MATLAB permite el uso de . help 1 a '7 e .M con subprogramas. MATLAB lo ignora. a '= mawcin(E) .M? Cuando se introduce una cadena de caracteres en la línea de órdenes. Véase la función feval. .de la variablenar~out.' .14. por tanto.( 2 - Un argumento de entrada a una función puede ser elnombre de otra función. n l Devuelve e l mayor y menor elemento de l a c o l m a n de una matriz o de l a matriz entera dependiendo s i se introduce o no un valor para n.

Si no. Dentro de MATLAB se puede cambiar de directorio con chdir. . Si no. Se puede visualizar la ruta de búsquedade MATLAB conla orden path. 3. comprueba si hay un fichero con el nombre cadena. Comprueba si cadena es una variable. 4. comprueba si hay algún fichero de nombre cadena.m en la ruta de búsqueda o path del MATLAB. Si no. que permite modificar el PATH de MATLAB. Se pueden unir más subdirectorios a la ruta de búsqueda usando la orden path. help path.C A ~ ~ U3: LO EL SISTEMA MATLAB 93 1. comprueba si es una función propia de MATLAB.3. 2.m en el directorio actual. Véase En la versión 5 la pulsación sobre el icono da acceso a la ventana del gestor de encaminamientos de-la figura 3.

Entrada y salida de texto -/ Se puede asignar directamente unacadena de texto a una variable. Por ejemplo.!4 termina l '1 Dentro de un archivo . Por ejemplo: disp(<Hola.fichero. Por ejemplo: error('la operacion no se puede realizar') .14. e s t o es un mensaje 1 Con la función e r r o r . Por ejemplo: resg = inputí'Introduzca el numero de iteraciones: ' ) < . esto es un mensaje') Hola. E n este caso se visualiza el mensaje y el fichero de ejecutarse. S s = 'Esto es un mensaje' = Esto es un mensaje Oentro de i~n.M se pi~ede escribir en pantalla de los siguientes niodos: Con in fiinción d i s p . Gestor de encaminamiento de MATLAB 5.i . FIGURA 3 3.M se puede pedir al usuario qiie introduzca tin dato usando la fiinción i G u t .I 3.

J ) ) La componente 2. que devuelve la hora actual con una precisión de centbimas de segundo. Con la función fprintf se pueden escribir datos y texto en pantalla o en fichero. La orden flcps (O) inicializa la variable flops a O. t = clock. Medidas de eficiencia de algoritmos Para medir la eficiencia de un algoritmo podemos medir su número de operaciones (flops) o el tiempo de ejecución. se puede calcular el tiempo consumido en calcular la inversa de una matriz M 40 x 40 del siguiente modo: M = rand(40). Por ejemplo: fprintf (1. t) time = o. clock ans = La orden etime(t2.15. time = etime(clock. E ( 2 .3 de. inicializando a cero la variable flops antes de ejecutar un algoritmo y leyéndola después sabemos el número de operaciones en coma flotante que realiza el algoritmo. Para conocer el tiempo de ejecución de un algoritmo contamos con varias posibilidades. Así. Ejercicios 3. El sistema MATLAB almacena en la variable flops el número total de operaciones en coma flotante que se han llevado a cabo en la sesión.CAP'KULO 3: E l SISTEMA MATLAB 95 De este modo se visualiza en pantalla el mensaje y el dato introducido por teclado se asigna a la variable resp. Fnv(M). OOCO . La primer de ellas consiste usar la función ciock. 3.1 5. Por ejemplo. 'La ccmponente 2. tl) devuelve el tiempo en segundos transcurrido entre dos tiempos t2 y tl. Modificar la función del ejercicio anterior de modo que la potencia a la que se eleva la matriz se introduzca por teclado.la matriz E es: %d \n'.3 de la matriz E es: 6 En la versión 5 es posible definir arrays de variables alfanuméricas.

16. Sin embargo.! Ejercicios . Crear una tabla con el número de operaciones que hacen falta para obtener la '3 .4 digitos decimples Notación científica con4 dígitos decimales Notación científico con 15 dígitos decimales 2 i ? . algunas de cuyas opciones se muestran en el cuadro 3.. La orden p i o t crea gráficos x-y.j ciones. . MATLAB incorpora una utilidad que permite controlar el tiempo j de ejecución de cada línea de un fichero .Y 3. ~ 3.:J j 3. M = rand(4O). y devuelva la tabla de opera. El modo de proceder es ejecutar:! la orden t i c antes del algoritmo y la orden toc después. toc 1 i Desde la versión 5. el formato de salida se puede definir con la instrucción f o m t . el formato se mantiene hasta que se cambie de nuevo. P&a más información teclear he1 p r o f i l e .5. Para ello escribir una función que admita como argumentos el menor y el mayor orden.y) abre una ventana gráfica y dibiija los elementos de x frente a los de y. tic.S . ' Una vez seleccionado. si x e y son vectores de la misma longitud. desde 2 x 2 hasta 15 x 15. ~ C ó i i ~ varia o el número de operaciones con respecto al orden de la matriz? .M. inversa de una matiz. Gráficos e n dos dimensiones i f4 3 i i . imríM). Por ejemplo.17.16..Una última posibilidad es usar las órdenes t i c y toc. para representar la gráfica del coseno escribiríamos: .5 Formotos de salida ORDEN fomt fo+t fomt fomt 'chort long short e iong e FORMATO Punto fiio con 4 dígitos decimales (por defecto) Punto fijo con 1. !j 4 CUADRO 3. la orden p 1 0 t : (x. Formato de salida Todos los cálculos con números reales se realizan en MATLAB en doble précisión. \ 4 .

y l a b e l i ' e j e y ' ) . p l o t (x. FORMATO Coloca una rejilla en la gráfica Título del gráfico Etiqueta en el eie x Etiqueta en el eiey Escribir texto en una posición interactivamente Escribir texto en unas coordenadas determinadas grid titie xlabel y labe1 gtat text Por ejemplo: grid. t i t l e ( ' G r á f i c a d e l coseno8). .6 'Opciones en las gráficas ORDEN .y) Sobre . x i a b e l ( ' e j e x l ) . CUADRO 3.Q1:4.las gráficas se pueden realizar las acciones mostradas en el cuadro 3.6.CAP~TU~O 3: EL SISTEMA MATLAB x = -4: . y ' 97 = cos(x).

Usando la orden rneshgridse crea un par de matrices. así como sus colores. Se pueden cambiar los tipos de punto y línea. La orden axis i 'squarer hace que se use la misma escala enámbos ejes. 3 Por defecto los ejes del gráfico se escalan automáticamente.18.x-.v. Por ejemplo.. para representar la función seno y la función coseno en el mismo gráfico se procede del ~! siguiente modo: I 'j También se puede utilizar la orden hold.1. 2. Definir los vectores xx e yy que particionan los lados d e ~ ' ~ l a n rectangdar. y otra matriz y cuyas columnas son iguales a yy y con un número de columnas igual al número de componentes de . que admite como parametro un vector de 4 elementos c= [i. una de ellas x cuyas filas son iguales a xx y con un húmero de filas igual al número de componentes de yy.i 98 CÁLCULO NUMÉRICO . Gráficos en tres dimensiones La orden mesh ( 2 ) crea un gráfico en tres dimensiones con los elementos componentes de la matriz z. Sin embargo. Para representar gráficamente una función z =Xx. se pueden forzar los límites de los ejes por medio de la orden axis ( c ) . y) sobre una región rectangular plana del dominio de f se han de seguir los siguientes pasos: 1. PARACOMPUTACIONENCIENCIAE INGENIER~A . y. . Volviendo a ejecutar hold se descongela la ventana gráfica.. Para representar vanas funciones en el mismo gráfico se forma una mahiz que contenga en las columnas cada una de las funciones que se quiere representar. Véase help plot. . 1 . y-. Para que las gráficas se vuelvan a autoescalar se ha be ejecutar de nuevo la orden axis. Esta orden congela la ventana gráfica actual de modo que las siguientes gráficas se representan en ella. 3.

3. Obtener la matriz z evaluandofsobre las matrices x e y. 4. Aplicar ni-sh sobre z. -(x'+.v2) Por ejemplo, para representar la gráfica de la función z = x . e drado [-4,4] x [+,41 podemos escribir las instrucciones

sobre el cua-

1

11

Ejercicios 3.17. Modificar la función escrita en el ejercicio 3.16 para que represente en una gráfica bidimensional el número de operaciones en función del orden de la matriz.

3.18. Representar la función

2

T = e-(X2Cy ) en el dominio [-2,2] x [-2,2].

Las versiones de MATLAB, a partir de la 5, incorporan muchas mejoras en la visualización gráfica mediante el uso del algoritmo Z-buffer, soporte de color verdadero y muchos efectos de manejo de imágenes y figuras 3-D. También se incorporan mejoras en los gráficos para presentaciones, como el poder introducir texto y fórmula en formato TeX. Otra mejora consiste en la posibilidad de definir arrays de tipo byte para almacenar imágenes.

3.19. Elaboración de programas en MATLAB
1

A la hora de escribir funciones MATLAB es importante seguir una serie de normas de estilo que o bien facilitan la comprensión y el mantenimiento de los códigos, o permiten obtener el máximo rendimiento de los programas. En particular es importante que el código esté auto-documentado. Dentro de la documentación del código tienen un papel especial las líneas que siguen a la cabecera del pro-

100

~ÁLCULO NUMERICOP A R A COMPUTACIÓN EN CIENCIAE INGENIER~A
';

grama, que son las que aparecen cuando se teclea help nombre-fichero. Es interesante incluir información sobre qué resuelve la función, qué método emplea -incluso con referencias bibliográficas-, qué variables utiliza como entrada y cuáles como salida, las^ funciones implementadas..p reviamente que se utilizan, e incluso el autor y la fecha de la última revisión del código.-También e s importante dividir y comentar los módulos princi., . del diseño descenpales de la función. En particular, se puede emplear el pseudocódigo dente como comentario en la función. En resumen, normalmente no es trabajo perdido, sino más, bien lo contrario, pues supone incluir toda la información necesaria para comprender y mantener el fichero .M.Si no se ha utilizado una función en varios meses y se necesita volver a ella para realizar unos canitjios, es fundarnenfal'que esté suficientemente documentada por medio de comentarios. . . , En cuanto al código en si interesa seguir las normas de la programación estructurada, tanto de cara al mantenimiento y depuración de los programas como de cara a la.legibilidad del código. Otro tema importante a la hora de escribir 'funciones MATLAB es el de la optirnización del rendimiento, ya que el modo de .programar una tarea concreta puede ser determinante tie la velocidad de ejecución del código resultante. Así, es conveniente seguir las siguientes indicaciones para alimentar el rendimiento del sistema:
~

: .

.?

3

i :

; .l 3
.c

li

.: i .;

."

9

;j

a 4

.$ :l
a

;

l . Evitar rl liso de btrclesy ~rriliznr los funciones &ctoriales de MATLAB. Por ejemplo definamos los vectores
for i=1:10000 xi(i)=f/i; x2(i)=~'sin(0.00l*i);

8 3
4 2
4

d;

-4 2
-4
$

Su producto escalar puede realizarse componente a componente, tardando mucho
iriás en ejecutarse por medio de bucles que con operaciones sobrevectores
su1~0; tic; for k=1:10000, sum = sum

4

+ xl(k)'x2(k);

end; toc; sum

elapsed-time = O. 4010
Sum =

3.3156

tic; sum = ~ 1 ~ x 2 toc; '; aum

elapsed-time =
,

0.0100 3.3156

sum =

2. Utilizar jrriciones vectoriales y minimizar el número de llamadas a firnciones t'.rterriu.s. Para ello puede ser interesante definir variables intermedias que almace-

nan llamadas anteriores a funciones que se van a reutilizar, etc. Además, hay algunas operaciones que se realizan de manera más directa de alguna forma particular, el ejemplo clásico es el de elevar a una potencia, que es mejor realizar por medio de multiplicaciones cuando sea posible:
tic; for j=1:100, sall=xl.*xl.*xl; sal2=xl.*xl; end; toc;
elaps-time = 0.4210

and; toc; tic; for j=1:100, sall=xl.*3; sa12=~1.~2;
elaps-time = 5.3670

J .

A la hora de optimizar un algoritmo hay que intentar que no por esto pierda legibilidad, esto es, que las simplificaciones que se realicen estén bien comentadas y en '.'- - l e programa cuyo funcion&iento sea transparente: ;,r,,~nsionar-los .sectores. Si no se hace así MATLAB debe ir añadiendo una 1 componente nueva al vector, lo quese traduce en un funcionamiento más lento. Por ejemplo: . .
tic; a(1) = 0; for i=lr10000, a(i+l) = a(ii + 1; endt toc
elapsed-time = 12.6380 tic; a=zeros(1,10000); a(1) = 0; for i=l:10000, a(i+l) = a(i) + 1; end; toc elapsed-time O . 6910

,

.

=

La elaboración de programas es mucho más versátil desde la versión 5 de MATLAB y es uno de los campos que más mejoras ha experimentado. En el terreno de la programación y el desarrollo de aplicaciones se incluye un analizador de rendimiento de ficheros .M,un editor y depurador de ficheros .M, programación orientada a objetos, entorno de desarrollo de GUIs, editor de objetos gráficos, etc.

-KGI&

p s i 6 1

Introducción a MATLAB
fb MATrix LABoratory

Jesús Peinado
b Pedro Alonso
~o
F 3

DBpartamenlo de S s t w
lnfomiaticos y Cmpulaa6n

ib Universidad Polil6cnica de

Valencla
1

DSIG

o

f f a .

Qué es MATLAB
fb MATLAB es una aplicación interactiva para realizar cálculos

cientificos y de ingeniería basada en matrices.
fb Permite la realización de cálculos a través de la línea de co-

mandos y mediante programación.

ib MATLAB está disponible en diversos entornos: estaciones de trabajo Sun, Apolio, VAXstation, HP, PC's y compatibles y Appie Macintosh.
2

,

.. ~b MATLAB es un lenguaje de expresiones. Invocar: c: >mtlab ib Trabajar sobre 'command window' ~b Salir de MATLAB Comando quit 3 DSI~ - O Qué es MATLAB -ex--& . ib Si finalizamos con '. ib LOScomandos y expresiones son ejecutados o evaluadas y el resultado se muestra inmediatamente..... pero la asig- nación si se realiza.' el resultado no se muestra. _ p Entrar en MATLAB Doble-Click el icono o bien . ~b El prompt '>>' indica que MATLAB está esperando una orden.---.Qué es MATLAB A % . . 4 .

1 DSV~ ib Ejemplos: a Qué es MATLAB C _ q _ ' . >> Y Y= 4 5 osid - Introducción de matrices 6 . >>2+2 ans = 4 >>x=2+2 X = 4 >>y=2*2.

1 (b MATLAB no necesita especificar el tamaño por adelantado. 8 l1 .---- Introducción de matrices s MATLAB trabaja con un sólo tipo de objeto: Matriz. Cargadas de conjuntos de datos almacenados en un archivo externo. El espacio de almacenamiento es asignado dinámicarnente hasta completar la memoria asignada a ia aplicación o ia memoria disponible en el sistema.m. No hay especificaciones de tipo. i i x . Una matrlz 1 x 1 la llamamos 'escalar'. Una MATRIZ es un conjunto ordenado de números.. ordenados por filas y columnas. Creadas en archivos . Generadas por Órdenes y funciones.. Mediante una lista explícita de elementos.. w Una matriz n x 1 ó 1 x n la Ilamamos 'vectof. Ej: A=lOe24 7 ¡% ¡% 1 3 1 Matrices simples b Las matrices se pueden introducir de diferentes formas: . Los nijmeros se pueden representar en distintos formatos como el siguiente: [ m a n t i s a l e [exponentel. reales o complejos.

' o por 'CR'. w Los elementos están separados por espacios. 7 8 9 1 % -A -& - A= 1 4 7 >> 2 5 8 3 6 9 10 . o Las columnas están separadas por '.4 5 6. A = A [ 1 2 3 . 4 5 6. 7 a 9 1 = [ 1 2 3 4 5 6 7 8 91 9 DSI~GI o Matrices simples >> A = [1 2 3. Es equivalente: . La lista explicita bs el método más sencillo para introducir los elementos de la matriz.1 7 k1Matrices simples -l-?-Z.

. Matrices simples >> 8=[1 2 3. 11 - DS~C~ Ejemplo: >> A=[l 2 31.---.DSV~ o Matrices simples .. f f i i * . h T i : . .:) D= 2 4 6 12 ..45 6. w w Las matrices creadas tienen el tamafio adecuado para almacenar el resultado de la operación. El tamaño de las matrices debe ser válido para la operaaón. . = .7 8 9 1 . . >> C=A*B C= 30 36 42 >> D=A+B(I . p Las matrices pueden generarse como el resultado de órdenes o funciones.

13 E = % . S k : * = r : . R .ya que estos son un tipo de ficheros binarios especiales. Matrices simples ib Las matrices pueden generarse a partir de un archivo ASCI1 externo que se carga mediante el comando load. es decir.I) O . no se pueden sumar un vector fila y un vector columna. Matrices simples ib Ejemplo de comando erróneo: ??? Error using ==> + Matrix dimensions must agree. Cada línea separada por 'CR' de la siguiente se almacena en una fila de la matriz.. 14 .os/cI >> A+B(:.mat. p La extensión no puede ser . p Es posible importar ficheros que contienen datos ordenados de modos especiales con el comando fscanf. p El archivo ASCll debe contener datos separados por espacios y cada fila en una línea. ib Esto sucede porque los vectores sumados no coinciden en sus dimensiones.

expresiones MATLAB: >> x=[-1.7321 4.3000 1.r] A= 123 456 789 10 11 12 16 .3 sqrt(3) (1+2+3)'4/5] X = -1. Observese cómo podemos x=eeA-A aiiadir una fila a la matriz A: >> A=[l 2 3.4 5 6.0000 1.>> r=[10 11 121.8000 b Los elementos individuaíes de la matnz pueden referenaarse especificando el índice entre paréntesis (n8tese que x(4) se pone a cero de manera automatica).D S ~ ' Elementos de la matriz ib Los elementos de la matnz se pueden generar mediante A & .8000 0.3000 1.3000 15 *sI" 0 Elementos de la matriz ra Se pueden construir matrices grandes usando matrices pequeiias como subelementos.7 8 9 1 : . >> x(5)=abs(x(l)) X = 1. 2 > A=[A.7321 4.

789] A= 123 456 789 >> A' ans = 147 258 369 w 17 DSI~CI O Funciones para construir matrices eYe .PSI~GI o *LWZS&. >>A=[123.456. .=Y& . zeros ones diag triu tril rand hilb magic toeplitz Matriz identidad Matriz de ceros Matriz de unos Matriz diagonal Parte triangular superior Parte triangular inferior Matriz aleatoria Matriz de Hilbert Cuadrado mágico Matriz de Toeplitz 18 . Matrices simples La transpuesta de una matriz se halla con la comilla simple '. h .

=-%. >> A = eye(4) A= 1 O O O 0 1 0 0 0 0 1 0 0 0 0 1 19 Órdenes y variablés .Funciones para construir DS//I~] matrices b Ejemplo: -S.

.1/6 + 117 . b Si omitimos la variable y el signo'='..118 + 119 . - t b Si la expresión es tan complicada que no cabe en una iinea de la pantalla. 1900/81 ans = 23.' seguido de 'CR'. que es mostrada en la pantalla y asignada a la variable e s p e d i i d a para su uso posterior. . - 22 . b La evaluación de la expresión produce una matriz... lo que indica que la orden sigue en la columna siguiente.por defecto se muestra su resultado. Ejemplo: s=1 112 + 113 . el resultado se asigna a la variable ans. evalúa y..1/12. Útil para operaciones que producen matrices grandes como resultado y no interesa mostrarlas en pantalla.~svGi o X f & . podemos usar '. Órdenes y variables b MATLAB es un lenguaje de expresiones.1/10 + 1/11 .4568 21 ~ o ~ lÓrdenes d y variables e & . b El formato tipico es: v a r i a b l e = expresión.114 + 115 .' la asignación se realiza pero su resultado no se muestra en pantalla. ----- b Si el Último carácter de la orden es '. b Cada expresión tecleada por el usuario se interpreta.m. Útil en archivos .

p MATLAB es case sensitive: w A y a no son la misma variable. . % & - Espacio de trabajo 24 . Debe usarse con precaución. osjcl c .Órdenes y variables FO Las variables y los números de funcibn están formados por una letra seguida por cualquier número de letras o números o del carácter underscore '-'. FO Solo se utilizan los 19 primeros caracteres del nombre de la funcibn. m El comando casesen hace que MATLAB sea case insensitive. 23 - Todos los nombres de funcibn deben estar en minúscula.

B Información más detallada puede obtenerse con la orden whos rrmr .2204e-16. incluso O. 26 - . y no pueden borrarse.DSIG o Espacio de trabajo & A -. y debería ser utilizado por los usuarios wrno criterio de convergencia. fb Las variables ans y eps son variables permanentes. fb Cada elemento de una matriz real usa 8 bytes de memoria. aps es la tolerancia utilizada por MATLAB para determinar si un resultado es O entre otras cosas. 48 72 24 -LLY capler No Ho So HO L 9 N11 NI1 B C 3 4 3 D %x 1 4 3 1 4 5 1 4 3 3 by 3 280 b F s a 3 5 Nll (0 24 3 mil mil N:l si HC ?2 Oran* ioial i r 15 elerencs U i n g 25 leaving 7452080 byres of maa>ry Cree o s 1 6 1 o A * . . .. ans es el resultado de la última orden realizada sin asignación explícita a variable. El valor de eps puede modificarse a cualquier valor. Para la ariirnetica IEEE utilizada en la mayoria de wdenadores personales y estauones d e trabajo e p s = 2. ----- fb Las órdenes utlizadas hasta ahora crean variables que se almacenan en el espacio de trabajo. . - ----- Espacio de trabajo !a Las variables pueden borrarse con la orden clear. H A 2 rize 4 3 ~lementi B Y C . fb La orden who lista las variables aimacenadas. tienen un significado especial para MATLAB.

rnat. = O & >> save Saving to: matlab.DSI~GI o Espacio de trabajo w Mediante el comando save se puede guardar el espacio de trabajo (las variables) para otras ocasiones. b Para recuperar las variables de una sesi6n anterior se utiliza el comando load: >> load fichero 27 DS~ GI' Números y expresiones 28 .mat b Con save fichero el espacio de trabajo se guarda en el fichero fichero.

602103-20 6.o m G i * T e > Números p Para la expresión de números se utiliza la notación decimal típica.6397238 -99 0. optativamente: Signo menos '-' al principio. lo cual equivale.02252e23 p En ordenadores que utilizan la aribnetica IEEE. Potencia de 10 como facior de escala. a 16 cifras significativas. aproximadamente. 29 Expresiones aritméticas Las expresiones aritméticas pueden construirse usando los operadores aritméticos tipicos y con las reglas de precedencia comúnmente utilizadas. - b Algunos ejemplos de números validos: 3 9. especificada como sufijo 'eXX'. el error relativo de cualquier número es eps. Operadores: + adición substracción multiplicación / divisibn a derechas \ división a izquierdas - . b El rango numerico es desde loA-308hasta 10A+308.0001 1.

: abs.como o/o o i n f / i n £ . x = blA es la solucion de x'A = b. P. x = A\b es la solución de A ' x = b. sin embargo.Algunas funciones devuelven valores especiales: P - La función p i devuelve litatan (1). e. que es el resultado de l / o . Ojolll . ib Las funciones matemáticas elementales están incorporadas en MATLAB. 31 o * & - ----- DS"~ Expresiones aritméticas. log b . Le variable NaN. no son iguales. * a ' 6 J Expresiones aritméticas b Para escalares la división a derechas y división a izquierdas realiza lo mismo. sqrt. Nota Number es un valor especial recogido en la aritmética lEEE que indica que el resultado de una operación es una indeterminación.-C-C-~Z. b Para matrices. . w Si usamos una variable que tenga el mismo nombre que una 32 función existente. b Los parentesis se usan del modo tipico para alterar la precedencia de las operaciones. La función i n f devuelve infinito. la función deja de estar disponibfe.

w w Para obtener la lista de temas acerca de los que se puede obtener ayuda.PSGI o Help A A x ----- b La función h e l p provee Información en línea. Para obtener ayuda acerca de los operadores: > > h e l p ops . See also MEDIAN. For vectors. 34 . w B Para obtener ayuda acerca de la ayuda: > i h e l p h e l p . For matrices. 33 Help ib Ejemplo del uso del comando help >> help mean MEAN Average or mean value. MEAN(X) is a row vector containing the mean valueof each column. STD. MIN. MEAN(X) is the mean value of the elements in X. Para obtener ayuda acerca de un tema. use > > h e l p . use > > h e l ptema. MAX.

for i = 1x1. end o x=O. x = 0. end 36 .DS//G/ O -. x=[x. for i = 1:n.iA2].-A-& ----- Construcciones Estructuradas 35 Construcciones Estructuradas SFA--& ----- B Las sentencias de control del flujo en MATLAB operan como en la mayoría de los lenguajes infomlaticos: For. x=[x.tA21.

2) == O panty = 2. end 38 . while 2"n < a n=n+l.p s I Y c 1 O Construcciones Estructuradas = y * ib while n = O. elseif rem(n. else panty =l. end n 37 DSIYCI O Construcciones Estructuradas s f = f = 2 . A . ----- ib if ifncO panty = 0.

. Si . y aborta la función que se está ejecutando. . < > <= >= --= menor que mayor que menor o igual que mayor o igual que igual que distinto que ib Para combinar las relaciones: & Y I o no 39 Construcciones Estructuradas ib break: Termina la ejecución de un bucle FOR o WHILE.. .. en caso de que exista. . F E & .QSI~G~ ib Relaciones O Construcciones Estructuradas = q . termina solamente el bucle interior l ib error('MSG'): muestra el mensaje 'MSG'.---. existen bucles anidados.

Si se aplican a matrices. t = e L & ----. ..0~~61 -sez- Funciones Escalares 41 Funciones escalares . lb Son funciones definidas en MATLAB que operan sobre escalares. actuarán sobre cada elemento: sin COS asin acos atan exp los3 rem abs sqrt sign round floor tan ceil 42 .

---. *. Funciones Vectoriales y Matriciales 44 . >> sqrt(A) ans = 2 3 5 4 43 DS~] t r = ? L & ..916].Funciones escalares ib La función sqrt por ejemplo halla la raíz cuadrada de los % & * elementos de una matriz: >>A=[425. .

por ejemplo. halla la media de los elementos de un vector: >>x=[t.3].--- m Otras funciones actúan sobre vectores (matrices n x 1 o 1 x n). t = % i & . el resultado es un vector fila con los resultados de la función aplicado a cada columna. ..2. Si se aplican a matrices..os'61 Funciones Vectoriales . ans = 2 46 .. max min sort sum prod std median mean any al1 45 o s d i m L : z T .>> mean(x). Funciones vectoriales La función mean.

. 48 det slze norm cond r . . F-norma..---- D ~ S ' Funciones de Matrices expm sqrtm PO~Y exponencial de matriz raíz cuadrada de matriz polinomio caracteristico determinante tamaño 1-norma. 2-norma. -norma Número de condición en 2-norma.o Funciones de Matrices F C Actúan sobre matrices: elg chol svd inv valores y vectores propios factorización de Cholesky descomposición en valores singulares inversa factorización LU factorización QR Forma de Hessenberg Descomposición de Schur rango 47 lu qr hess schur rank * = L * .

Funciones de Matrices fb La funciones pueden devolver uno o más datos.D] =..eig(A).---- > > A = [ i 2. >> A*inv(A) ans = 1. por ejemplo. D es una matriz diagonal cuyos elementos son los valores propios de A. y es un vector que mnliene los valores propios.0000 49 ? * a . U es la matriz de vectores propios. * [U.. oy = eig(A).0000 o 1. 50 L . -"--- DS''~.34]. halla la inversa de una matriz: _ _ A -* ' .D ~ S '' Funciones de matrices b La función inv. por ejemplo: .0000 0.

. pl ib Si se proporcionan unos caracteres. La notación ':' . la bhsqueda de comandos con las flechas será de comandos que comiencen con dichos caracteres...---- $ % El cursor se posiciona en la línea mediante las flechas izquierdalderecha y la tecla de borrar el carácter anterior. Mediante las flechas arribalabajo se recuperan comandos anteriores. 4sf61 La línea de Comandos % $ z A * .. 51 Submatrices.

Sirve para generar vectores: ejemplo: 1:5 es equivalente al vector [l 2 3 4 5).8 1.3) Es el vector columna formado por las cuatro primeras entradas de la tercera columna de lamatriz A.4 9.0:0. - @ Estas expresiones pueden usarse en ambos lados de una asignación. Ix.1:2. ejemplo: 5:-1:1 es [5 4 3 2 11. Notación ':' B También sirve para referenciar submatrices o segmentos de e _ _ ' ----- vector: ejemplo: A(1:4.[:! 41) Son las columna 2 y 4 de la matriz A.0 1. L s i - En el siguiente ejemplo se genera una tabla de senos: x = [0.3) columna de la matriz A.6 0. P S ~ ' w Submatrices. ejemplo: 02:0.. 54 .2 es [020. w ejemplo: A(:.21. . Es el vector columna formado por la tercera ejemplo: A(:.2:1. Y1 53 D 'S ' Submatrices. y = sin(x).0]'. Notación ':' El operador ':' es muy Útil en MATLAB.

5:8.2:4) es la Siguienle: >> A([ 2 4].2:4) ans = 6 l 5 9 13 10 l * > c m > 55 11 12 7 15 8 16 14 - Archivos .16]. La submatriz A([ 2 4].osllll s Sea la matriz A: o = .13.9:12.L e * - Submatrices >> A = [1:4.m .

para introducir datos en una matriz muy L grande. 57 DSGI o Archivos .m: w Ficheros script.m: scripts = = L .m el nombre de un fichero . ~b Existen dos tipos de archivos o ficheros . Estos ficheros se llaman ficheros .m z z ~b MATLAB puede ejecutar una secuencia de comandos almacenados en disco.m.DS/?G~ Archivos .m de tipo script está formado por una secuencia de sentencias MATLAB normales. Las variables son giobales al entorno de trabajo en el que se ejecute en script.m. 58 . Ficheros funclón.m y tienen la extensión . Sea data. p Sirven por ejemplo. se ejecuta desde la finea de comandos como: >> data y se ejecutan los comandos del fichero M data. ib Un fichero . Los scripts pueden referenciar a otros scripts recursivamente.m.

60 .. ----.- DS//~] l b o scripts = A - e---$ U Por ejemplo. ib Las variables de las funciones son locales. . b La definición de una funcibn se almacena en un archivo .m.m: funciones b En MATLAB pueden definirse funciones que resuelvan ciertos problemas con el mismo estatus que las predefinidas. fichero datam: A=[123 456 7891 >z data A= 1 2 3 4 5 6 7 8 9 59 - o A -& -. Archivos .

a = floor(lO*rand(m.DSI~GI O Archivos .--- w Los comentarios son líneas que comienzan por el signo '%'.. p La sintaxis de una función es functlon [varf.. % % randint(m. jb Invocación desde MATLAB: >> randint(4.. ib nombre es el nombre de la función.] =nombre( paraml.n) devuelve una matriz de m x n entradas entre O y 9. o 'Conjunto de instnirxiones MATLAB'..m.. w van es el nombre de las vafiables resultado.m: funciones (construcción) z - w Ejemplo: function a = randint( m.varí'. paramison los parámetros.. ). n ) % RANDINT Generador de matriz de enteros aieatoria.2) 62 . 61 DSI%~ 1 Archivos . ib El nombre de la función debe ser el mismo que el del fichero .2) o >> z = randint(4..n)).m: funciones (construcción) = Y A & - .. param2 .

p Algunas funciones de MATLAB son ficheros . u _ ' -. otras son auto- construidas (built-in).. 63 DS/I~I O Archivos . . Con el comando type se averigua. ro tb Las primeras líneas de comentario aparecen cuando se llama al comando help.--- tb Una función puede tener múltiples argumentos de salida: function [mean.m: funciones (construcción) -L-F%=-&. La variable nargout contiene el número de parámetros de salida proporcionados por la función. stdev] = stat(x) w La funci6n se puede llamar así: >> [xm. xd] = stat(x) o con un argumento sólo >> xm = stat(x) M .m: funciones (construcción) _ .m.Ds%~ Archivos . % ! La variable nargin contiene el número de parámetros proporcionados en la llamada a la función.

DSK~ o . C % x . Ejemplo: >> S = 'Esto es un texto' tb Las cadenas de texto se muestran en pantalla con el comando disp. >> S S = Esto es un texto >> disp(s) Esto es un texto 66 .."---. Cadenas de texto 65 nsd o Cadenas de texto .. tb Las cadenas de texto en MATLAB se introducen entre comillas simples.. _ * .---_ .

. Es w m o la llamada dlsp. Se utiliza en funciones en ficheros .m se puede pedir la entrada de una cadena de texto con el comando input. LOSmensajes de error se muestran mejor con el comando error. Manejo de Archivos .*--. pero además aborta la ejecucibn del programa. p En un fichero .m.m Ea ..DSIGI fb Cadenas de texto = a ----. 67 - DSI~~ o A & € .. La cadena de entrada debe ir entre comillas simples.

MATLAB 4.m b Mediante el operador ?'se pueden ejecutar comandos del A .l:extern:src yprime 70 .m.m únicamente en el directorio actual. Por ejemplo. ib Con delete se borran ficheros. lb Con chdir se puede cambiar de directorio.. b Mediante el comando dirse pueden listar los ficheros en el directorio actual.Manejo de ficheros . Ver help dbtype. .m se puede invocar el editor vi en un sistema UNIX: >> !vi statm FS Existe además un depurador de ficheros . ~b Mediante el comando what se pueden listar los ficheros . 69 '~"l - Manejo de ficheros . para editar un fichero .m >> dir _ ' ..& - ----- sistema sin necesidad de salir de MATCAB.2c.---- M-book M-book Help MATLAB MATLAB Help >> cd externlsrc MATLAB Notebook folder stdout README toolbox diary extem >> what M-files in the current directofy Macintosh HD:Mal.

.Obtención de Resultados.---- D S " ~ Ternporización y eficiencia p Existen dos medidas básicas para determinar la eficiencia d e un algoritmo: Número de operaciones en coma flotante (flops) y. tiempo transcurrido en la ejecuci6n del algoritmo. 72 .. . A -& -.

y despuds de la ejecución del algoritmo se invoca el comando: S> flops que devuelve el número de flops del algoritmo.5000 >> flops ans = 1000 74 . >> A=[1:1000]. . 73 DS~A b Ejemplo de flops.PSI~GI o % T e > . >> flops(0). Flops Para averiguar el número de flops de un algoritmo se utiliza en primer lugar el comando >> flops(0). que pone la variable flops a cero. A * . Flops ----- >> mean(A) ans = 500.

t ) en time tenemos el tiempo empleado en resolver el sistema. time = etime( clock. la función %time(12 . Para pararlo diary off. x = A\b.Q G S I o Tiempo A * - *---- tb Para medir el tiempo de ejecución de un algoritmo se uüliza la función clock. tb Ejemplo: >> t = clock. Por defecto se graba en el fichero d~ary. w Dados dos tiempos t i y 12. Para ponerlo en funcionamiento diary o diary on.. Devuelve el tiempo actual con una precisión de centésimas de segundos.ti ) devuelve el tiempo transcurrido entre ambos.. 76 ..-*-- fb diarylonloffl [fichero]: salva en un fichero la sesión de matlab a partlr de ese momento. DSUC/ o Comando Diary Y & & - .

es lo mismo que archivo(9 64): 77 ..9 64). FEVAL(F.331333333333338E+P00 1.se--&.23458-006 f o m t 1ong r r 1. u - Formato de salida -=*&---.000001234500000 format long e 1. f o m t short 1.' para que no sea así.m) entonces feval(F. . p El resultado de cualquier orden de asignación se muestra en la pantalla.psilci o feval .xn) evalúa esa funci6n con sus argumentos.3333E+000 1. a menos que usemos '.. Por ejemplo: F = 'archivo'..234500000000003E-006 fomat hex 3FF5555555555555 3EB4B6231AWFDZ71 78 . b feval: si F es una tira conteniendo el nombre de una función (que puede estar definida en un fichero .333333333333338 0. El formato numérico utilizado puede ser seleccionado de entre una serie de posibilidades.3333 0.0000 format short e r 1.xl. .

y) 80 . Dados dos vectores x e y. y = sin(x): plot(x. b Ejemplo: >> x = -4:.Gráficos OSA Gráficas planas C _ a - ----- ib Con el comando plot se pueden generar gráficas planas.01:4. el comando plot(x.y) abre una ventana y dibuja la gráfica de los elementos de x versus y.

5. plot(x.Z). y = exp(-x.01:1.5:.y) .".D S ~ ' Representación del seno 81 & E ? l % ¡ Gráficas planas Ejemplo: '>> x = -1.

xlabel etiqueta del eje de las x. title . pero esta escala se puede controlar mediante el comando axis. gtext texto introducido en coordenadas dadas. i b El comando grld dibuja una malla en el gráfico. ylabel texto introducido con el rat6n. e 4 . text - m Por defecto los ejes se autoescalan. etiqueta del eje de las y. DS%~ Curvas planas -. ib Otros comandos útiles son': titilo de la gráfica.--. T e z .. = ..~sid O Representación de la exponencial = .

'+') 85 L-r-T-* A - Múltiples gráficas planas .y2. plot(x.01:2'pi. .'--'.':'.DSI~ O Curvas planas & S ----- tt En una gráfica se pueden combinar distintos grafos de dos maneras: Con varios vectores en plot y con el comando hold -- tt Tambibn se puede cambiar el carácter para el trazo de la gráfica.y3. tt Ejemplo: >> x = 0:. yí = sin(x): y2 = sin(2'x): y3 = sin(4'x).x.yí .x.

. . i.. .. .1).1: Ventana gráfica f i g u r e Genera una ventana gráfica.: .. . si ya existe. f i g u r e (n) Genera la ventana gráfica número n. ' 1 Ventanas gráficas Al realizar un gráfico con MATLAB se abre automáticamente una ventana gráfico (figure) (ver figura 5. También se puede crear una ventana gráfica que no contenga ningún gráfico con la orden: Figura 5. close (n) Cierra i closa a i l Cierra todaa las ventanas grfficas. > .. . Para cerrar ventanas gráficas se utilizan las órdenes: m m i close Cierra la ventana gráfica activada.. a ventana gráfica número n.Capítulo 5 Gráficos 2D 5 . utilizando la orden: .. :. la activa. ~ Es posible borrar el contec!do de una ventana gffica sin cerrarla... .

. El orden en el que se escriben los símbolos dentro de S es indiferente. u p l o t (x. imprimir o guardar en un fichero m. Es la opción por defecto. 5. En S puede aparecer un símbolo de cada una de las columnas de la siguiente tabla. Es posible especificar menos de tres símboios en S.r c l f Borra el contenido de la ventana gráfica activada. Para superponer varios dibujos en la misma ventana gráfica se utilizan las órdenes: m hold on Mantiene activa la ventana gráfica actual. dimeosióu. por defecto.y.y ) Si x e y son números..).. Si x e y son matrices de la misma . el trazo continuo y no se utiliza marca para los puntos. . off r hoid Intercambia hoid on y hold Utilizando las opciones del menú de la ventana gráfica. y). dibuja un conjunto de Tantos por cada par de colu~~inas correspondientes. y = (yi. r hold off Cada grá6co se realiza en una ventana diferente. . los de la segunda la marca que se utiliza para seíialar cada punto y los de la tercera el tipo de trazo que se emplea para unir los diferentes puntos. encerrados entre apóstrofos: 1b g r c m y k v azul verde rojo cyan magenta amarillo negro blanco 1 .2 La orden p l o t La orden básica para trazar gráficos bidimensionales es p l o t . (x. Yn)} y los eulaza con segmentos. .. dibuja el conjunto de puntos {(q.x. .). . dibuja el punto de coordenadas cartesianas (x. o x + * S d v punto círculo aspa cruz asterisco cuadrado rombo triángulo (abajo) triángulo (arriba) tiiángulo (izquierda) triángulo (derecha) estrella 5 puntas estrella 6 puntas 1 - - : -- continuo discontinuo punto y guión discontinuo 1 Los símbolos de la primera columna especifican el color.. .). cuya sintaxis es: r p l o t (x. una figura se puede copiar. el color que se utiliza es el azul. . Si se trata de los vectores x = (xi.y) pero con las opciones especificadas en S. S) Hace lo mismo que plot (x . . Cada gráfico se realiza.y. y. Por defecto. en una ventana gráfica diferente. Este fichero contiene la información que permite reconstruir la figura cuando es ejecutado. . manteniéndola abierta.

LA ORDEN PLOT p 39 lot(xi. y . el dibujo se realiza con trazo continuo y un color distinto para cada gráfica.: EDU>>c l e a r .y) m EDUn subplot (3. l .Si..EDU>> subplot ( 3 .S) E D U n p l o t (x.5. se repiten cíclicamente. utilizando los siete primeros colores de la primera columna de la tabla.2 Repetir el ejemplo anterior realizando los gráficos en una misma ventano gráfica con tres subuentanas dispuestas verticalmente.y3. Ejemplo 5. 1) EDU>> subplot (3. 'r*') m a m . ' r * > ) I r * ' ) m SuLdivisi6n d e una ventana gráfica Una ventana gráñca se puede subdividir en varias más pequeñas con la orden: subplot (rn. . y .yl. y) m .enuna&maventanagráfica. Ejemplo 5.y) EDU>> figure(2) m EDU>> f igure(3) EDU>>plot(x. Si no se especifican los parámetros S. Sol.los gráficos definidos por las ternas (zi.n.x2. Si se necesitan más colores. clc EDUn plot(x.y) m EDU>> hold on a EDU>>p l o t ( x .'kp:> ) m EDU>> f i g u r e (4) m EDU>>p l o t (x.) Dibuja. c l c i-1 EDUH x=[i 3 41.. ~ y . m EDU>> p l o t (x.2) E D U plo<(x.y2.yi. en el orden señalado.> close a l 1 m EDU>> p l o t ( x . Si). y=C1 2 41..1.1 Observar el resultado de aplicnr las siguientes drdenes: EDU>> c i e a r .~3.S2. m FDU>>holdoff m EDU.p) Divide la ventana gráfica en m x n subventanas distribuidas en m filas y n columnas y coloca el gráfico actual en la ventana pésima.2.1.S3. contando de izquierda a derecha y de arriba abajo.y.

x.3 Gráficos de funciones en coordenadas cartesian5s Para dibujar la gráfica de una función de una variable y = f (z) en el intervalo [a.E D U n hold on E D U n hold of f EDU>> close If-j If-j plot(x. . EDU>> p l o t ( x .~l. -2) .: WU>> clear.. m y2=exp(-5*x.*sin(pi*x.~r*~.3]. t Se genera el vector y = (f (xi).que constituye la gráfica de f .-3) .'g+~) .3 Dibujar la gráfica de la función f (z) = Sol. (xnr f (S. m i+-I Ejemplo 5.y2. x .b. EDU>> yí=exp(-x. .. m m EDU. EDU>> p l o t (x. t Con p l o t (x..y) se dibuja el conjunto de puntos {(si. .4 Representar en una misma ventana gráfica las funciones f ( z ) = e-z2.n) o bien x=a:h:b.3.))}.: E~'JU>> ciear. clc EDu>>x=-2:0.1:2. . ( b ) La gráfica de f con asteriscos mjos y la de g con cruces verdes.b] se siguen los siguientes pasos: t Se genera un vector x = (a = z1.z2.y.f (si)):.. x=linupace (-3.f (zz). cic sen(rz3) en el intervalo [-3. = b) mediante x=linspace(a. Sol.. . (a) Con trazo continuo.. y) EDU>> close m EDU>>y-exp(-x. Ir*>) m 5..f (2.x. y l .400) . Ejemplo 5. g ( ~ = ) e-522 en el intervalo [-2. -2) .2].-2) .. y 2 ) EDU>> f i g u r e ( 2 ) a ~~~>>~¡ot(x.)) escribiendo y=f (x).

Esto es debido a que el programa no elige la raíz real de fi para x < O. x2=(0:0./x) . p l o t ( x ~ y 4 ) pause.EDU>> close a l 1 Ejemplo 5. close a l 1 x=linspace(-10.-(1/3)).Yi) subplot (2. . y4=x. close Advertencia: Al dibujar la gráñca de funciones en las que aparecen raíces de números negativos pueden presentarse dificultades.*sin(100. y) m m EDU>> close m (t>l se observa que el gráfico obtenido no es el que cabria esperar.5 Representar en cuatm subventanas de una misma ventana oráfica las oráficns de las funciones fi(x) = senx. c l c .10].2.Y2) subplot(2. ymaxl .3).'y') EDU>> close i-1 Jt>l Dibuja la función en el intenalo de variación de x Otia orden para dibujar la gráfica de una función es f p l o t . función puede ser una función predefinida. [xmin. También se pueden escribir las órdenes necesarias en un fichero m. y212. @ 1-1 EDU>>plot(xl.01:1).Ol:O). f 2 ( ~ = ) x + senx.: Se pueden escribir las órdenes en la ventana de comandos tal wmo se ha hecho en los ejemplos anteriores. con x E [-1. * 3 fplot('funcibn'. EDU>>yl=-((-x1) . cuya sintaxis es: e f p l o t ( ' f u n c i 6 n J . f3(x) = 1x1.2) plot(x. una funcióndefinida por e1 usuario en un fichero m o una cadena de caracteres que d e h a una función.10.2. En las órdenes anteriores. i ) . tal como se hace a continuación: c l e a r .y1. subplot (2. plot(x. en el intervalo [-10.) Para obtener la gráfica correcta de esta función se puede hacer el dibujo por tramos: EDu>> xl=(-1:O.4). EDU>> y=x.2. f4(x) = xsen($).1000) . Cxmin. si para dibujar la gráñca de la función f (x) = ?fi.y2. Y 3 ) subplot (2.1]. y2=x+sin(x) . Por ejemplo.01:1. con las opciones especificadas en S. Sol. yl=sin(x) . ~ l o t ( x . -1) dado. ymin. u ."(1/3). y+abs(x). m a r . escribimos EDu>>x=-í:0. (Toma una de las raíces imaginarias y representa su parte real.x2.2. EDU>> p l o t (x.-(1/3) . S) Dibuja la función en el intervaio de variación de x e y dados.

4 EDU>>c l e a r . EDU>> yí=iog(x) . c l c EDU>>fplot(Jx.100) .41) .y2) EDU>>r l a b e l ( > E j e X J ) EDU>>ylabel('Eje Y ' ) j F J EDUw g t e x t (>y. Sol. 1(eps para eviiar I ~ ( o ) ) mu>> plot(x. a ylabel( 'texto' Sitiia el texto al lado del eje y. g t e x t ( ' t e x t o J ) Permite situar el texto en un punto seleccionado con el ratón en un gráfico. Sol.6 Gráfica de la función f (x) = xsen(2) en el intervalo [-lo. 10).0.5.*sin(l. hacer tanteos en los intervalos de variación de x e y hasta obtener una gráfica mejomda.: 1 5.: EDUn c l e a r . > t e x t o ' ) Sitúa el texto en el punto ( x .Ejemplo 5.4.5.10. 101. c l c I-] EDU>>x=linspace (aps . e t e x t (I. Y) del gráfico.-0.x. y2=iog10 (x) . colocar el rótulo de cada función y dar título a la figum. Dependiendo del resultado obtenido. (Solo se puede utilizar en gráficos 2D.) * Ejemplo 5.7 Representar sobre los mismos ejes las gráficos de las funciones y = h ( x ) e y = log(x) en el intervalo [O./x)'. D U > >close j r l m Jr/ . EDUn close @ m Títulos. Poner etiquetas a los ejes.y. / x ) 'C-0. x l a b e l ( ' t e x t o ' ) Sitúa el texto al lado del eje x.C-10. * s i n ( l .yi.101) EDU>>f p l ~ t ( ~ x .0. etiquetas y textos MATLAB dispone de las siguientes órdenes para poner textos en un gráñco: t i t l e ( ' t e x t o J ) Sitúa el texto como título del gráñco en la parte superior del mismo.=log(x)> ) EDU>>title(>Gr&ficas l o g a r i t m i c a s ' ) .

8 Dibujar las gráficas de las funciones y = senx. zoom Conmuta entre on y of f . El siguiente ejemplo sugiere un procedimiento gráfico para determinar las coordenadas del punto de intersección de las curvas y = senx. ymax del gráfico actual. g r i d off Elimina la malla.5]. y = l n z utilizando algunas de las órdenes anteriores. a x i s xy Sitúa el origen de coordenadas cartesianas en la parte inferior izquierda del gráfico. q ejes en los valores actualm. a x i s on Coloca de nuevo las etiquetas. a x i s equai Obliga a usar el mismo factor de escala para ambos ejes. en general.0. a x i s off Elimina la malla y Ice ejes con sus etiquetas. xmax. g r i d on Dibuja una malta en un gráfico 2D ó 3D. a x i s square Convierte el rectánguio destinado a un grá6co en un cuadrado. Utilizar la orden grid pam estimar un intervalo en el que se encuentre el punto de intersección. Es la opción por defecto. Ejemplo 5. mi. Con la orden axrs para ver con mayor claridad la parte de la figum en la que se encuentra el punto de intersección. e zoom on Permite ampliar un grafito o una parte de él seleccionada con el ratón. Haciendo uso del zoom compmbar que las coordenadas del punto de intersección son (2. g r i d Conmuta entre on y o f f .218. y rejillas de los ejes.796). la escala no cambie. xmaz = max(x) e y libre. * e a x i s i j Sitúa el origen de coordenad:~cartesianas en la parte superior izquierda del gáfico. manipular de diversos modos sus ejes y ampliar una parte de la figura. manteniendo el título del gráfico y los textos situados en él con t e x t y g t e x t .5. ymin. a x i s Devuelve un vector de cuatro coordenadas. con los valores de xmin. Es la opción por defecto. a x i s auto Toma m i n = min(x). a x i s ( C d n xmax ymin ymaxl) Establece los valores mínimo y máximo para los ejes x e y en la figura actual. con lo que se pierde la igualdad de escala en ambos ejes y por tanto. y = l u z en el intervalo [-5. d e tal forma que al situar axiscaxis) Fija la escaia de l otro gráfico sobre los mismos ejes (con hold en on). a x i s normal Elimina las opciones square y equal. .5 Manipulaciones geométricas Las siguientes órdenes permiten situar una malla sobre el gráfico. e zoom off Desactiva el zoom. las figuras se deforman.

S ) Representa la curva r = r(a) en coordenadas polares con el tipo dc trazo y color dado por S. r .9 Representar la cuma -.6 Gráficos de curvas en paramétricas La orden p l o t permite dibujar una curva y dada por stis ecuaciones paramétricas. EDU>> b=log(a) . EDU>> y = e q ( .'z x(t) = e-% cos(t) y(t) = e-$ sen(t) Sol. r ) Representa la curva r = r(a) en coordenadas polares. EDU>> p l o t (x.01:80.l:S. m m m It>J EDU>> x=exp(-t/20) . y) EDU>>c l o s e a 5. 'a p o l a r ( a .*cos(t) . * s i n ( t ) .21) EDU>> c l o s e It<l m 5. y) EDU>>hold on m m m EDU>>a=eps:O.3. EDU>> y=sin(x) .b) EDU>> g r i d on EDU>> zoom on m m I r ( EDU>> axis(CO. EDU>> p l o t (x. cuyos posibles valores ya se han especificado al describir la ordcri p l o t . 80j EDU>>t=O:. Su sintaxis es: p o l a r ( a .-2.7 Gráficos en coordenadas polares La orden p o l a r permite representar grá6cas de funciones dadas en coordenadas polares.: EDU>>x=-5:. c l c 1 . EDU>> p l o t (a.: EDU>> c l e a r . Ejemplo 5.1:5. t E [O.t / 2 0 ) .44 Sol. .

r ) EDU>>r=4* (l+cos (a)) .n) Dibuja el histograma relativo al vector v utilizando n rectángulos verticales de igual base.10 Representar las cuntas EDU>> c l e a r .y) Dibuja el conjunto de puxitm ( z i . ~ i y ) une cada punto (círculo vacío) con el eje de abscisas mediante una línea vertical. m EDU>>r=sin(2*a) .r. > f i l l e d l ) Hace lo mismo pero representa los puntos con círculos ilenos. EDU>>p o l a r ( a .8. El funcionamiento de estas órdenes se muestra en el siguiente ejemplo. h i s t ( v . clc . c l c EDU>> a=O: O 1 :2*pi . s t a i r s c y ) Dibuja el gráfico escalonado relativo al vector y. Dibuja el gráñco escalonado relativo al vector y cuyos elementos son especificados a través del vector x. GRÁFICOS DE BARRAS E MSTOGRAMAS Ejemplo 5.8 Gráficos de barras e histogramas MATLAB dispone de los siguientes comandos que facilitan la generación de gráficos de barras e hitogramas de becuencias: e stom(x. s t e m ( x . e r s t a i r s (x.*cos(2*a) . e bar(x. Ejemplo 5.P d is k 3 bo 5. y) e hist (v) Dibuja el histdgrama relativo al vector u utilizando 10 rectángulos verticales de igual base. m EDU>>polar(a. h i s t (v.> r > ) EDUN ciose a m EDU>> title(JCARDIOIDE') 5. bar(y) Dibuja el gráfico de barras relativo al vector y.y) Dibuja el gráñco de barras relativo al vector y cuyos elementos se especifican a través del vector x.- . y .. x ) Dibuja el histograma relativo al vector v utilizando rectángulos verticales cuyas bases miden lo especificado en los elementos del vector x.11 EDU>>c l e a r . .

ver el ap6ndice B. l)..5. yi=CO O 1 11. close a l 1 'Para más información sobre el color. . .-3. que puede ser un carácter de la tabla de la sección 5. (2. l ) de color rojo y el rzctángulo de vértices (0.2.5:0. yz)..y. .~ 'rJ l .x e y son los vectore~ x = (xl.). x2= CO 2. . EDU>>h i s t (v.7. EDU>>x=-3.2. fill(~l. .C i ) . l). Los argumentos x e y pueden ser matrices. (El vector Cr g b l que define este color es [&. (2.5000) .71 mu>> y=C2.. .EDU>>x=C-l. pause. .. (xnryn).5. y = (yl.1:3.2) de color aguamarina.C2. . (2. 22.51 EDU>>stem(x. y2.13 Dibujar un pentágono regular de color verde. y2=[1 1 2 21. (0.: E n un fichero m Se escribe: c l e a r . Sol.) Sol. .O.9 Polígonos Para dibujar un polígono se utiliza la orden f i l l : f i l l ( x . Ejemplo 5. o un vector tr g bl en el que se especifican las cantidades de rojo. .anterior para cada una de las teruas (zi. %l.2 O] .). y 1.6.x2.12 Dibujar el rectúngulo de vérfices (0. El color de relleno se especifica con el paiámetro C.Ci . C1/127 1 221/255]) a x i s square.0).0). 1.) Hace lo mismo que la .: E n un fichero m se escribe: c l e a r .y2. . l). yl).x2.y2 . ( 0 . yi. en cuyo caso se representa un poiígono par cada par de columnas correspondientes. c l c . verde y azul mediante números entre O y 1'.x) EDU>>close 1+11] m m m m m 5.2).y.S. ' f i l l e d ' ) EDU>>bar(y) EDU>>s t a i r s ( y ) EDU>>v-randn(1. c l o s e Ejemplo 5. e f ill ( x l .4. (x2. C ) Dibuja el polígono de vértices (xi. . close a l 1 xl=CO 2 2 01. y . c l c . (2. .3.