Está en la página 1de 51

CURSO BSICO DE MATLAB

Dr. Ing. Marcos A. de Armas Teyra Centro de Estudios de Energa y Medioambiente Universidad de Cienfuegos

ndice 1 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 Introduccin. La Ventana de MATLAB Estructura de la Ayuda Comandos y sintaxis bsica Comandos de informacin general Comandos de administracin del espacio de trabajo Comandos y funciones de administracin Constantes y variables especiales Funciones matemticas Hiperblicas Complejas Estadsticas Operadores aritmticos y caracteres especiales Operadores lgicos y relacionales M-Files Temporizacin Control de la ejecucin y flujo de programas Formato de Salida Salvar una sesin de trabajo Trabajo con arreglos, matrices y vectores Definiciones Generacin de matrices Formacin de un vector fila Formacin de un vector columna Matrices elementales definidas en MATLAB Libretos o guiones (scripts M-Files) Funciones M-Files Sub funciones y funciones anidadas Crear nuevas funciones Funciones annimas Funcin funcin Que usar? Libretos o Funciones? Cadena de textos, entrada de datos y mensajes de errores Creacin de variables globales Lazos for y while 5 6 7 7 8 8 9 9 9

1.3.6 1.3.7 1.3.8 1.4 1.5 2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11

11 12 12 12 13 13 13 14 15 15 16 18 18 19 21 21 22 23 23 24 25
2

2.11.1 for 2.11.2l while Condiciones if y switch 2.12 2.12.1 if 2.12.2 swith Depurar y perfilar 2.13 Grficos 3 Grficos en dos dimensiones 3.1 Grficos tridimensionales 3.2 Ms sobre el comando plot 3.3 Salvar una figura 3.4 Publicacin de figuras 3.5 Subplot 3.6 Grficos de argumentos complejos 3.7 Mtodos numricos en MATLAB 4 Polinomios 4.1 Ms sobre ajustes de polinomios 4.2 Solucin de ecuaciones 4.3 Sistemas de ecuaciones lineales 4.4 Ecuaciones de regresin mltiple 4.5 4.5.1 Ecuaciones de regresin lineal mltiple 4.5.2 Ecuaciones de regresin polinmicas Estadstica en MATLAB 4. 6 Matemtica simblica 5 Creacin de variables simblicas 5.1 Creacin de funciones matemticas simblicas 5.2 Simulink 6 Creacin de un modelo 6.1 Subsistemas 6.2 Enmascarar un sistema 6.3 Otros bloques de inters 6.4

25 25 26 26 27 28 28 28 30 31 32 32 33 34 34 34 36 37 38 40 40 41 41 42 42 44 48 48 49 50 53

Introduccin: El propsito de este curso es realizar una conquista til, y en cierto grado especializada, de los fundamentos esenciales del MATLAB con el objetivo de lograr las habilidades suficientes para incursar con xito en este campo imprescindible del momento. MATLAB es un compendio computacional interdisciplinario en las ciencias, ingeniera y en las matemticas aplicadas, con un poderoso lenguaje de programacin, clculo y visualizacin que es comn emplearlo como herramienta de afinacin y validacin antes de que muchos algoritmos y modelos sean definitivamente depositados en un lenguaje comercial ms propio para un pblico general. Las aplicaciones tpicas de MATLAB incluyen: Matemticas y clculos Desarrollo de algoritmos Modelaje, simulacin y establecimiento de prototipos Anlisis de datos, exploracin y visualizacin Grficos cientficos y de ingeniera Desarrollo de aplicaciones, incluyendo la construccin de interfases grficas MATLAB aporta una gran capacidad para la investigacin, el desarrollo y el anlisis de sistemas. En cada versin MATLAB proporciona nuevos recursos y un escenario ms enriquecido. MATLAB posee una familia de aplicaciones especficas conocidas como toolboxes desarrolladas para estudios especializados que permiten resolver problemas diversos o muy particulares. Estas herramientas ocupan campos en redes neuronales, lgica difusa, algoritmos genticos, sistemas de control, lgebra financiera, procesamiento de imgenes y seales, fijacin de curvas, adquisicin de datos, y muchos otros que incrementarn la productividad para resolver problemas esenciales. Estas herramientas no son ms que funciones de MATLAB; M- Files que es posible enriquecer al crear funciones propias. MATLAB, por tradicin, responde a rdenes escritas en la lnea de comandos o desde archivos. Sin embargo, en las ltimas ediciones, se ha incrementado su accesibilidad desde interfases grficas con un elevado nivel de interactividad especialmente til para comenzar. Los comandos tienen la ventaja de facilitar la reproduccin y la repeticin de los resultados. MATLAB es relativamente sencillo de aprender y la mejor forma de lograrlo es pasar directamente a ejecutarlo. La formacin de variables en MATLAB se realiza con caracteres alfanumricos y cada variable debe estar definida antes de que pueda ser empleada. Cuando una expresin arroja un valor, ste se almacena en la variable ans la cual puede ser utilizada como cualquier otra variable. El mximo error, o la mxima precisin con que se trabaja en la aritmtica de punto flotante, lo da la variable eps. Una vez que las variables hayan

sido definidas, existen en el espacio de trabajo; workspace. La existencia de una variable en el espacio de trabajo permite ser empleada para mltiples objetivos. 1.1 La ventana de MATLAB Cuando se inicia MATLAB, se presenta una ventana de varios paneles que es posible personalizar mostrada en la Figura 1

Figura 1 Presentacin de MATLAB El panel fundamental, con un diseo de mayor rea, es la ventana de comandos (Command Windows). En ella se ordenan los comandos escritos a la derecha del prompt del sistema representado por el smbolo >>. Una vez escrita una orden, MATLAB la ejecuta tan slo al presionar la tecla de entrada; (enter). En la parte superior izquierda se encuentra la ventana del Directorio Actual (Current Directory). MATLAB slo reconoce los archivos existentes en el directorio en uso. Los comandos para trabajar sobre el directorio y la ruta (path), son cd, what, addpath y edithpath o escoger en el men archivo, establecer la ruta;

(File/set path). Mucho ms fcilmente se realiza seleccionando el directorio deseado en la pestaa grfica del directorio actual. Es posible adicionar archivos a un directorio. Aledao al Directorio Actual, est la pestaa del espacio de trabajo (Workspace) donde se muestra qu variables estn definidas y cierta informacin sobre su contenido. En la ventana inferior se muestra el Historial de Comandos (Command History) donde se registran las rdenes efectuadas en la ventana de comandos. El registro histrico de comandos es persistente y se mantiene en distintas sesiones de trabajo de modo que si es necesario, se puede copiar y archivar en un lugar apropiado. Presionando el botn inicio de MATLAB; (Start), se encuentran las herramientas de aplicaciones, el acceso a sus interfases grficas, la simulacin dinmica de sistemas, la conexin con la ayuda y otros temas que facilitan el trabajo en el ambiente de MATLAB. 1.2 Estructura de la Ayuda Una caracterstica especial e importante de MATLAB es el acceso en todo momento a la ayuda con una viabilidad extraordinaria. En ella se abordan todos los tpicos con ejemplos y demostraciones. Por esta razn, para iniciar el trabajo, es til conocer cmo est estructurada y qu posibilidades de ayuda brinda MATLAB. Existen dos niveles de ayuda: 1. Si se necesita una ayuda rpida durante la sintaxis de un comando, se puede escribir sobre la ventana de comandos la palabra help seguida del comando especfico que se desea investigar; por ejemplo help plot. Si slo se escribe la palabra help recibir como respuesta una lista de categoras de ayuda que contiene en el listado de todos los comandos. 2. Escribiendo doc seguido del nombre de un comando, recibir una ayuda ms general en una ventana adicional mucho ms elaborada e informativa que con la alternativa help. En el panel izquierdo se ver desplegado jerrquicamente toda la documentacin disponible. Si slo se escribe doc, o se selecciona help del men, acudir la ventana raz de la ayuda. Existen otros comandos de auxilio entre los que pueden mencionarse helpdesk que reporta una documentacin para la solucin de problemas en forma de un hipertexto comprensivo, lookfor para la bsqueda de M-files por palabras claves; info y support para informacin de MATLAB y MathWorks, etc que deben ser explorados en trabajo individual recurriendo al listado de categoras de comandos.

1.3 Comandos y sintaxis bsicas Una vez escrita una expresin vlida en la ventana de comandos y presionar la tecla de aceptacin; Intro, MATLAB la ejecuta de inmediato mostrando el resultado tal y como lo hace una calculadora. De hecho, en lo ms elemental, MATLAB puede ser utilizado como un calculador ordinario. Sin embargo, MATLAB es muy superior cuando se aborda como un compendio de operaciones sobre arreglos, matrices y vectores. Por esta razn, exige el conocimiento previo de los fundamentos bsicos del lgebra lineal y por su origen del idioma ingls. Las rdenes y sentencias en MATLAB se ejecutan mediante comandos de informacin, administracin, aritmticos, de control, etc. A continuacin se muestra un grupo de comandos considerados bsicos. Para una revisin mucho ms amplia y general de los comandos, se debe solicitar ayuda en help general. 1.3.1 Comandos de informacin General Comandos demo ver version Acciones Muestra todas las demostraciones que acompaan a la versin del MATLAB Da informacin sobre la versin de MATLAB, Simulink y las herramientas del sistema Muestra informacin sobre la versin en ejecucin de MATLAB

