Vous êtes sur la page 1sur 19

Contenido

1.1 1.3 Caractersticas .................................................................................................................................... 2 Sintaxis ............................................................................................................................................. 3 Expresiones algebraicas .................................................................................................... 3 Operadores ............................................................................................................................ 3 Funciones elementales ...................................................................................................... 4

1.3.1 1.3.2 1.3.3 1.4

Desarrollo de una sesin .......................................................................................................... 4 Comandos de Utilidad ....................................................................................................... 5

1.4.1 1.5

Operaciones num ricas ............................................................................................................. 6 e Operaciones aritm ticas .................................................................................................. 6 e

1.5.1 1.6

Operaciones simbolicas ............................................................................................................ 13 Operaciones aritm ticas ................................................................................................ 13 e Sustitucion de variables .................................................................................................. 13

1.6.1 1.6.2 1.7

Gr ficos .......................................................................................................................................... 14 a Gr ficos en 2D ..................................................................................................................... 15 a Gr ficos en 3D ..................................................................................................................... 15 a

1.7.1 1.7.2 1.8

Ficheros-m .................................................................................................................................... 14 Funciones-funcion .............................................................................................................. 14 Programacion ...................................................................................................................... 16

1.8.1 1.8.2

Referencias................................................................................................................................................. 19

1.1

Caractersticas

Matlab es un paquete de software orientado hacia el calculo numrico cientfico e in e genieril. Integra calculo numrico, computacion de matrices y graficos en un entorno de e trabajo comodo para el usuario. Su nombre significa Laboratorio de Matrices y fue escrito inicialmente en base a los ya existentes paquetes de calculo matricial LINPACK y EISPACK. Posteriormente se han anadido libreras, denominadas Toolboxes, especializadas en diferentes areas cient ficas. De entre ellas podemos destacar Simulink Toolbox Control System Toolbox System Identification Toolbox Robust Conntrol Toolbox Signal Processing Toolbox Filter Design Toolbox Symbolic Math Toolbox por su particular inters para nuestra area de conocimiento. La ultima de la lista, Symbolic e Math Toolbox, est diferente. basada en el programa de calculo simbolico Maple y utiliza una sintaxis Matlab ha evolucionado y crecido con las aportaciones de muchos usuarios. En entornos universitarios se ha convertido, junto con Mathematica y Maple, en una herramienta instructora basica para cursos de matematicas aplicadas as como para cursos avanzados en otras areas. En entornos industriales se utiliza para investigar y resolver problemas practicos y calculos de ingeniera. Son aplicaciones tpicas el calculo numrico, la realiza e cion de algoritmos, la resolucion de problemas con formulacion matricial, la estad stica, la optimizacion, etc. Es de destacar la aplicacion en el estudio, simulacion y diseno de los sistemas dinamicos y de control.1.2 Funcionamiento Matlab es un programa intrprete de comandos. Esto quiere decir que es capaz de e procesar de modo secuencial una serie de comandos previamente definidos, obteniendo de forma inmediata los resultados. Los comandos pueden estar ya definidos en el propio Matlab y pueden tambin ser definidos por el usuario. Para que Matlab pueda realizar e este proceso el usuario ha de escribir la lista de comandos en la ventana de comandos, si su numero es reducido, o en un fichero con extension .m, constituyendo entonces un programa. El mtodo que debe seguirse para procesar los datos es muy simple: e 1. El usuario escribe expresiones en la ventana de comandos, o bien en un archivo de texto apropiado (archivo.m). 2. Tras la orden de ejecucion enter (o escribir el nombre del fichero), Matlab procesa la informacion. 3. Matlab Escribe los resultados en la ventana de comandos y los graficos (si los hu- biere) en otras ventanas graficas.

1.3

Sintaxis

Para escribir las expresiones es preciso respetar ciertas reglas sintacticas propias de Mat- lab. Algunas se parecen bastante a las de otros lenguajes de programacion por lo que no resultan extranas.

1.3.1 Expresiones algebraicas


