Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso 2012-2013
Fundamentos
Matlab es un lenguaje de programaci on implementado por The MathWorks, Inc. y disponible en multitud de entornos: Windows, Unix,. . . Matlab est a especializado en C alculo Cient co. Integra an alisis num erico, computaci on matricial, procesamiento de se nales y un entorno gr aco que permite expresar de forma matem atica multitud de problemas. Matlab proviene de MATrix LABoratory. Se desarrolla para proporcionar f acil acceso a matrices en los proyectos EISPACK y LINPACK.
Ventana de Comandos
Editor de textos
Ventanas
Caracter sticas
Matlab proporciona al usuario: Gesti on din amica de la estructura de datos matriz rectangular. Un conjunto de comandos, funciones y rutinas gr acas muy f aciles de usar. La extensibilidad es una de las caracter sticas m as importantes. Matlab crece constantemente gracias a multitud de matem aticos, ingenieros,... que contribuyen a ampliar las capacidades del lenguaje. Herramientas que permiten desarrollar y personalizar las rutinas num ericas. Existen otros lenguajes similares con software libre: SCILAB, OCTAVE, MAXIMA,. . . Tambi en debemos destacar: MATHEMATICA, R, GAUSS, DERIVE,...
Departamento Matem atica Aplicada Introducci on a MATLAB P ag. 6
Variables
Matlab distingue entre may usculas y min usculas: Total y TOTAL son variables distintas. Matlab tiene las siguientes variables predenidas:
ans: Variable que almacena el u ltimo resultado. de la m aquina, o cota superior del error relativo de eps: Epsilon redondeo al expresar un n umero real en aritm etica de punto otante. pi: El n umero . inf, NaN: Innito y Not a Number. i, j: N umero imaginario 1. CUIDADO: Puede cambiarse. Las variables pueden ser borradas con el comando clear: clear (borra todas las variables del espacio de trabajo). clear variable1,variable2,. . . (borra las variables indicadas). clear all (borra variable, funciones, breakpoints y otros.
Departamento Matem atica Aplicada Introducci on a MATLAB P ag. 7
Variables 2
La variable b asica de Matlab es la matriz. Un n umero real ser a una matriz 1 1. Aunque existe la variable cadena (a=qwerty) y dispone de funciones para estas variables. La matrices Matlab, pueden ser de 3 tipos: enteras, reales o complejas. La conversi on entre tipos es transparente al usuario. Los c alculos se hacen con la m axima precisi on (16 d gitos), pero la salida por pantalla puede realizarse con: formato corto (formato por defecto) format short formato largo (long) format long formato racional (rat) format rat formato cient co corto (short e) cient co largo (long e) El formato compacto (format compact) evita lineas en blanco. El cambio de formato puede hacerse mediante la ventana de comandos.
Departamento Matem atica Aplicada Introducci on a MATLAB P ag. 8
Complejos
Una matriz ser a compleja si lo es alg un elemento: Ejemplo Introducir A = [1, 3, 5] + i [2, 4, 6], o bien A = [1 + 2 i , 3 + 4 i , 5 + 6 i ] Autom aticamente una matriz ser a compleja si el resultado de un c alculo da un n umero complejo: Ejemplo Introducir B = [log (4), 2, sqrt (2)]
Ayudas en MATLAB: help: Lista todas las toolboxes existentes. help sort: Ayuda sobre el comando sort (ordenar). who: Lista las variables denidas. whos: Lista las variables denidas, espacio ocupado, tipo, . . . quit: Salir de Matlab. info, computer, ver, version dan informaci on sobre Matlab, el ordenador en el que est as trabajando, y las versiones de Matlab y las toolboxes que est as ejecutando. clc: Limpia la ventana de comandos.
El sistema operativo path En la versi on de Matlab para Windows, puede modicarse el camino de b usqueda de un comando en disco. dir, type, cd, . . . igual signicado que en MS-DOS. quit abandonar Matlab. Ejemplo A nadir un directorio al path de b usqueda de Matlab. >> p = path; path(p, a : );
Diarios
Podemos tener un registro de las ordenes ejecutadas en una sesi on de Matlab y las salidas efectuadas por pantalla. diary nombre de chero hace que toda la informaci on que aparezca en la pantalla, se env e al da al chero. diary o/on permitir a enviar o no los resultados.
Ejemplo Crear un diario con las o rdenes y los resultados de un ejercicio. >> diary ejer 1.txt, % Env a a ejer1.txt en directorio actual. >> ..., ..., % ordenes que ir an al diario llamado ejer1.txt >> diary o >> ..., ..., % las ordenes entre diary o >> diary on % y diary on no aparecer an en el diario >> diary c : \examen\ejer 2.txt >> ..., % ordenes que ir an al diario llamado ejer2.txt
Sentencias de asignaci on
Una instrucci on de este tipo es de la forma: variable=expresi on Si terminamos la instrucci on con el s mbolo ; el resultado se calcular a pero no ser a mostrado en pantalla, lo que acelerar a muchos los c alculos. Varias instrucciones pueden situarse en la misma l nea separadas por comas o por puntos y comas. Ejemplo A=3*B; C=2*A+3*B,D=A+B-C; Se calcular an A, C y D pero s olo se mostrar a el resultado de C.
Las matrices pueden crearse a partir de expresiones Matlab tal y como aparece en las siguientes expresiones. Ejemplo >> B = 3 A + A2, C = [A B ; B zeros (A)] B = inv (D ) (L + R )
Es recomendable usar par entesis que clariquen las expresiones. Ejemplo Si x=[2,5;7,0] y queremos calcular y = 1 deberemos 2 + x2 introducir en Matlab: >> y = 1/(2 + x.2)
Puede cargarse desde un chero de texto de nombre matriz.m que contiene la l nea: A = [1, 0, 1; 2, 1, 1; 1, 2, 0]. La introducci on de la instrucci on: >> matriz produce el mismo resultado que si la lo hacemos directamente en el int erprete Matlab. Podemos guardar la matriz mediante >> save matriz y posteriormente recuperarla mediante: >> load matriz
Vectores
Por enumeraci on de sus elementos. Usando la notaci on rango: Valor Inicial : paso : Valor Final A partir de otros u otra operaci on que produzca un vector: y = 3 x + sin(2 pi /5) Ejemplo >> x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >> y = 1 : 10 >> z = 1 : 2 : 10 >> u = x + sin(y) >> v = linspace(0, 5, 12) >> w = di (x)
Ejercicio
Calcula lo que devuelve: >> A = [1; 2; 3] >> B = [1; 2; 3]; >> C = [1; 2, 3] >> D = [1, 2; 3, 4] >> E = [1; 2; [3; 4]] >> F = [1 : 9; [1 : 9].2] Dado v=[1 2 3] y w=[4 5 6] qu e devuelve: >> x = [v; w; 0 3 1] Qu e instrucci on debemos teclear para obtener: v=[2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 . . . 4.8 4.9 5]?
A+B, A-B, A*B, p*A (p un escalar) son la suma, resta, producto de matrices y matriz por escalar. Devuelve un error si las matrices no tiene dimensi on compatible. A \ b, A/b realizan la divisi on directa y divisi on inversa respectivamente de matrices, esto es, A1 b y A b 1 . Es importante que x = A \ b nos da la soluci on del sistema: A*x=b, mientras que X=A/B nos da X = A B 1 soluci on a X*B=A. Cuidado: Si el sistema es imposible da la soluci on m nimos cuadrados. A p (p un escalar) devuelve la potencia p- esima de A. Si p es natural mayor que 1 se calcula por productos sucesivos. Si no se calcula por autovalores y autovectores.
Ejercicios
1 2 3 Dadas las matrices A= 4 5 6 , B=[1 2 3] y 7 8 9 1 3 3 C = 4 7 6 7 0 2 Calcular: D=A+B, E=2A-5C, A3 , A5 , A = A1/2 . Inversa de A mediante inv(A) y como A1 . La soluci on de Ax=b. La soluci on de AX=C. F = (3A 5C )1 B
Ejercicios
Indica la instrucci on que queremos el debemos ejecutar, si resolver 1 2 3 x1 366 4 5 6 * x2 = 804 sistema Ax=b? 7 8 9 x3 351 Y Para resolver x A = b Qu e instrucci on ser a la correcta? Soluci on a) x = A\b, o bien x = inv(A) b b) x = b/A, o bien x = b inv(A) NOTA: En el segundo caso b debe ser un vector 1 3 o matriz k 3, resultando x un vector de igual dimensi on.
Matrices especiales
ones(m,n): Matriz de unos de m las y n columnas. zeros(m,n): Matriz de ceros de m las y n columnas. rand(m,n): Matriz m n de n umeros aleatorios distribuidos uniformemente en (0,1). randi([Imin,Imax],m,n): Matriz m n de n umeros aleatorios distribuidos uniformemente en los enteros entre Imin e Imax. randn(m,n): Matriz m n de n umeros aleatorios distribuidos seg un la normal de media 0 y desviaci on t pica 1. eye(n): Matriz identidad de orden n. size(A): Un vector [m,n] con las las y las columnas de A. length(v): Longitud de un vector. A : Matriz traspuesta (conjugada). A. : Matriz traspuesta (sin conjugar los elementos).
Departamento Matem atica Aplicada Introducci on a MATLAB P ag. 23
inv(A) calcula A1 . det(A) calcula el determinante. trace(A) calcula la traza de A. norm(A) calcula la norma de la matriz. poly(A) proporciona el polinomio caracter stico de una matriz. expm(A) calcula e A (funci on matricial). sqrtm(A) calcula A. logm(A) calcula la matriz logaritmo neperiano. [V,D]=eig(A) calcula los autovalores y autovectores de A.
Ejemplo
Ejemplo
Dado A=[1 2 3; 4 5 6] Qu e devuelve: >>ones(size(A))? Y qu e devuelve: >>length(A)? Qu e puede devolver: >>rand(2)? a) [0.2345 0.3611], 0.1578 0.7691 0.1578 1.7691 0.2327 b) , c) , d) 0.5454 0.8328 0.5454 1.8328 0.1322 Qu e orden hay que dar para que Matlab devuelva: ans=[1 0; 0 1; 0 0] ? 1+2i 1i Qu e devuelve 3+2i 26i A ? Qu e devuelve A. ? Qu e devuelve conj(A)? Que devuelve B=zeros(size(A))? Si tenemos la matriz A =
Ejemplo
Ejemplo Si M = 2 3 , e introducimos: 3 2 N = [ones (2) M ; zeros (2) eye (2)] Qu e matriz se obtiene?
y = 2 x + 1 Qu e resulta?
Ejemplo
Dado el vector v=[7 6 5 4 3 2 1] C omo se obtiene la tercera componente? Qu e devuelve la instrucci on: >>x=v(1:3)? Qu e devuelve la instrucci on: >>x=v([3 5 1 7])? Qu e devuelve la instrucci on: >>x=v(3:-1:1);? Y la >>x=v(3:-1:1) ? Qu e devuelve >> v(2:5)? Dada la matriz A=[1 2 3; 4 5 6; 7 8 9], calcula lo que devuelven las siguientes instrucciones: >>A(3,3)=0 >>E=A(1:2,2:3) >>B=A(3:-1:1,1:3)
Ejemplos
Sea A=[4:-2:0;2:3:8;3:5:14] escribir la matriz que devuelve: >> A(2,1)=5*A(3,2)-A(1,1) >> A(2,:)=A(2,:)-2/4*A(1,:) >> D=A(1:2,2:3) >> E=A(1:2,:) >> F=A(:) >> G=A(1:2) >> H=A(:,3) >> K=A([1 3],:) >> L=A([1 3],[2 3])
Realizar a la operaci on indicada de los elementos que se encuentren en la misma posici on. Ejemplo >> A = X . Y , calcula Aij = Xij Yij . Ejemplo Si M = 2 3 2 2 M N = yN= 5 3 4 2 1 0 1 1 , entonces: 2 0 2 2
M. N =
Operadores punto
X .Operador Y
Las funciones de Matlab operan elemento a elemento: exp(A) calcula una matriz con los elementos e Aij sqrt(A) calcula una matriz con los elementos abs(A), sin(A), cos(A). . . Aij log(A) calcula el logaritmo neperiano elemento a elemento.
Polinomios
Para representar un polinomio en Matlab usaremos vectores. El polinomio P (x ) = an x n + an1 x n1 + . . . + a1 x1 + a0 se representa en Matlab como p = [an , an1 , . . . a1 , a0 ] Por ejemplo: si queremos representar en Matlab el polinomio: P (x ) = 3x 2 + 4x + 5 lo almacenar amos de la siguiente forma: >> p = [3, 4, 5]. Y para q = x 4 5x 3 lo haremos mediante >> q = [1, 5, 0, 0, 0].
P (x ): En Matlab como >> polyder(p) P (x )dx : En Matlab como >> polyint(p) Evaluar P (x ): En Matlab como >> polyval(p, x) Las ra ces de P (x ) = 0: En Matlab como >> roots(p) Polinomio con ra ces dadas: >> poly(x)
Ejercicios
Poner las instrucciones Matlab para: Expresar los polinomios: P (X ) = x 4 + x 2 1 y Q (x ) = (1 x 2 )2 . Hallar los puntos en que P (x ) = 2. Evaluar P (3), P (x ) siendo x=1,1.1, 1.2,. . . ,3. Hallar los puntos en que se cortan, es decir, resolver D (x ) = P (x ) Q (x ) = 0. Hallar su producto C (x ) = P (x ) Q (x ). Hallar el cociente y resto de P entre Q. Resolver la ecuaci on algebraica: P (x ) Q (x ) + x 2 2 = 0. Calcular P (5), P (5) y P (5). C omo obtenemos IP = Calcular I =
4 2 P (x )dx
Introducci on a MATLAB P ag. 35
Ejercicio resuelto
Ejemplo Dado el polinomio: p (x ) = x 4 3x 3 + 2x 5 Hallar sus ra ces. >> p = [1, 3, 0, 2, 5], r = roots(p) Representarlo gr acamente en [-5,5]. xx = 5 : 0.01 : 5; y = polyval(p, xx); plot(xx, y), grid Hallar el area delimitada entre el eje OX y las 2 ra ces reales que posee. Ip = polyint(p), Area = polyval(Ip, r(1)) polyval(Ip, r(2)). NOTA: A estas alturas sabemos que r1 2.96 y r2 1.2 son las ra ces reales de p(x).
Funciones
Como en todos los lenguajes las funciones pueden ser de librer a o denidas por el usuario.
Las funciones de librer a se cargan al iniciar Matlab y son las b asicas del lenguaje y externas estando incluidas en las TOOLBOXES instaladas. Cualquier usuario puede a nadir sus propias funciones f acilmente. Tanto los par ametros de llamada, como los resultados de la funci on son matrices. Una misma funci on puede devolver uno o varios argumentos, seg un se realice la llamada y recibir diferente n umero de par ametros de entrada. d=eig(A) devolver a en d los autovalores de A. [v,d]=eig(A) devuelve los autovectores en v y los autovalores en d. help eig indica todas las posibles formas de llamar a la funci on eig.
Denici on de funciones
La forma es: function [y1 , . . . , ym ] = nombre funcion(x1 , . . . , xn ) sentencias Ejemplo Denir la funci on en Matlab que calcule la siguiente funci on: 7x 2 sen(x ) . alfa(x ) = 2x + 3 function y=alfa(x) y=(7*x.2-sin(x))./(2*x+3); Luego mediante >> y = alfa(7), y2 = alfa([123]), x = 1 : 10; y3 = alfa(x) podremos obtener su valor
Caracter sticas
Las variables que se declaren dentro de la funci on son locales. La u nica conexi on entre el espacio de trabajo y el cuerpo de la funci on se hace a trav es de lista entrada y lista salida. La instrucci on return provoca la terminaci on inmediata de la ejecuci on del chero. % se emplea para introducir comentarios. Los comentarios que se escriban hasta la primera l nea de c odigo, se devuelven cuando se solicita ayuda mediante help nombre funci on. nargin y nargout: n umero de par ametros de entrada y de salida (respectivamente).
funciones INLINE
Conviene ver: help inline. INLINE(EXPR) construye un objeto funci on inline de la expresi on Matlab contenida en EXPR. Ejemplos: g = inline(t2) g = inline(sin(2*pi*f + theta), f, theta) Ejemplo Introduce en Matlab la funci on y = e x /4 sen(x ) utilizando la orden inline y la funci on fplot para dibujarla en [0, 10] >> F = inline( exp(x./4). sin(x) ) >> fplot(F, [0, 10]); grid on
Scripts
Contienen instrucciones Matlab y para ejecutarlos basta con poner su nombre. Se crean y modican con el editor de textos. Se usan para introducir datos iniciales (matrices grandes) y organizar los c alculos (programas). Ejemplo Se crea un chero de texto de nombre ej1.m con las ordenes: x=1:10; y=x.2-2; plot(x,y) grid on Lo llamaremos mediante >> ej1 y dibujar a la gr aca.
Instrucciones de Entrada/Salida
echo visualiza el comando en ejecuci on. disp visualiza texto o n umeros en la pantalla. input permite visualizar un texto y obtener datos desde teclado. keyboard permite leer y modicar variables desde teclado. pause detiene la ejecuci on un tiempo determinado o hasta pulsar una tecla. return provoca la terminaci on de la ejecuci on del chero y devoluci on del control a la instrucci on llamante. menu permite generar un men u de opciones.
Predicados
any(x) devuelve cierto si alg un elemento del vector x no es cero. all(z) devuelve cierto solo si los elementos de x son distintos de 0. nd(x) devuelve las posiciones de los elementos distintos de cero del vector x. exist(var) devuelve cierto si la variable existe. isnan(A) devuelve cierto donde vale NaN y cero donde no. nite(A) devuelve cierto en los valores nitos y 0 donde no lo sea. isempty(A) devuelve cierto si es una matriz vac a.
Case
Sentencias CASE, SWITCH switch Variable, case 1, Sentencias para Variable=1. case 2, Sentencias para Variable=2. ... case 8,10,12, Sentencias cuando Variable vale 8, 10 o 12. otherwise error(No esta contemplado el caso.) end Si la variable de conmutaci on vale 1, ejecuta la 1a , si vale 2 la 2a , etc.
Bucles
Sentencia FOR: for matriz sentencias end Sentencia WHILE: while condici on sentencias end La instrucci on break provoca la salida del bucle, o del u ltimo bucle si est an anidados.
Ejemplo
Ejemplo
1 2 3
for k=1:4, y(k)=x(k+2)-x(k),end k=1:4, for k, y(k)=x(k+2)-x(k),end k=1, while k<=4, y(k)=x(k+2)-x(k), k=k+1, end
Ejemplo Hallar el logaritmo en base 4 de los 1.000 primeros naturales. Se puede hacer con los dos m etodos siguientes:
1 2
Comandos gr acos
plot(x,y) representa la tabla de puntos (xi , yi ). >> x = 1 : 0.5 : 10; y = sin(x); plot(x, y), grid representa la funci on y = sen(x ). fplot(funcion, [a, b]) dibuja una funci on. hold on/o Permite superponer dos o m as gr acas. grid on activa una cuadr cula en la gura. whitebg cambia el color de fondo. title, xlabel, ylabel, xcolor, ycolor,. . . consultar help comando. shg permite visualizar el u ltimo gr aco en la pantalla. clf, clg borran la pantalla de gr acos. subplot(m,n,p) permite crear varias gr acas en una misma gura. gure abre una nueva ventana de gr acos.
Departamento Matem atica Aplicada Introducci on a MATLAB P ag. 50
Ejemplo
Ejemplo Dibujar el seno y el coseno en la misma gura. >> fplot( sin(x) , [2 pi, 2 pi]) >> hold on, fplot( cos(x) , [2 pi, 2 pi]) La siguiente orden hace lo mismo >> fplot( [sin(x), cos(x)] , [2 pi, 2 pi])
Representar gr acamente en [0, 10] la funci on y = e x /4 sen(x ) introduciendo en Matlab la funci on. Expresar los valores en una tabla. function y=fun22(x) y=exp(-x./4).*sin(x); y luego ejecutar: >> x = 0 : 0.01 : 10; y = fun22(x); plot(x, y); grid >> [x , y ]
Ejercicios
Ejercicios-2
Usando las funciones de algebra omo podemos lineal, C 1 1 0 0 0 1 3 1 0 0 obtener la siguiente matriz? 0 1 5 1 0 0 0 1 7 1 0 0 0 1 9 Dado el vector v=[1 2 3], usando las funciones de algebra, 1 0 0 0 2 0 qu e instrucci on debemos ejecutar para obtener: 0 0 3 Interpolar 5 elementos en progresi on aritm etica entre 0 y 20.
Ejercicios-3
Preparar una rutina que dadas las marcas de clase xi y las frecuencias absolutas ni , calcule los momentos ordinarios y centrales hasta el cuarto orden, la media, varianza, sesgo y curtosis. Preparar una rutina, tal que, dados los extremos de clase Li (primera clase (, L1 ] y u ltima (Ln , )) calcule la moda, mediana y cuartiles. Preparar una rutina, tal que, dados los extremos de clase Li (primera clase (, L1 ] y u ltima (Ln , )) calcule la media, varianza, media arm onica y cuadr atica.