1.3.2 Comandos de administracin del espacio de trabajo. Comandos clc clear pack exist global help lookfor quit who whos load save recycle exit Limpia la ventana de comandos Elimina las variables en memoria Compacta la memoria del espacio de trabajo Chequea la existencia de una variable o archivo Declara globales a las variables Bsqueda de auxilio en una materia determinada Bsqueda por palabras claves Detiene el MATLAB Lista las variables Lista las variables con mayor informacin Carga las variables del espacio de trabajo desde un archivo Salva las variables del espacio de trabajo Brinda la opcin de mover los archivos borrados a una carpeta de reciclaje Salir del MATLAB
8

Acciones

1.3.3 Funciones y comandos de administracin Acciones what type open which inmem Realiza un listado de los archivos especficos en el directorio de MATLAB Lista los M-file Abre los archivos por extensin Localiza funciones y archivos Lista las funciones en memoria

1.3.4 Constantes y variables especiales Variables ans eps i,j inf NaN pi why Respuesta ms reciente Precisin de la notacin con punto flotante Unidad imaginaria
Infinito No es un nmero Nmero Respuesta breve 1

Interpretacin

1.3.5 Funciones Matemticas Exponenciales y Logartmicas


exp(x) log(x) Exponencial Logaritmo Natural

ex ln(x)
log10 ( x)
x
n

log10(x)
sqrt(x) nthroot(x)

Logaritmo base 10
Raz cuadrada

Raz n-sima de un nmero real Coseno inverso Seno inverso Tangente inversa Coseno Seno

Trigonomtricas

acos(x) asin(x) atan(x) cos(x) sin(x)

cos 1 ( x) sen 1 ( x)
tan 1 ( x)

cos(x)
sen(x)

tan(x) sec(x) csc(x)

Tangente Secante Cosecante

tan(x)
sec(x )

csc(x)
Hiperblicas

acosh(x) asinh(x) atanh(x) cosh(x) senh(x) tanh(x) sech(x) csch(x)

Coseno hiperblico inverso Seno hiperblico inverso Tangente hiperblica inversa Coseno hiperblico Seno hiperblico Tangente hiperblica Secante hiperblica Cosecante hiperblica

cosh 1 ( x) senh 1 ( x) tanh 1 ( x ) cosh(x )

senh(x)
tanh(x )

sec h( x)
csc h( x )

Complejas
abs(z) angle(z) conj(z) img(z) real(z) Valor absoluto
Z

ngulo de un nmero complejo Complejo conjugado de Z Valor imaginario de Z Valor real de Z

Estadsticas
erf(x) mean(x) median(x) std(x) Calcula el error de la funcin (x) Calcula el promedio Calcula la mediana Calcula la desviacin estndar

Operadores aritmticos y caracteres especiales + * .* ^ .^


Operador de adicin Operador de resta Operador de multiplicacin escalar y matricial Operador de multiplicacin de arreglos elemento a elemento Operador de potenciacin escalar y matricial Operador de potenciacin de arreglos elemento a elemento

10

/ \ ./ .\ . : ; , ( ), { } [] [,] [;] %
.' '

Operador de divisin derecha Operador de divisin izquierda Operador de divisin derecha de arreglos elemento a elemento Operador de divisin izquierda de arreglos elemento a elemento Punto decimal Genera elementos espaciados regularmente y representa filas o columnas completas Separador de columnas y evita desplegar, mostrar Separa elementos y argumentos en una fila Operador de continuacin de lnea Encierra argumentos de funciones e ndices de arreglos: supedita precedencia Encierra elementos de arreglos Concatenacin Horizontal Concatenacin vertical Establece un comentario Transpuesta Complejo conjugado transpuesta Asignacin

Operadores lgicos y relacionales ==


~= < > <= >= & P Igual a Desigual Menor que Mayor que Menor o igual que Mayor o igual que Operador lgico AND Operador lgico NOT Operador de elementos lgico OR Operador lgico EXCLUSIVE OR

|
xor

1.3.6 M-Files eval feval function global


Interpreta las cadenas que contienen expresiones de MATLAB Evala la funcin Crea un M-File definido para una funcin creada por el usuario Define variables globales

11

nargin nargout script

Nmero de argumentos de entrada a una funcin Nmero de argumentos de salida de una funcin Guin, Argumento M-File

1.3.7 Temporizacin cputime clock tic, toc


Tiempo en segundos de CPU Fecha y tiempo corriente como vector de datos Comenzar o detener un temporizador

1.3.8 Control de la ejecucin y flujo de programas break case else elseif end error for if otherwise return switch warning while
Termina la ejecucin de un lazo Brinda ejecucin en trayectorias alternas dentro de la estructura de switch Delinea bloques alternos de argumentos Ejecuta condicionalmente los argumentos Concluye los argumentos for, while e if Muestra mensajes de error Repite los argumentos un nmero especfico de veces Ejecuta los argumentos condicionalmente Establece partes de los argumentos de switch Regresa a la funcin invocada Dirige la ejecucin del programa comparando con expresiones de caso Muestra mensajes de alerta Repite los argumentos un nmero indefinido de veces

1.4 Formatos de salida Todos los clculos en MATLAB se realizan con doble precisin. El comando format puede utilizarse para hacer cambios en la forma de visualizacin de los resultados. Entre ellos se encuentran: Acciones format format short format long format short e format long e Format bank Format rat >> pi
12

Por defecto. Igual al short Formato de punto fijo a escala con 5 dgitos Formato de punto fijo a escala con 15 dgitos Formato de punto flotante con 5 dgitos Formato de punto flotante con 15 dgitos Formato fijo para dlares y cntimos Aproximacin por relaciones de nmeros

ans = 3.1416 >> format short; pi ans = 3.1416 >> format long; pi ans = 3.14159265358979 >> format short e;pi ans = 3.1416e+000 >> format long e; pi ans = 3.141592653589793e+000 >> format rat;pi ans = 355/113 1.5 Salvar una sesin de trabajo.
Cuando se abandona MATLAB, todas las variables que existen en el espacio de trabajo se pierden. Si se utiliza el comando save, las variables se almacenan en un archivo llamado matlab.mat. Una vez de nuevo dentro de MATLAB, el comando load reestablece el espacio de trabajo al estado anterior.

2 TRABAJO CON ARREGLOS, MATRICES Y VECTORES 2.1 Definiciones


Un arreglo es una coleccin ordenada de elementos identificados por subndices para los que MATLAB emplea nmeros integrales comenzando por el 1. La dimensin de un arreglo es el nmero de subndices necesarios para especificar un elemento. El tamao (size) de un arreglo es un listado del nmero de ndices mximo por dimensin. Una matriz es un arreglo bidimensional con reglas especiales para la adicin, multiplicacin, divisin, potenciacin y otras operaciones. Representa una transformacin matemtica lineal. Las dos dimensiones son denominadas filas y columnas. Un vector es una matriz para la cual una dimensin tiene solamente el ndice 1. Un vector fila tiene slo un fila y un vector columna slo una columna.

13

Aunque un arreglo es mucho ms general y menos matemtico que una matriz, los trminos se usan a veces de forma intercambiable. Algo ms: en MATLAB no existe realmente una distincin formal entre un escalar y una matriz de 11. Note que no existe un arreglo unidimensional en MATLAB. An los vectores son arreglos bidimensionales con una dimensin trivial.

2.1.1 Generacin de Matrices


Es posible introducir o generar matrices de diferente forma: Introducir una lista de elementos Cargarla desde datos externos Generarla a partir de funciones de construccin Crearla a partir de funciones propias en M-Files Para introducir una matriz como una lista de elementos, se deben seguir las convenciones bsicas siguientes: Encerrar entre corchetes; [ ] la lista de los elementos Separar los elementos de una fila con espacios en blanco o comas Usar el semicolon ; para indicar el fin de cada fila

Por ejemplo; Formacin de una Matriz cuadrada de 33