Estan formadas por cadenas de caracteres, numeros y operadores algebraicos. Las cadenas de caracteres pueden ser s mbolos de variables (matrices) o funciones de Matlab. Las mayusculas y minusculas son distintas. Podemos distinguir dos tipos de expresiones: numricas (propias de Matlab) y e simbolicas (propias de Maple). Una expresion numrica puede conterner smbolos e (nombres de varia- bles) pero stos han de estar previamente asignadas a valores e numricos. Las expresiones e >> a = 2; b = 3; >> a + b son numricas; el valor de a + b es hallado y mostrado e por Matlab inmediatamen- te: ans = 5. Sin embargo, una expresion simbolica puede contener s mbolos sin valor numrico asignado. Si escribimos e >> syms x >> p = 2*x^2 - 7; la segunda expresion representa un polinomio en la indeterminada x. El valor de p para x = 1 se puede obtener con >> subs(p,x,1) que dar como resultado: ans = 5.

1.3.2

Operadores

Hay operadores para numeros (reales o complejos) y para matrices. Para numeros: + * / ^

definida la unidad imaginaria, 1, que se denota indistintamente por los s mbolos i y j Para matrices: + * / \ ^ ..* ./ .^

Numeros complejos: Est

Para matrices elemento por elemento: .+

Los operadores para numeros se colocan entre dos numeros y dan como resultado otro numero. Por ejemplo 2 + 3 o a + b, si a y b han sido asignadas previamente a numeros. Los operadores para matrices se colocan entre dos matrices y dan como resultado otra matriz. Los operadores de relacion son para numeros reales, se colocan entre dos numeros y dan como resultado 1, que significa cierto, o 0, que significa falso. El significado de todos ellos resulta obvio, si bien conviene aclarar que el operador == significa igual, en el sentido de condicion (por ejemplo a==b puede ser cierto o falso), y es diferente del operador = que sirve para asignar un valor a una variable (por ejemplo a=3) significa dar a la variable a el valor de 3. El operador ~= significa distinto, tambin en el sentido de condicion. e Los operadores de condicion se utilizan, sobre todo, en las estructuras de programacion if-then-else, for, y while. Para delimitar las matrices se utilizan los corchetes [ ]. Para separar elementos consecutivos, el espacio en blanco (barra espaciadora) o la coma , y para pasar de fila, la tecla enter o el punto y coma ; . La traspuesta conjugada de una matriz de numeros complejos A se representa por A. Otros operadores, para usos varios, son Ayudas al usuario: who, help, ! , save, load

Operaciones logicas: & (AND), ! (OR), ~ (NOT)

1.3.3

Funciones elementales

Matlab dispone de las funciones elementales mas comunes (las que tienen las calculadoras de bolsillo) y otras especiales, propias. Realizan una operacion sobre un argumento numrico dado de tipo matriz y operan elemento por elemento. Las mas usuales son: e Trigonomtricas: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh. e Logicas: any, all, find, exist, isnan, finite, isempty, isstr, strcomp. Otras: abs, angle, sqrt, real, imag, conj, round, fix, floor, ceil, sign, rem, exp, log, log10. Especiales: bessel, gamma, rat, ert, invertf, ellipk, ellipj.

1.4

Desarrollo de una sesin

Los manuales de Matlab explican detalladamente los conceptos, comandos y procedimientos del programa. Aqu vamos realizar una introduccion a su manejo mediante algunos ejemplos. Es conveniente que los alumnos realicen por su cuenta otros parecidos y traten de utilizar Matlab para resolver problemas de Matematicas, F sica y otras asignaturas. La instalacion se realiza automaticamente con el CD de Matlab. Una vez instalado el programa, al picar con el raton en el icono de MATLAB aparece en la pantalla la ventana:

Esta ventana se llama MATLAB command window y es en la que el usuario opera. En la primera l nea aparecen las opciones disponibles.

1.4.1

Comandos de Utilidad