>> A = [1 2 3; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9

La dimensin de A es: >> ndims(A) ans = 2 El tamao de A es: >> size(A) ans = 3 3

14

2.1.2 Formacin de un vector fila:


>> B = [0 2 2] B= 0 2 2

2.1.3 Formacin de un vector columna:


>> C = [0;2;2] C= 0 2 2 Los arreglos y matrices pueden construirse de otros arreglos y matrices con la sola condicin de que sean compatibles: >> D = [A C] D= 1 2 3 0 4 5 6 2 7 8 9 2 >> E = [A B] ??? Error using ==> horzcat All matrices on a row in the bracketed expression must have the same number of rows. >> E = [A D] E= 1 2 3 4 5 6 7 8 9

1 4 7

2 5 8

3 6 9

0 2 2

En ocasiones es necesario acceder a uno o ms elementos de un arreglo o matriz. Para ello se utilizan los ndices dimensionales que identifican a cada elemento encerrado entre parntesis. El resultado es la extraccin del elemento o bloque indicado. Ejemplos: Extraccin del elemento perteneciente a la fila 1

columna 2 >> E(1,2)


15

ans = 2 Extraccin de un bloque que comprende los elementos de la fila 1 y 2 que ocupan las columnas 2 y 3 >> E(1:2,2:3) ans = 2 3 5 6 El operador colon (dos puntos); : , es muy importante en MATLAB. Con l se indica un intervalo de variacin entre dos valores: >> x = [1:10] x=1 2 3

10

En este caso se asume por defecto un intervalo de 1 entre los puntos. Para especificar un paso de 0.5 se tiene: x = [1:0.5:5] x= Columns 1 through 9 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

En una matriz o vector el operador : permite seleccionar una parte del mismo. As en el vector y se obtienen los elementos entre el 2 y el 5to. Lugar con la expresin: >> y = x(2:5) y = 1.5000 2.0000 2.5000 3.0000

2.1.4 Existen un grupo de matrices elementales definidas en MATLAB. Estas son:


zeros(x,y) ones(x,y) eye(x,y) repmat(x,y) rand(x,y) randn (x,y) linspace (x,y) logspace(x,y) Arreglo de ceros Arreglo de unos Matriz identidad Reproduce una matriz. Matriz de nmeros reproducidos de forma aleatoria Matriz de nmeros aleatorios distribuidos normalmente Vector linealmente espaciado vector con espaciamiento logartmico

meshgrid(x,y) Arreglos de x y y para grficos en 3D.

16

Informacin bsica sobre los arreglos matrices y vectores.


size(A) length(A) ndims(A) numel(A) disp(A) isempty(A) isequal(A) Tamao del arreglo Longitud o nmero de elementos de un vector. Nmero de dimensiones Nmero de elementos Mostrar la matriz o el texto Cierto si el arreglo est vaco Cierto si el arreglo es numricamente igual

Comandos bsicos de arreglos matrices y vectores


max(A) min(A) sum(A) prod(A) cat find end diag triu tril Arroja el elemento mximo Arroja el elemento mnimo Suma cada columna Producto de cada columna Concatena arreglos Encuentra los ndices de los elementos no nulos ltimo ndice Matriz diagonal y diagonal de una matriz Extraer la triangulacin superior Extraer la triangulacin inferior Vector espaciado regularmente e ndice dentro de una matriz

Aritmtica Matricial
dot cross Calcula el producto escalar Calcula el producto vectorial

Comandos matriciales para resolver ecuaciones lineales


det inv rank Calcula el determinante de un arreglo Determina el inverso de una matriz Determina el rango de una matriz

MATLAB posee, adems, un grupo de matrices especializadas para el trabajo en diferentes campos de la ciencia que pueden ser consultadas en la ayuda. Entre ellas la matriz de Hilbert, Pascal, Mgica, Wilkinson, Companion, Vandermonde, etc

17

2.2 Libretos o guiones (Script M-files)


Un libreto (script M-file) es un archivo externo a la lnea de comandos que contienen una secuencia de sentencias u rdenes ejecutables de MATLAB. Escribiendo el ttulo del archivo en la ventana de comandos se tiene acceso a la ejecucin y salidas correspondientes a este archivo. Por asignacin poseen la extensin .m debido a ello se llaman M-files. Estos ficheros no necesitan ser compilados y para ser ejecutados, se debe escribir su nombre en la lnea de comandos con la nica condicin de que se encuentre en la ruta; path, donde MATLAB busca y reconoce sus archivos. Su utilidad fundamental es automatizar los bloques de comandos en clculos que deben realizarse repetidamente y cuando se desea reproducir o interpretar el trabajo realizado en un momento posterior. Los libretos operan con las variables existentes en el espacio de trabajo o pueden crear nuevas que permanezcan y se empleen en futuros clculos. Los libretos pueden producir salidas grficas usando comandos como plot. Cualquier texto precedido del signo % en el inicio de un libreto se entiende como un comentario lo cual es til si se desea obtener informacin del archivo al escribir help seguido del nombre del archivo en cuestin en la lnea de comandos. Por ejemplo se ha creado el libreto trigonometrica.m con los comentarios y argumentos siguientes %Este archivo determina y grafica el %valor de la funcin % y = cos(x)+tan(x)/sin(x) x = (0:0.2:pi); y = cos(x)+tan(x)/sin(x); plot(x,y) En el prompt del MATLAB se escribe: >> help trigonometrica Este libreto determina y grafica el valor de la funcin y=cos(x)+tan(x)/sin(x)

Para ejecutarlo >> trigonometrica 2.3 Funciones M-files


Las funciones son M-files que extienden las capacidades de MATLAB. Comparadas con los libretos son mucho mejores para compartimentar las tareas. Cada funcin comienza con una lnea del tipo:

Function [out1,out2, out3] = nombrefuncin(ini1,ini2,ini3)


18

Las variables ini1,ini2,ini3, son las variables de entrada y las out1,out2,out3, son las variables de salida . Se pueden tener tantas funciones como se desee y llamarlas cuando se desee. La condicin para que sea reconocida una funcin es que sea guardada en un archivo con el mismo nombre declarado en la sintaxis; es decir: en un archivo nombrefuncin.m . Para ejecutarla slo es necesario escribir en la lnea de comandos su nombre al igual que en los libretos. Unas de las principales caractersticas de una funcin es el carcter local de sus variables. Cualquier argumento o variable creada durante la ejecucin de la funcin, son variables slo de esa funcin y poseen un espacio privado de trabajo. Por su parte las variables existentes en la lnea de comandos o workspace, no son reconocidas por la funcin. Como ejemplo se ha creado un archivo con una funcin llamada stat cuyo objetivo es determinar la media y la desviacin estndar de un vector x.

function [mean,stdev] = stat(x) x = [1:100] n = length(x); mean = sum(x) / n; stdev = sqrt(sum((x - mean).^2)/n);
Si durante la ejecucin de una funcin, se llaman otras funciones, cada una de stas establece su propio espacio de trabajo lo que permite crear programas complejos sin preocuparse por antagonismos en las variables mientras se conservan las pertenecientes al espacio de trabajo.

2.4 Subfunciones y funciones anidadas.


Un M-file puede tener definida ms de una funcin. La funcin principal al inicio del encabezamiento de la lnea define la funcin primaria. En el mismo archivo pueden existir subfunciones y funciones anidadas. Por ejemplo: Ahora se ha creado dentro del archivo stat.m una nueva expresin identificada con la palabra clave avg que es una subfuncin de la funcin stat(x) function [mean,stdev] = stat(x) x = [1:100]; n = length(x); mean = avg(x,n); stdev = sqrt(sum((x-avg(x,n)).^2)/n) end %stat (x)
19

function mean = avg(x,n) mean = sum(x)/n; end %avg (x,n) Las subfunciones no son visibles fuera del archivo donde han sido creadas por lo tanto no pueden ser llamadas desde la lnea de comandos. Cuando MATLAB no reconoce una funcin por su nombre, busca por un archivo con el mismo nombre. Si lo encuentra, lo compila en la memoria para uso subsiguiente. Cuando es llamada una funcin desde la lnea de comando o desde cualquier otro M-File, MATLAB analiza la funcin y la almacena en memoria. La funcin almacenada permanece en memoria hasta que sea limpiada con el comando clear o se abandone MATLAB. El argumento end es opcional si se tiene una sola funcin, pero es una buena idea cuando estn involucradas subfunciones y obligatorio cuando se usan funciones anidadas. Las funciones anidadas actan algo diferente. Ellas son definidas dentro del alcance de otra funcin y comparten el espacio de trabajo de la funcin receptora. Para escribir una funcin anidada, simplemente define la funcin dentro del cuerpo de otra funcin en un M-File. Se debe terminar la funcin anidada con un argumento final end. Por ejemplo:

function x = A(p1, p2) ... function y = B(p3) ... end ... end Ejemplo de ms de una funcin anidada dentro de A. function x = A(p1, p2) ... function y = B(p3) ... end function z = C(p4) ... end ... end

20

2.5 Crear nuevas funciones.


En MATLAB se pueden crear nuevas funciones si es conveniente. Por ejemplo: se desea definir una nueva funcin con nombre sincos(x) de forma tal que al invocarla en la lnea de comandos devuelva el resultado de la expresin correspondiente. Para ello se crea un archivo con extensin .m que contenga la definicin de la funcin y con un nombre que coincida con el nombre de la funcin. Para el caso sincos.m:

function[y]=sincos(x) y=cos(x)-2*sin(2*x-pi/3);
Se salva en el subdirectorio de trabajo con el nombre sincos y la extensin .m. Esta es la forma en la cual estn escritas las funciones en MATLAB. Note cmo no hay declaracin de variables, ni comandos de inicio o fin de programa.

2.6 Funciones annimas


En ocasiones se necesita definir una funcin temporalmente y evitar la edicin de un M-File. Para ello se utiliza la funcin annima que se puede construir desde la lnea de comandos o en una funcin M-File. Su sintaxis es:

fhandle = @(arglist) expr


El trmino expr representa el cuerpo; esto es: el cdigo que identifica la tarea principal que se debe ejecutar. A la izquierda est arglist, que es una lista de variables o argumentos de entrada separados por coma que deben pasar a la funcin. Estos dos componentes son similares a lo conocido en las funciones ya tratadas. El signo @ es un operador en MATLAB que construye un manejador de funciones. Crear un manejador de funciones proporciona un medio de invocar a la funcin annima. El signo @ es una parte requerida de una funcin annima. Ejemplo: La funcin annima sqrt calcula el cuadrado de un nmero. Cuando se llama a esta funcin, MATLAB le asigna el valor que posee a la variable x y lo usa para calcular el valor de la ecuacin x.^2:

>>sqrt = @(x) x.^2; >> sqrt(4) ans = 16 Tambin puede almacenarse la respuesta en una variable adicional

21

>> a=sqrt(4) a= 16

Ejemplo con dos entradas


La funcin annima siguiente emplea dos argumentos de entrada x, y. sumAxBy = @(x, y) (A*x + B*y); En la lnea de comandos se escribe: A=2; B=4; >> sumAxBy = @(x, y) (A*x + B*y); sumAxBy(2,2) ans = 12

2.7 Funcin funcin


Muchos problemas en el campo de la ciencia emplean o exigen operar con funciones; encontrar races, resolver ecuaciones diferenciales, optimizar o efectuar la integracin numrica, son slo algunos ejemplos citados. En determinados casos un problema complejo puede tratarse con una funcin que opere sobre determinada funcin. Este tipo de procedimiento MATLAB lo realiza con una funcin de funciones; function functions, que utiliza una o ms funciones como argumentos de entrada a una funcin, que va a ser evaluada para obtener los resultados deseados. La sintaxis, el objetivo y el contenido de estas funciones pueden verse al solicitar help funfun en la lnea de comandos. Una forma de realizar este procedimiento es mediante una funcin annima. Por ejemplo: La funcin fzero, encuentra la raz de una funcin escalar de una variable en la proximidad del punto declarado; Primeramente encuentra un intervalo conteniendo a x donde la funcin cambia de signo y a continuacin busca en ese intervalo el cero de la funcin. Su sintaxis es: x = fzero (fun, x0) La funcin fun acepta como parmetro de entrada valores de x reales escalares y retorna valores reales escalares de la funcin fun evaluada en el punto x. El valor que retorna fzero est en la proximidad donde fun cambia de signo si es continua o NaN si el proceso de bsqueda falla. Ejemplo: >> f=@(x) sin(x); >> fzero(f,2)

22

ans = 3.1416

Otro ejemplo:
La funcin x = fminbnd (fun, x1, x2) trata de encontrar un mnimo local de la funcin fun en el intervalo

x1 <= x <= x2.


>> f = @(x) 3*x^2+5*x-2; >> y = fminbnd (f, 2, 6) y= 2 >> y = fminbnd (f, -15, 6) y= -0.8333

2.8 Que utilizar? Libretos o funciones?


Los scripts o libretos son siempre interpretados y ejecutados lnea a lnea no importa el nmero de veces que sean llamados y, por supuesto, MATLAB emplea tiempo en ello. En contraste, las funciones son compiladas en memoria cuando se llaman por primera vez y si son necesaria llamarlas de nuevo, se esquiva ese paso. Por esta razn se recomienda realizar la programacin en trminos de funciones M-Files. Como regla prctica, los libretos se deben de llamar slo desde la lnea de comandos y no se deben llamar desde otro libreto.

2.9 Cadenas de textos, entrada de datos y mensajes de errores


Las cadenas de textos pueden introducirse en MATLAB al encerrar el grupo de palabras en simple comilla. Por ejemplo para asignarle a la variable s una cadena de texto se escribe:

s = Esto es una demostracin para establecer una cadena de texto Las cadenas de texto se muestran con el comando disp. Por ejemplo: >> disp(s) Esto es una demostracin para establecer una cadena de texto

23

Los mensajes de error se muestran ms adecuadamente con el comando error ya que cuando se sita en un M-File, se aborta la ejecucin del mismo. En un M-File, se puede actuar interactivamente para la entrada de datos con la funcin input. Por ejemplo: >> Pn = input ('Potencia nominal en kW, Pn= '); Potencia nominal en kW, Pn = En este caso se despliega un mensaje en el prompt y se realiza una pausa en la ejecucin del programa hasta que se introduzca el dato solicitado. Presionando la tecla de aceptacin, el dato se asigna a la variable solicitada y se contina la ejecucin del programa. Finalmente es necesario saber que en las funciones de MATLAB se pueden encontrar rdenes que son imposibles de ejecutar. En este caso se emite una seal de error desplegando un mensaje en la ventana de comandos, se detiene la ejecucin del programa y se ignoran los argumentos de salida de la funcin. Similar a un error es la seal de alerta (warning) la cual despliega un mensaje pero permite que la ejecucin contine. Es posible crear estas seales de alerta e incluso tener la capacidad de esquivar un error en una subrutina y continuar con un plan de contingencia usando los comandos try y catch. Con este objetivo se debe consultar la ayuda

2.10 Declaracin de variables globales


Cada funcin en MATLAB definida en un M-File posee sus propias variables locales las cuales son independientes de las variables de otra funcin y de las que se encuentran en el espacio de trabajo (workspace). Desde luego, si varias funciones y el espacio de trabajo declaran una variable en particular global, todos compartirn esa variable. Cualquier asignacin a esa variable, en cualquier funcin, est disponible a todas las otras funciones que la declaran global. Si la variable declarada global no existe en el momento que se ha declarado global, tomar por asignacin el valor de una matriz vaca. Si una variable con el mismo nombre que la variable global existe en el espacio de trabajo, MATLAB emite una alerta y cambia el valor de esa variable para que concuerde con la declarada global. Ejemplo:

global Vab Vbc Vca Ia Ib Ic Pt St FDVC ; declara globales esas 9 variables

24

2.11 Lazos for y while


Las condicionales en MATLAB operan de forma similar a como lo hacen en la mayora de los programas de computacin. Ellas son especialmente tiles cuando se desea repetir o desviar una seccin de clculos en dependencia de las condiciones en la rutina.

2.11.1 for
La instruccin for se utiliza para repetir un argumento un nmero especfico de veces. La sintaxis general es:

for variable = expresin argumento ... argumento end


Los valores de la expresin son almacenados uno a la vez en la variable mientras el siguiente argumento, hasta el ltimo, es ejecutado. En la prctica la expresin es casi siempre de la forma escalar : escalar. El alcance del argumento for se concluye con la orden end.

>> for x =1:4 y = 2*x end y= 2 y= 4 y= 6 y= 8 2.11.2 While while repite los argumentos un nmero indefinido de veces mientras se mantenga una condicin. Su sintaxis es: while expresin argumentos
25

end
Los argumentos son ejecutados mientras la expresin sea cierta. Por ejemplo, dado un nmero positivo x, se calcula y se muestra el menor nmero no negativo que cumple la relacin 2n +2n x

>> x = 16; n = 0; while 2^n +2*n < x n = n+1; end >> n n= 4 2.12 Condicionales if y switch
Cuando se necesita modificar la ejecucin de los argumentos en dependencia de las condiciones en la rutina, se utilizan comandos condicionales similares a los utilizados en otros lenguajes.

2.12.1 if
La forma ms simple de un argumento condicional if es:

if relacin argumento end


En este caso el argumento ser ejecutado slo si la relacin es cierta. Tambin es posible utilizar mltiples ramas como se muestra a continuacin: if x > 6 y = x^2 +3 elseif -1< x<6 y = 2*x^2+3*x-1

else y = 0.98 end


El condicionante if puede emplear operadores relacionales o funciones que retornen valores lgicos as como condicionantes lgicos combinados evaluados de izquierda a derecha. Por ejemplo:
26

if (length (x) > 4) & (x(3) = =2) argumento end


La sintaxis if / elseif se emplea cuando son dos o tres las opciones que presenta una condicional. Cuando existe un nmero mayor de opciones, se emplea switch

2.12.2 switch
El comando switch cambia o permuta entre varios casos de acuerdo a la expresin. La forma general de sintaxis es: switch switch_expr case case_expr, argumento case {case_expr1, case_expr2, case_expr3,...} argumento ...

otherwise argumento end


Los argumentos que siguen al primer caso son ejecutados si coinciden con la expresin de cambio declarada. Cuando la expresin de cambio se encuentra en un arreglo como en el segundo caso, el cambio se ejecuta si slo uno de los elementos del arreglo coincide con la expresin de cambio. Si ninguno coincide, se pasa a la opcin otherwise. Slo se ejecuta un caso y la ejecucin concluye con el argumento final end. Por ejemplo: >> x = 6; switch x case x > 2 disp ('bien') case x <2 disp ('mal')

otherwise x = 0.1 end x= 0.1000

27

2.13 Depurar y perfilar


Para depurar un programa que no corre, se pueden establecer puntos de rupturas breakpoints en una o ms funciones (Ver el men debut en el editor de M-Files). Cuando MATLAB alcanza un breakpoint, se detiene y permite inspeccionar y modificar las variables. La ejecucin se puede reiniciar normalmente o paso a paso. Para ms detalles solicitar help debug. Cuando un programa emplea ms tiempo que el necesario para ejecutarse, se puede optimizar su ejecucin. Es posible localizar las lneas retardadas con profiling que mantiene el control del tiempo empleado en cada lnea de cada funcin. Perfilar es tambin una va de determinar la dependencia de las funciones. Para introducirse se debe escribir en la lnea de comandos profile viewer.

3. Grficos
Una de las fortalezas de MATLAB es el tratamiento grfico. MATLAB posee control sobre todos los aspectos de un grfico adjudicndole poder, elegancia y disfrute en la ejecucin.

3.1 Grficos en dos dimensiones; x, y


Para desarrollar grficos en dos dimensiones MATLAB dispone de un comando fundamental denominado plot. Normalmente se utilizan segmentos de lnea para conectar los puntos correspondientes a los vectores de x, y. Existen coordenadas diversos recursos para resaltar o distinguir los pares ordenados de un grfico. Un ejemplo que se recomienda desarrollar en la ventana de comandos:

x=[-pi:0.1:pi]; y=cos(x) - 2*sin(2*x-pi/3); plot(x,y); xlabel('coordx'); ylabel('coordy'); title('funcin trigonomtrica');


28

grid on;
En la primera lnea se define el intervalo de variacin de las x, en la segunda se calcula la expresin de y a partir de las funcin trigonomtrica definida. En la tercera lnea el comando plot calcula y muestra la grfica de los pares (x, y). Los comandos xlabel , ylabel y title tienen como objetivo imprimir en el grfico el nombre que se le dar a los ejes x ,y y su ttulo. La funcin grid on activa una rejilla en el intervalo en que ha sido evaluada la funcin. La ayuda de MATLAB brinda ms posibilidades para cambiar el color de las lneas, marcar con puntos, cruces, crculos, etc los pares (x,y). Consulte la ayuda del MATLAB para ms posibilidades. Los comandos zoom y ginput permiten aproximar y precisar puntos sobre la grfica. Si se desean obtener varios grficos superpuestos (deben ser compatibles), se emplea el comando hold on Con la interfase grfica y los botones de la barra de men principal se pueden realizar diversas transformaciones y obtener una figura como la mostrada a la derecha. En el ejemplo a continuacin se muestra el trabajo con la herramienta de ploteo de MATLAB para graficar una variable existente en el espacio de trabajo; (workspace), vs una expresin escrita en el dilogo Add Data de Plot tools. Los pasos son:
1.- Se crea una variable en el espacio de

trabajo denominada x = -2*pi:pi/25:2*pi; 2.-Haciendo clic en el botn inicio en la ventana de MATLAB ir a MATLAB y hacer clik en la herramienta Plot tools. 3.- Hacer Click en 2D Axes en el panel de la Figure Palette. Una vez que aparezcan los ejes, se activa el botn de adicionar datos; Add Data, en el navegador de ploteo. Con esta accin se despliega la ventana para adicionar datos a los ejes; Add Data to Axes.

29

4.- Cuando el dialogo se despliega, se procede de la forma siguiente: a) Se selecciona el tipo de grfico que se desea en Plot Type; lineal, logartmico, semilogartmico, polar, etc. b) Se establece como fuente de datos el vector x declarado o existente en el espacio de trabajo. c) Se escribe en y la funcin que se desee. (Para el caso sin(x).^2. ) y se hace clic en aceptar; ok

MATLAB dibuja el grfico de sin(x).^2 vs. x.


Para agregar otro grfico sobre los mismos ejes se procede de la forma siguiente: 1.- Se hace click otra vez en Add Data y se especifican los datos a plotear: 2.- Se establece como fuente de datos el vector x existente en el espacio de trabajo. 3.- Se escribe en y la nueva funcin que se desee. (Para el caso sin(x). ^8. ) y se hace clic en aceptar; ok 4.- MATLAB dibuja el grfico de sin(x). ^8 vs x. 5.-Seleccione el ltimo grfico y establezca en el Plot Type del Property Editor el tipo de grfico que desea para esta segunda funcin Para acceder a todas las propiedades de la figura se visita el inspector.

3.2 Grficos tridimensionales


El primer paso para crear un grfico tridimensional es conformar una malla de puntos en el plano (x,y). Esos sern los puntos donde la funcin f ser evaluada para obtener las respuestas en la dimensin z. Un ejemplo: x = pi*(0:0.02:1); y = 2*x; [x,y] = meshgrid(x,y); surf(x,y,sin(x.^2+y)) Una vez que el grfico se ha creado, se utiliza el botn de rotacin de la figura para darle la vista que se desea ver en la pantalla.
30

Para adicionar el ttulo de la figura, de los ejes y las propiedades de stos, se utilizan las opciones de edicin grafica que proporciona la barra de men de la figura. La rotacin, el rotulado de ejes y el ttulo de la figura se han adicionado por este procedimiento y se muestra a la derecha.