Los comandos demo, help, who, whos, dir, diary y algunos otros, resultan muy utiles pera el usuario en el desarrollo de la sesion. El comando demo nos muestra, de modo interactivo, un amplio abanico de ejemplos de aplicacion de Matlab y es de gran ayuda durante nuestros inicios con el programa. El comando help funcion_deseada muestra en la pantalla un texto explicando como se utiliza. Por ejemplo, >> help poly POLY Characteristic polynomial. If A is an N by N matrix, POLY(A) is a row vector with N+1 elements which are the coefficients of the characteristic polynomial, DET(lambda*EYE(A) - A) . If V is a vector, POLY(V) is a vector whose elements are the coefficients of the polynomial whose roots are the elements of V . For vectors, ROOTS and POLY are inverse functions of each other, up to ordering, scaling, and roundoff error. ROOTS(POLY(1:20)) generates Wilkinsons famous example. See also ROOTS, POLYVAL. muestra en la pantalla la ayuda sobre el polinomio caracterstico de una matriz. El uso de la ayuda es muy conveniente, sobre todo en el per odo de aprendizaje. Los comandos who y whos dan una lista de las variables que estan actualmente en la memoria (workspace de Matlab. El comando dir, igual que el de DOS, lista el directorio actual. El comando diary sirve para que todo lo que vamos tecleando y los resultados

obtenidos (incluidos los errores) se almacene en un archivo. Para ello debemos escribir, en el instante a partir del cual queremos grabar la sesion >> diary dia12 en donde dia12 es el nombre del archivo en el que queremos que se escriba. Para terminar el proceso de grabacion hemos de teclear >> diary off El uso de la ayuda es muy conveniente, sobre todo en el per odo de aprendizaje.

1.5

Operaciones num ricas e

Matlab puede operar como una calculadora: si el usuario escribe las ordenes apropiadas, los resultados aparecen en la ventana de comandos (Command Window). Obsrvese e que si ponemos ; al final de la expresion el resultado no se escribe en la pantalla. Es capaz de realizar las operaciones aritmticas suma, resta, multiplicacion, division y e potenciacion, con numeros (reales y complejos), con vectores (polinomios) y con matri ces. Ademas, mediante la librer Symbolic Math Toolbox, puede tambin operar con a e expresiones simbolicas.

1.5.1

Operaciones aritm ticas e

Las operaciones aritmticas con numeros son, quizas, las mas sencillas que pueden efece tuarse. Para ilustrar su realizacion, a continuacion se muestran una serie de l neas que comienzan por >>, indicativo (o prompt ) de la pantalla de comandos en una sesion de Matlab, seguido de una orden y del resultado que aparecera inmediatamente en la pantalla si se ejecutara. >> a = a = 4 >> b = b = 9 >> c = c = 97 >> sin ans = 1/2 4

5 + a

a^2 + b^2

(30*pi/180)

Si el usuario no ha asignado el resultado a una variable, Matlab lo hace utilizando la variable ans Numeros complejos La forma de operar con numeros complejos es igual que para los reales.

>> a=1; b=2; c=3; >> x1=(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -1.0000 + 1.4142i >> x2=(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -1.0000 - 1.4142i >> a*x1^2+b*x1+c ans = 0 >> c1=1+2*i c1 = 1.0000 + 2.0000i >> c2=1-2*i c2 = 1.0000 - 2.0000i Paso rectangulares polares: >> M=abs(c1) M = 2.2361 >> alpha=angle(c1) alpha = 1.1071 >> alpha_grados=alpha*180/pi alpha_grados = 63.4349 >> M*cos(alpha) ans = 1 >> M*sin(alpha) ans = 2

Podemos comprobar el resultado con las ordenes real(c1), imag(c1) Operaciones con vectores MATLAB no precisa una notacion especial para vectores. Vamos a hacer algunas operaciones sencillas con vectores. >> a = [1 2 3 4 6 4 3 4 5] a = 1 2 3 4 6 4 3 >> b = a + 2 b = 3 4 5 6 8 6 5

>> c = a + b c = 4 6 8 10 >> d = a .* b c = 3 8 15 24

14

10

10

12

48

24

15

24

35

Los vectores, por defecto, son vectores fila. Operaciones con polinomios Los polinomios se representan en Matlab como vectores fila. Por ejemplo, el polinomio 3s3 5s2 + 7s + 3 se representa por >> p=[3 -5 7 3] Las ra de un polinomio se hallan mediante la funcion roots: ces >> r=roots(p) El producto de dos polinomios se realiza a travs de la convolucion de los vectores de e sus coeficientes, mediante la funcion conv. Por ejemplo, >> p1=[-1 -3 3 4]; >> p2=[1 2 4 0]; >> p=conv(p1,p2); Para la division se usa la deconvolucion. Mediante la funcion deconv se obtiene el cociente q y el resto r de la division. >> [c,r]=deconv(p,p1); La funcion polyval sirve para hallar el valor de un polinomio. Si el parametro que le pasamos es un vector, calcula otro vector con los valores del polinomio para cada uno de los del vector. La funcion polyfit sirve para hacer ajustes polinomicos de una secuencia de datos dada por dos vectores X e Y. Se puede elegir el grado del polinomio. En el siguiente ejemplo se utilizan estas dos funciones: >> >> >> >> >> >> >> x=[0:10]; y=rand(x); plot(x,y) p=polyfit(x,y,3); z=polyval(p,x); hold plot(x,z)

% Elegimos grado 3

Citaremos por ultimo la funcion residue que sirve para hallar los residuos de unafuncion racional en los polos de la misma (o coeficientes de su expansion en fracciones simples), bajo el supuesto de que los polos sean simples. Ademas, dicha funcion calcula tambin los polos y el trmino directo. e e >> B = [1 2 3 4]; >> A = [1 2 3 4 5 6 7]; >> [r,p,k] = residue(B,A); Operaciones con matrices Veamos como se efectuan algunas de las operaciones mas comunes con matrices: Introducir una matriz A: >> A = [1 2 3;4 5 6;7 8 0] Calculo de la transpuesta: >> B = A Producto matricial: >> C = A * B Determinante: >> det(A) Rango de la matriz: >> rank(A) Numero de condicion: >> cond(A) Matriz inversa: >> inv(A) Valores propios y vectores propios: >> [val,vec]=eig(A) Valores singulares: >> svd(A) Exponenciacion matricial (eA ): >> expm(A) Polinomio caracterstico: >> p = poly(A) Las ra de p, roots(p), deben ser los valores propios de A, eig(A). ces

1.6

Operaciones simbolicas

La librer Symbolic Math Toolbox da acceso a Matlab a algunas funciones del nucleo de a Maple que permiten operar con expresiones simbolicas.

1.6.1

Operaciones aritm ticas e

En las primeras versiones de la librera Symbolic Math Toolbox era necesario emplear los comandos especiales symadd, symsub, symmul, symdiv y sympow para las operaciones de suma, resta, multiplicacion, division y potenciacion, respectivamente, de expresiones simbolicas. Afortunadamente, esto ya no es necesario y se pueden usar para ello los operadores numricos +, -, +, *, / y ^, siempre y cuando las variables simbolicas se e hayan declarado previamente con sym() o syms. Si ponemos >> syms a b p x >> a = x^3+3*x^2-2*x+7; >> b = x^2+x+3; >> p = a * b p = (x^3+3*x^2-2*x+7)*(x^2+x+3) obtenemos el polinomio producto en forma factorizada. Si lo queremos ver forma expandida, pondremos >> expand(p) ans = x^5+4*x^4+4*x^3+14*x^2+x+21 Las demas operaciones simbolicas se efectuan de modo similar.

1.6.2

Sustitucion de variables

La sustitucion de un s mbolo por otro en una expresion simbolica se puede realizar con la orden subs. La forma de hacerlo es subs(expr, old, new), en donde expr es una expresion simbolica, old es el s mbolo (o valor) que se desea sustituir y new es el nuevo s mbolo o valor. Supongamos que en el polinomio f = ax2 + bx + c queremos sustituir x por -1. Para ello, si escribimos >> syms x a b c >> f = a*x^2 + b*x + c; >> g = subs(f,x,-1) entonces sale g = a - b + c

Se pueden tambin sustituir varias variables a la vez. Si en el mismo polinomio de antes e

quisiramos sustituir a por 1, b por 2 y c por k, podemos poner e >> syms x a b c k >> f = a*x^2 + b*x + c; >> g = subs(f,[a,b,c],[1,2,k]) y obtendremos g = x^2+2*x+k Numerador y denominador En una expresion simbolica racional suele interesar conocer el numerador y el denominador de la misma. Para esto tenemos la orden numden. Si, por ejemplo, nos dan la expresion h= x2 + 1 x + x 1, 2x 1

podemos hallar el denominador y el denominador de la misma con >> x=sym(x) >> h = (x^2+1)/(2x-1) + x/(x-1); >> [n,d] = numden(h) n = x^3+x^2-1 d = (2*x-1)*(x-1) Conversion de polinomios Las ordenes poly2sym y sym2poly sirven, respectivamente, para convertir un polinomio expresado en forma numrica (vector de coeficientes) en su expresion simbolica, y vicee versa. El siguiente ejemplo ilustrar su utilizacion. >> syms x >> p = [1 2 3 4 5] >> px = poly2sym(p,x) px = x^4+2*x^3+3*x^2+4*x+5 >> sym2poly(px) ans = 1 2 3 4 5

1.7

Gr ficos a

Matlab tiene una buena coleccion de comandos para obtener representaciones graficas a partir de datos numricos y tambin algunos para expresiones simbolicas. e e

1.7.1

Gr ficos en 2D a

En las aplicaciones interesa a veces conocer el valor numrico de una funcion y = f (x) e para uno o varios valores de la variable. En Matlab, dada una funcion y = f (x), definida en un intervalo [a, b], es posible representarla por un par (x,y) de vectores de numeros, tales que el vector x contiene un conjunto finito de valores de x y el vector y contiene el conjunto de valores imagenes de x por la funcion y, calculados por el propio Matlab. Una vez representada de este modo la funcion, se puede representar graficamente. Por ejemplo, dada la funcion y = 10(1 ex/3 sin(10x)), definida en el intervalo [0, 10], una posible representacion en Matlab, seguida de su representacion grafica, ser a >> x=[0:0.1:10]; >> y=10*(1-exp(-x/3).*sin(10*x)); >> plot(x,y),title(Grafica de una funcion)
Grfica de una funcin 20

18

16

14

12

10

10

La grafica corresponde a una funcion sinusoidal amortiguada mas una constante.

1.7.2

Gr ficos en 3D a

Las funciones de dos variables, de la forma f (x, y) se pueden representar graficamente con Matlab en 3D. Para ello es preciso crear un dominio de puntos en forma de malla rectangular en el plano (x, y), dentro del cual se desea representar la funcion. Esto se hace con la orden meshgrid (antes meshdom) de Matlab. Veamoslo con un ejemplo. Sea la funcion z : R2 R, p z = 1 x2 y 2 , cuyo dominio es el crculo x2 + y2 < 1, y supongamos que queremos calcular los valores de z en una region rectangular del plano (x, y) definida por los puntos (-1.25,-1.25) y (1.25,1.25), y representarla graficamente. Para ello escribiremos:

>> [x,y] = meshgrid(-1.25:0.2:1.25,-1.25:0.2:1.25); >> z = sqrt(1 - x.^2 - y.^2); >> mesh(z) y en la pantalla aparecer el grafico.

0.8

0.6

0.4

0.2

0 15 10 10 5 4 0 2 0 8 6 14 12

1.8

Ficheros-m

Matlab est dotado de un mecanismo que le permite interpretar ficheros de texto, con la condicion de que su nombre termine por .m. Se utilizan principalmente para crear funciones (en el sentido matematico), programas y funciones (ordenes) de Matlab.

1.8.1

Funciones-funcion

Mediante ficheros-m podemos crear funciones en el sentido matematico: f : x f (x) La denominacion que da Matlab a estas funciones es funciones-funcion (function functions). Estas funciones permiten realizar integracion numrica, resolver ecuaciones no e lineales, problemas de optimizacion y resolver ecuaciones diferenciales. Veamos un par de ejemplos. Dentro del editor definimos la funcion f 1(x) function y=f1(x) y=1 ./ ((x-0.3).^2+0.01) + 1 ./((x-0.9).^2+0.04)-6; Una vez salvado el fichero podemos calcular la funcion en un intervalo y dibujarla.

>> x=[-1:0.1:2]; >> y=f1(x); >> plot(x,y);


Funcin y=f1(x) 100

80

60

40

20

20 1

0.5

0.5

1.5

Es posible hallar los valores maximo y m nimo de la funcion en un intervalo: >> xmin = fmin(f1,0.5,1); xmin = 0.6370 >> ymin=f1(xmin); ymin = 11.2528 Otro ejemplo puede ser representar la funcion f = 1 1 1 + x y

utilizada en Optica. Para ello creamos el fichero lente.m con la definicion de la funcion. Escribimos function z=lente(x,y) z = 1 ./ (1 ./ x + 1 ./ y); grabamos el fichero, con el nombre lente.m, y ya podemos utilizar la funcion y representarla graficamente.

>> x=[-1:0.05:1]; >> y=x; >> [xx,yy]=meshdom(x,y); z=lente(xx,yy); atgz=atan(z); mesh(atgz,[60 60]) title(Funcion lente. f= 1/(1/x + 1/y))
Funcin de dos variables

2 1.5 1 0.5 0 0.5 1 1.5 2 0 10 20 30 40 50 40 50 30 10 20 0

Podemos asimismo hallar el valor m nimo en un intervalo: >> xmin=fmin(f1,0.5,1) >> ymin=f1(ymin)

1.8.2

Programacion

Para evitar teclear repetidamente las mismas funciones, Matlab permite crear un fichero con una lista de comandos que luego, al ser llamado, interpreta secuencialmente. Dispone, como otros lenguajes de programacion, de las estructuras if-then-else, while y for. El archivo en el que se escriben las ordenes de Matlab (programa) ha de tener la extension .m y se puede escribir con cualquier editor de texto. Para ejecutar el programa, simplemente ponemos su nombre >> nombre-fichero el mismo nombre que hayamos puesto antes (pero sin .m). En un fichero-m podemos colocar simplemente una lista de instrucciones de Matlab con lo que al llamarlo se ejecutaran secuencialmente. Matlab tiene un lenguaje de programacion propio, de tipo intrprete. Es decir, es e capaz de interpretar una lista de instrucciones contenidas en un fichero-m. Igual que

otros lenguajes de programacion, dispone de las estructuras de programacion clasicas: if-then-else, for, y while. Estructura if-then-else La sintaxis de la estructura if-then-else es if condicion1 orden1a orden2a ... ... elseif condicion2 orden1b orden2b ... ... else orden n end en donde orden1*, orden2*, . . . , son ordenes y condicion1, condicion2, . . . , estamentos condicionales o booleanos de Matlab. Puede observarse que no se pone la palabra then. Veamos un ejemplo. if i==j A(i,j) = 2; elseif abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end Estructura for La sintaxis de la estructura for es for variable=expression orden1a orden2a ... ...

end en donde orden1*, orden2*, . . . , son ordenes de Matlab. Por ejemplo, A = zeros(3,4) for i=[1:4] for j=[1:4] A(i,j) = i+j;

end end Puede haber, como en este ejemplo, varios bucles for anidados. Estructura while La sintaxis de la estructura while es while condicion orden1a orden2a ... ... end en donde orden1a, orden2a, . . . , son ordenes y condicion es un estamento condicional o booleano de Matlab. Como ejemplo, podr amos poner n = 0; eps=1; while 1+eps > 1 eps = eps/2; n = n+1; end

Referencias

J.M. Gonzalez de Durana (2004). Introduccion a Matlab [Libro en Linea] Disponible: http://www.vc.ehu.es/depsi/jg/imatlab.pdf [Consulta: 2012, Septiembre 27]

Vous aimerez peut-être aussi