3.3 Ms sobre el comando plot


En un grfico se pueden obtener diversos tipos de lneas, smbolos y colores con el comando plot(x,y,s) siendo s una cadena de caracteres compuestos por elementos de las columnas siguientes:

Estilos : -. (none)
slida con puntos punto y raya sin lnea -- guionada

Smbolo . o x + * s d v ^ < > p h


puntos crculos cruces ms estrellas cuadrados diamantes tringulos (hacia abajo) tringulos (hacia arriba) tringulos (a la izquierda) tringulos (a la derecha) pentagrama hexagrama

Color b g r c m y k azul verde rojo cianurado magenta amarillo negro

Por ejemplo plot(x,y,g+:) grafica con una lnea de cruces color verde en cada punto donde se han evaluado los datos. plot(x,y,bd) dibuja un diamante azul en cada punto pero sin lnea. El comando plot, si no especifica el color, toma por asignacin el azul para grficos de una lnea y en el caso de un grfico de mltiples lneas utiliza el ciclo de colores listado en la tabla. Si no se especifica el tipo de lnea, se usa una lnea slida. Si no se especifica el smbolo, no se emplea ninguno. Para ms informacin consultar help plot.

3.4 Salvando las figuras. En ocasiones sucede que una figura necesita ser modificada despus de su creacin. Aunque existen otros procedimientos para salvarla, en la barra de men de la figura; botn archivo; en save as, se salva como un

31

archivo del tipo *. fig con el nombre que se desee. Luego, con el comando; openfig myfig puede llamarse para efectuar las transformaciones o recrearla como se desee.

3.5 Publicacin de figuras


Existen tres cuestiones importantes que deben considerarse cuando se desea incluir algn grfico de MATLAB en un documento para su publicacin. El formato del archivo, el tamao y posicin y el color. Ayuda a comprender la importancia el hecho de que lo que desee ve en la pantalla no es exactamente lo que se obtiene en el papel porque MATLAB distorsiona los grficos dependiendo del dispositivo de salida. La gran diferencia en los formatos de los grficos est entre la seleccin de vector (representando las lneas en una imagen) y bitmap (una fotografa literal pxel a pxel). Bitmaps incluyendo GIF, JPEG, PNG, y TIFF, son apropiados para fotografas pero no para otras aplicaciones cientficas. Esos formatos fijan la resolucin de su imagen por siempre, mientras la resolucin de su pantalla, impresora y la impresora de la revista pueden ser todas muy diferentes. Los formatos vectoriales son usualmente una mejor opcin. Entre estos se encuentran EPS y WMF. La seleccin depende algo de su plataforma y procesador de palabras. Un problema comn con la publicacin de grficos en MATLAB es el tamao. Por asignacin, los grficos en MATLAB son hechos en 86 pulgadas sobre el papel. Esto es excesivo para muchas revistas y para uso privado. En estos casos se reescala la imagen. Desde luego, el proceso de reescalar reduce todo incluyendo el ancho de las lneas y el tamao del texto y el resultado puede ser difcil de leer. Para este procedimiento se sugiere reescalar el grfico antes de exportarlo. Para reescalar antes de exportar se puede utilizar la opcin de edicin grfica que proporciona la barra de men de la figura; Archivo / Page Setup. Muchas revistas no aceptan figuras a color. Las lneas coloreadas son convertidas automticamente a negro cuando se salvan en un formato sin color. De esta forma se deben distinguir las lneas por otras caractersticas tales como smbolos o estilo de lnea. La opcin Archivo/Export setup de la barra de men de la figura, brinda un procedimiento para introducir cambios en la apariencia incluyendo el tamao y color en diferentes contextos (imprimir, presentacin, etc.). Finalmente es una buena idea salvar la figura en formato *.fig para ser recreada y en formato EPS en el mismo directorio.

3.6 Subplot
El comando subplot permite desplegar varias figuras en la misma ventana o imprimirlas en la misma hoja de papel. La sintaxis:

32

subplot(m,n,p)
Tiene la funcin de crear una matriz de (m filasn columnas) de grficos numerados por filas comenzando por la primera fila y a continuacin la segunda fila, etc. Subplot selecciona el orden p para ubicarlo. Por ejemplo para plotear datos en cuatro regiones diferentes de una ventana de figuras: t=[-pi:0.1:pi]; [X,Y,Z]=cylinder(4*cos(t) - 2*sin(2*t-pi/3)); subplot(2,2,1) mesh(X) xlabel('X'); ylabel('Y'); zlabel('Z') title('Funcin muy especial'); subplot(2,2,2):mesh(Y) xlabel('X'); ylabel('Y'); zlabel('Z') subplot(2,2,3):mesh(Z) xlabel('X'); ylabel('Y'); zlabel('Z') subplot(2,2,4):mesh(X,Y,Z) xlabel('X'); ylabel('Y'); zlabel('Z') La posicin es:

subplot(2,2,1) subplot(2,2,2) subplot(2,2,3) subplot(2,2,4)


Con las opciones el men en la barra de la figura se puede modificar cada uno de los grficos obtenidos.

3.7 Grficos de argumentos complejos


Cuando los argumentos a graficar son complejos, la parte imaginaria es ignorada excepto cuando el ploteo se realiza sobre un argumento complejo simple z. Para este caso especial se grafica la parte real contra la imaginaria.

33

4 Mtodos numricos en MATLAB 4.1 Polinomios


La representacin de polinomios en MATLAB se realiza mediante la escritura del vector de sus coeficientes en potencias decrecientes. As el polinomio p ( x) = 2 x 2 + 3 x + 4 est dado por: x = [2,3,4]; Las races del polinomio se obtienen con la funcin roots roots(x) ans = -0.7500 + 1.1990i -0.7500 - 1.1990i Para el trabajo con polinomios existen un grupo de comandos con funciones especficas. Estos son:

poly
El comando poly(x), cuando x es el vector de las races del polinomio, arroja como respuesta un vector cuyos elementos son los coeficientes del polinomio original con las races x. Si roots encuentra las races, poly encuentra el polinomio que posee determinadas races. roots y poly son funciones inversas para vectores. Para evaluar un polinomio en varios puntos se emplea la funcin polyval. x = [0:.1:2]; a = [3,4,5]; y = polyval(a,x); plot(polyval(a,x),'r') Una cuestin que puede resultar importante en el trabajo con polinomios es el ajuste de un conjunto de datos experimentales (x, y) a un polinomio de cierto grado segn el criterio de los mnimos cuadrados. Esto se realiza con polyfit. Ejemplo: Dado un conjunto de datos: x = [ 1 2 3 4 5]; y = [ 3.5 8.9 19 30.6 49.3]; >> b= polyfit(x,y,2); >> plot(x,y,'r+') hold on
34

plot(polyval(b,x)) El polinomio de grado 2 que se ajusta por mnimos cuadrados es:

b= polyfit(x,y,2) b =[2.0071 -0.7129 2.3200]


Las ltimas rdenes se han dado para graficar los puntos experimentales y el resultado de la ecuacin de ajuste con la intencin de comprobar visualmente la aproximacin La interpolacin es el proceso matemtico mediante el cual a partir de un conjunto de puntos discretos de una funcin es posible estimar sus valores en el intervalo. Existen diversas funciones en MATLAB que permiten realizar estos clculos. Una de ellas es interp1 que realiza una interpolacin lineal por el mtodo de los mnimos cuadrados. Como ejemplo se toma el conjunto de pares ordenados de resistencia y temperatura de un termopar con los valores siguientes:

R= [77.8

79.75 80.8 82.35 83.9 85.1] 45.2 50.5]

T= [25.1 30.1 36.0 40.1

Para determinar la temperatura en un punto intermedio de la tabla, por ejemplo 27.5 se procede:

Rt = interp1(T,R,26.5) Rt = 78.3460
El resultado corresponde a la interpolacin lineal entre los dos primeros pares de los vectores T y R. Existen otros mtodos de interpolacin que deben ser revisados consultando las posibilidades de ayuda de MATLAB. Los polinomios pueden ser derivados e integrados con los comandos polyder y polyint.

4.2 Ms sobre polinomios.

el

ajuste

con

Un ejemplo de interfase grfica es polytool. Considrese el conjunto de datos siguiente: y = [.5 .82 1.14 1.25 1.35 1.40] x= [0 0.3000 0.8000 1.1000 1.6000 2.3000]

polytool (x,y) ajusta el polinomio a los pares (x,y) y despliega un grfico interactivo.

35

polytool(x,y,n,alpha) predice una grfica que responde a un polinomio de orden n en los puntos (x,y) y adicionalmente indica el intervalo de confidencial 100(1-alpha) en forma de dos lneas de color rojo. El valor por asignacin de n es 1 y el de alpha es 0.05. Para ms informacin consulte la ayuda help polytool 4.3 Solucin de Ecuaciones.
Una de las formas en que MATLAB resuelve ecuaciones es con el empleo de las funciones: fzero, fplot, quad y quad8 que permiten hallar los ceros, graficar y realizar la integracin numrica de funciones no lineales. Considere el clculo de los ceros empleando la funcin fzero de la funcin:
y ( x) x
2

1 5.x 6

Primero se edita un archivo M-file que denote la funcin, denominado fun1. Para graficar este tipo de funciones se puede usar la funcin fplot. A la izquierda se muestra el resultado de plotear fun1 en el intervalo de 0 a 5. Donde se nota que la funcin se indefine en dos puntos y tiene dos ceros en 1.62 y 3.37. Los ceros se obtienen llamando a la funcin de la forma siguiente:

Fun1(x) 10

0 y -5

-10

-15 0 0.5 1 1.5 2 2.5 x 3 3.5 4 4.5 5

cero1=fzero('fun1',0) cero1 =1.6340 cero2=fzero('fun1',3.2) cero2 = 3.3660

Es posible calcular la integral numrica de la funcin fun1 entre dos puntos, con la funcin quad. Para ello se escogen valores donde no se indefine la funcin:

area=quad('fun1',2.1,2.9) area = -5.9945


4.4 Sistemas de ecuaciones lineales. Para la solucin de sistemas de ecuaciones lineales se emplea el lgebra lineal. El sistema de ecuaciones lineales:
36

x1 + x2 + 2 x3 = -1 2x1 - x2 + 2x3 = -4 4x1 + x2 + 4x3 = -3 Es posible representarlo por la matriz A de los coeficientes de las incgnitas y el vector columna b de los trminos independientes: Ax=b A = [1 1 2; 2 -1 2; 4 1 4]

A= 1 2 4

1 -1 1

2 2 4

b = [-1 -4 -3]' b= -1 -4 -3 Para que el sistema tenga solucin, el determinante debe ser no singular. Esto se comprueba con la funcin

det. det(A) ans = 6 Una solucin del sistema se obtiene al emplear el mtodo de Kramer, donde x1 se obtiene al sustituir en la matriz original la columna 1 por el vector columna del trmino independiente y efectuar la divisin entre los determinantes correspondientes: A1 = -1 -4 -2 1 -1 1 2 2 4

x1=det(A1)/det(A)

37

x1 = 1
Y as sucesivamente para cada variable. Sin embargo esto es posible hacerlo en forma directa con el operador \ . Obteniendo directamente el vector x de las incgnitas:
x= A \ b x= 1 2 -2

Tambin puede implementarse el mtodo de eliminacin de Gauss o factorizacin LU, que expresa que cualquier matriz cuadrada se puede descomponer en el producto de dos matrices L y U triangulares, una L triangular inferior permutada y otra U triangular superior. Esto se calcula con la funcin lu.

[L, U] = lu(A) L= 0.2500 -0.5000 0.5000 1.0000 1.0000 0

1.0000 0 0

U= 4.0000 1.0000 4.0000 0 -1.5000 0 0 0 1.0000 L*U ans = 1 1 2 -1 4 1

2 2 4

Permitiendo calcular x ms eficientemente mediante:

x = U \ (L \ b) x= 1
38

2 -2

4.5 Regresin Lineal Mltiple


El propsito de una ecuacin de regresin lineal mltiple es establecer una relacin cuantitativa entre un grupo de variables de prediccin insertadas por columna X y la respuesta Y. Esta relacin es til para: 1.- Conocer que variables poseen el mayor efecto sobre la respuesta Y 2.- Conocer la direccin de ese efecto. 3.- Usar el modelo para predecir valores futuros cuando slo se conocen o planifican los valores predictores

4.5.1 Ecuaciones de regresin lineal mltiple


Si Y es una funcin de varias variables independientes X, es posible encontrar los coeficientes que afectan cada variable para determinar la ecuacin general que caracteriza al sistema. Por ejemplo: Sean MP, P y B los vectores columnas de las variables independientes que determinan el consumo de energa elctrica; MWh, de una empresa. En este caso la ecuacin de regresin lineal estara dada por: Electrica = Kowh + K1wh*MP + K2wh*P + K3wh*B El problema se resuelve al determinar los coeficientes Kiwh para lo cual se emplea la sintaxis:

X = [ones(size(MP)) MP P B]; Kiwh=X\MWh;


Quedando definida la funcin al conocer cada uno de los coeficientes KowhKiwh.

4.5.2 Ecuacin de regresin polinmica


Basado en la experiencia o en la observacin grfica, es posible que los datos sean modelados por una funcin polinmica. Los coeficientes desconocidos a0, a1, y a2 pueden determinarse mediante mnimos cuadrados lo cual minimiza la suma de los cuadrados de las desviaciones experimentales de los obtenidos por el modelo.
y = a
0

+ a 1t + a 2 t

39

2 y1 1 t1 t1 y 1 t t 2 2 2 2 2 a0 y3 1 t 3 t 3 = 1 t t 2 * a1 y 4 4 4 2 a 2 y5 1 t 5 t 5 y 6 1 t 6 t 6 2

X = [ones(size(t)) t t.^2] a = X\y


4.6 Estadstica en MATLAB.

Existe un paquete de funciones de estadstica muy fuerte que pueden observarse al consultar la documentacin estadstica de MATLAB. Las funciones de uso ms frecuente mean [promedio], median [mediana], range [rango], std [desviacin estandard] y var [varianza] se implementan fcilmente. Finalmente la interfase grfica disttool posibilita trabajar con las funciones de distribucin ms importantes.
5 MATEMATICA SIMBOLICA. 5.1 Creacin de variables y expresiones simblicas

En matemtica simblica los resultados obtenidos no son numricos sino smbolos que siguen las mismas convenciones que diaria y normalmente son empleadas en el algebra. Para que MATLAB reconozca las variables simblicas stas deben primeramente ser declaradas. Para ello se utilizan los comandos sym o
syms. syms x a b c (a+b)^2 ans = (a+b)^2 expand(ans) ans = a^2+2*a*b+b^2

Despus de declaradas las variables simblicas a y b, se puede obtener el binomio cuadrado perfecto resolviendo la factorizacin con expand. El comando factor efecta el proceso inverso. En matemtica simblica es posible definir funciones y calcular sus derivadas.
40

y = sin(a*x+b) y= sin(a*x+b) dydx=diff(y) dydx = cos(a*x+b)*a

Calcula la derivada respecto a x

Si se desea darles valores a los coeficientes, se emplea la funcin subs.


subs(dydx,{a b},{2 pi/2}) Indicndose la sustitucin de los parmetros a y b por los valores 2 y pi/2. ans = -2*sin(2*x)

El comando sym permite construir variables y expresiones simblicas con el objetivo de efectuar operaciones con ella. Por ejemplo el comando m = sym(sqrt(cosfi^2 + 2*senfi)) declara a m una variable simblica que representa a una expresin. Ahora es posible efectuar operaciones con esa variable que representa la expresin.
f = 2*m^2 3*m +1

En general se puede usar sym o syms para crear variables simblicas. Es preferible usar syms ya que requiere menos escritura. Debe notarse que para declarar una constante como variable simblica, es necesario utilizar el comando sym. Si se utiliza una variable para representar una expresin simblica, y se vuelve a aplicar el comando syms a esta variable, MATLAB actualiza y desconoce las variables previamente declaradas. Por ejemplo: syms a b f=a+b f= a+b Si de Nuevo se declara syms f MATLAB arroja f= f Esto muestra la utilidad de emplear el comando syms para limpiar variables o definiciones previamente asignadas en una sesin de MATLAB. El comando findsym determina las variables simblicas en una expresin. Por ejemplo dadas las expresiones simblicas f y g definidas por syms a b n t x z
41

f = x^n; g = sin(a*t + b); es posible encontrar las variables simblicas en f entrando: findsym(f) ans = n, x Similarmente se encuentran las de g: findsym(g) ans = a, b, t Con el comando subs se le dan valores numricos a una variable simblica. Por ejemplo para sustituir el valor de x =2 en la expresin simblica f = 2*x^2 - 3*x + 1 Se entra el comando subs(f,2) Que arroja el resultado f(2): ans = 3 Para sustituir una matriz A en la expresin simblica f, se usa el comando polyvalm(sym2poly(f), A), que reemplaza x por A y el trmino constante f por la matriz identidad correspondiente. Cuando las expresiones contienen ms de una variable, se puede especificar que variable es la que se desea sustituir. Por ejemplo: Para sustituir el valor x = 3 en la expresin simblica syms x y f = x^2*y + 5*x*sqrt(y) se introduce el comando subs(f, x, 3) lo que arroja ans = 9*y+15*y^(1/2) De otra parte, para sustituir y = 3, se introduce subs(f, y, 3) ans = 3*x^2+5*x*3^(1/2)
5.2 Creacin de funciones matemticas simblicas

Existen dos vas para crear funciones: Usar expresiones simblicas o crear un M-File usando expresiones simblicas. La secuencia de comandos para generar las expresiones simblicas r, t y f. son: syms x y z r = sqrt(x^2 + y^2 + z^2) t = atan(y/x) f = sin(x*y)/(x*y)
42

Utilizando los comandos diff, int, subs, y otras funciones existentes en la caja de herramientas de Matemtica Simblica (Symbolic Math Toolbox ) , se pueden manipular tales expresiones. Creando un MFile es posible un uso ms general. Por ejemplo: se desea crear la funcin sinc; sin(x)/x. Para hacer esto se crea un M-file en el directorio @sym: function z = sinc(x) %sinc la funcin simblica sinc % sin(x)/x. esta funcin acepta sym como el argumento de entrada if isequal(x,sym(0)) z = 1; else z = sin(x)/x; end Es posible extender estos ejemplos a funciones de varias variables. Para ello se recomienda solicitar la ayuda, ver los aspectos de Programming and Data Types en la documentacin en lnea de MATLAB o para una discusin ms detallada, revisar la programacin orientada por objeto. Para resolver ecuaciones algebraicas, se utiliza la funcin simblica solve. Por ejemplo para resolver la ecuacin de segundo grado:
syms x a b c y=a*x^2+b*x+c y= a*x^2+b*x+c solve(y) ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

% Se declaran las variables %Definicin de la funcin

% Bsqueda de la solucin simblica % Resultado

Si se desea resolver una ecuacin trascendente como: e x = x + 1.5 Se utiliza la sintaxis:


sol = solve( 'x+1.5=exp(x)' );] double(sol) ans = -1.1983 0.8577

43

Es posible comprobar el resultado grficamente pero tambin en el ambiente simblico, empleando el comando ezplot. Intente obtener el siguiente grfico con dicho comando, consulte la ayuda correspondiente. Para resolver sistemas de ecuaciones se emplea exp(x) tambin solve. Supngase que se necesita calcular: 6
5 4 3 2 1 0 -1 -2 -3 -4

3 x1 + 2 x 2 = 1 x1 0.3 x 2 = 1 La solucin se obtiene en una sintaxis de dos cadenas; una para cada ecuacin: [x1,x2] = solve ('3*x1+2*x2=1','x1-0.3*x2=-1') x1 = -.5862068965 x2 = 1.3793103448 -1 -0.5 0 0.5 1 1.5 x Para resolver ecuaciones diferenciales ordinarias, se emplea el comando dsolve. La sintaxis es muy similar a solve, donde se emplean los smbolos Dy , D2y etc, para representar las derivadas de primer orden y segundo orden dy/dx, dy2 / dx2 respectivamente. En este ejemplo:

d ( y) = 1+ y2 y(0) = 1 condicin inicial. dx La solucin se calcula como:


y= dsolve('Dy=1+y^2','y(0)=1') y= tan(t+1/4*pi) Note que la solucin es una funcin .
tan(t+1/4*pi) 6

-2

-4

-6 -6 -4 -2 0 t 2 4 6

Se puede calcular el rea bajo la curva de dicha funcin; por ejemplo en el intervalo entre [-2 , 0 ] con la funcin simblica: int(y,-2,0) ans = -1/2*log(1+tan(2)^2)+log(-1-tan(2)) double(ans) ans = -0.7069

44

Otros comandos importantes en Matemtica Simblica son collect, horner, simplify y simple. Analice los ejemplos mostrados y consulte la ayuda para ms informacin. Para polinomios, collect, reagrupa todos los coeficientes con la misma potencia de x:
y=(x-1)*(x-1/2)*(x+5); collect(y) ans = x^3+7/2*x^2-7*x+5/2 horner(ans) Resuelve segn el esquema de Horner ans = 5/2+(-7+(7/2+x)*x)*x Simplify y simple son potentes herramientas algebraicas.
simplify(log(x*y)) ans = log(x*y)

simplify( cos(x)^2+ sin(x)^2); ans= 1 En Matemtica simblica se puede trabajar con las transformadas de laplace, fourier con las funciones simblicas correspondientes: f =exp(-x^2) fourier(f) ans = pi^(1/2)*exp(-1/4*w^2) Compruebe finalmente el empleo la funcin funtool en variable simblica como un calculador de funciones. Consulte la ayuda. 6.- SIMULINK

Simulink es un software especializado para modelar, simular y analizar sistemas dinmicos lineales o no lineales. En su ambiente es posible construir modelos propios o simular y modificar modelos existentes mediante la adicin de nuevos elementos. Las simulaciones son interactivas de modo que permite cambiar los parmetros y observar que sucede a la vez que brinda acceso a todas las herramientas de anlisis de MATLAB, para visualizar y analizar los resultados. Un objetivo de Simulink es dar sentido funcional a la simulacin de modo que, realizando sta, es posible ver que sucede antes de que un modelo sea llevado a la realidad. Simulink permite sobrepasar los lmites de la linealizacin y explorar otros modelos ms reales. En resumen, la meta principal es convertir su PC en un laboratorio para desarrollar ideas que amplen todo tipo de posibilidad.

45

6.1 Creacin de un modelo.

Para crear un modelo simplemente se busca el bloque de inters en cualesquiera de las bibliotecas bsicas del ambiente Simulink ( Sources, Sinks, Linear, Nonlinear, Discrete, Connections y Blocksets & Toolboxes. Como indicaciones generales la biblioteca Source define los tipos de estmulo o seales, Sink brinda los bloques de visualizacin y Connections, los elementos o bloques en las conexiones. Consulte la ayuda para una descripcin ms detallada de las mismas

Para tomar un bloque de una biblioteca en particular, solo es necesario indicarlo con el botn izquierdo del mouse y arrastrarlo hacia la ventana del Simulink y liberarlo. As se procede con todos los bloques necesarios. Otras operaciones con los bloques son:

Conectar bloques entre si: posesionar el cursor sobre el terminal de salida del bloque origen, hacer click y enlazar con el terminal de entrada correspondiente del bloque destino. Dibujar una rama: posesionar en la lnea y presionar CTRL. Mover lnea: marcarla y arrastrarla. Crear un vrtice en lnea: marcarla y presionar SHIFT. Ancho de lnea con format. Etiquetas en lneas: doble click sobre la lnea. Etiqueta en la ventana: doble click en el lugar de inters. Seleccionar bloques: click. Si son mltiples, adicionar SHIFT. Copiar un bloque (duplicarlo). Marcarlo, apretar CTRL y arrastrar. Cambiar orientacin del bloque: con format ( flip-block y rotate). Cambiar tamao de bloque: marcar y ampliar esquinas. Cambiar nombre del bloque: marcar en el nombre y escribir. Especificar parmetros del bloque: como corresponda segn la ventana del bloque.

46

Como ejercicio dibuje el sistema de la figura: Practique las principales operaciones sobre el sistema descritas anteriormente. Establezca una seal de amplitud 1 y frecuencia angular 1, continua. Salve el modelo con un nombre en el directorio de trabajo y ajuste los parmetros de la simulacin en el men <Simulation\ Parameters> en particular el tiempo de simulacin e inicie la simulacin con <Simulation \ Start>. Para ver los resultados de la simulacin, doble click en el osciloscopio.
6.2 Subsistemas.

El concepto de subsistemas es equivalente al de una subrutina o funcin en lenguajes de programacin. As cuando se tiene un sistema complejo con muchos componentes es ms conveniente agruparlos en subsistemas, los cuales simplifican el nmero de bloques en el diagrama de trabajo y se establece as una jerarqua de niveles pues se pueden crear subsistemas dentro de otros subsistemas. Es posible poner a punto el programa total ajustando cada uno de sus partes independientemente. Hay dos formas bsicas de crear subsistemas:

Agrupando los bloques de inters dentro del diagrama de trabajo y crear un subsistema con estos. Definiendo a priori un subsistema y creando sus componentes dentro del mismo.

El bloque para crear un subsistema se encuentra en la biblioteca < connections>, adems deben de usarse los bloques <in > <out > dentro de esa misma biblioteca que definen las entradas y salida al bloque del subsistema. En el ejemplo anterior, se crear un subsistema con los bloques que actan sobre la seal. Para proceder a crear el subsistema a partir de bloques ya construidos, basta con agruparlos, marcarlos e ir al men EDIT/ create subsystems el cual es activado al marcar. Abra el subsistema creado y note cmo automticamente se
47

han aadido los puertos <in > <out > que definen la entradas y salidas del subsistema. Para crear el subsistema a partir de cero, copie el bloque <subsysms> , abra el mismo, copie los componentes necesarios incluyendo los puertos de entrada y salida.

6.3 Enmascarar un subsistema.

Puede ser conveniente que un determinado subsistema, definido por un conjunto de parmetros, permita modificarlos sin tener que acceder al interior del mismo. Mediante una mscara el subsistema se representa por un icono grfico, y al acceder a ste aparece un cuadro de dilogo donde se especifican los parmetros particulares en la aplicacin. La mayora de los bloques del Simulink en las distintas bibliotecas estn construidos de esta forma.

En este ejemplo se quiere construir un nuevo bloque que modele a una termo resistencia, de acuerdo a los parmetros de la ecuacin fundamental de la misma: r (t ) = r0 (1 * t )

48

Donde ro es la resistencia a la temperatura de referencia, usualmente cero grados y alfa es el coeficiente de sensibilidad de la termoresistencia, que expresa cuantos Ohms se varan por grado de temperatura. Si se hace doble click en el bloque en cuestin, no aparece el contenido del bloque sino el cuadro de dilogo siguiente. En este dilogo aparecen los dos parmetros que definen a la termoresistencia los cuales deben ser especificados convenientemente. Adicionalmente aparece una informacin sobre el objetivo del bloque. A este procedimiento, que sustituye el modelo de un subsistema, por un bloque con parmetros a variar, se le denomina enmascarar el bloque. Para ver como se ha constituido el bloque, marcar en el men de comandos de <EDIT/ look_under mask> y aparece el bloque original que ha dado origen a la mscara.

Ntese que hay dos bloques que definen los parmetros en cuestin, los dos bloques de ganancia denominados ALFA y RO. Los pasos para enmascarar un bloque son los siguientes:

Dibujar el bloque Marcar bloque , activar el editor de mscaras con < EDIT/ edit mask> Completar el cuadro inicializacin. Completar el cuadro documentacin. Completar el cuadro icono.
49

Estos cuadros definen los parmetros del sistema, la ayuda del mismo y la forma del icono grfico que va a representar el sistema. En este cuadro se escribe la informacin que va a efectuar la descripcin del bloque en la mscara y la que brindar una ayuda de como operar el bloque. En este men se indican los nombres que van a tener las variables asignadas en el texto de la mscara, en este caso SENSE y ALFA, las cuales se corresponden con las variables ALFA y R0 del modelo. Defina como tipo de mscara a Simple Masked Block, adicione o borre las variables con ADD y DELETE segn se escriban en el mismo. Finalmente con el cuadro de icono, se procede a dibujar un grfico que represente al bloque, empleando el comando plot, como se indica en el siguiente cuadro de dilogo.

6.4 Otros bloques de inters

Los bloques de la biblioteca Sources, definen un conjunto de seales de entrada de formas distintas. Note cmo las seales pueden partir del ambiente MATLAB mediante un file name.mat que archive las variables de inters o directamente del workspace. Los bloques de la biblioteca Sink, definen como se van a mostrar las salidas de las seales. Adems del osciloscopio y el graficador, las seales se pueden enviar hacia un file.mat o hacia el rea de trabajo.

50

En los bloques de las bibliotecas Block Sets y Toolboxes aparecen un conjunto de aplicaciones especficas de Simulink tales como comunicaciones, lgica difusa, procesamiento digital de seales etc. Cada nueva versin del MATLAB incorpora nuevas aplicaciones en estos campos. Consulte la ayuda, la documentacin grfica y los demos del MATLAB y Simulink para ms informacin.

51