Vous êtes sur la page 1sur 11

Facultad Regional Concepcin del Uruguay o Universidad Tecnolgica Nacional o

Ing. Pereira 676 - E3264BTD C. del Uruguay (ER) - ARGENTINA Tel: (++54) 3442 423 803 http://www.frcu.utn.edu.ar

C lculo Numrico 2007 a e

FRCU UTN

Principios bsicos de Matlab a


O.R. Faure
Facultad Regional Concepcion del Uruguay Universidad Tecnologica Nacional Ing. Pereira 676 - E3264BTD Concepcion del Uruguay (ER) e-mail: ofaure@frcu.utn.edu.ar

Ao 2009 n

Matlab is an integrated technical computing environment that combines numeric computation, advanced graphics and visualization, and a highlevel programming language.
http://www.mathworks.com/products/matlab

1. Introduccion Comenzaremos aprendiendo cmo utilizar Matlab en ciencias e ingenier Es aconsejable tener o a. la computadora encendida y Matlab funcionando mientras se leen estas l neas. Intente los comandos (instrucciones) en la Ventana de Comandos (Matlab Command Window) tanto como le sea posible. Es util experimentar con variantes de los ejemplos que se presentan; la mejor manera de saber como Matlab responde a un comando es probndolo. a

Figura 1. La ventana de Matlab

2. Entradas y Salidas Los comandos se ingresan en la Ventana de Comandos. Matlab posee salidas de dos tipo diferentes: generalmente, textos o salidas numricas son mostradas en la misma Ventana de e Comandos, pero los grcos aparecen en una ventana separada. Como muestra de una salida a con la ventana de Matlab y un grco, puede verse la Figura 2. a

c 2009 O.R. Faure

Principios bsicos de Matlab a

Figura 2. Ventana de Grcos en Matlab a

3. Aritmetica Como hemos visto, Matlab puede utilizarse como una calculadora para realizar operaciones aritmticas. Pueden utilizarse + para sumar, - para restar, * para multiplicar, / para e dividir y ^ para las potencias. Por ejemplo, >> 3^2 - (5 + 4) / 2 + 6 * 3 ans = 22.5000 Matlab muestra las respuestas y asigna los valores a una variable llamada ans. Si se desean realizar otros clculos con la respuesta, se puede utilizar la variable ans en lugar de tipear la a ultima respuesta. Por ejemplo, se puede calcular la suma del cuadrado y la ra cuadrada de la z ultima respuesta tipeando: >> ans^2 + sqrt(ans) ans = 510.9934 Observar que Matlab asigna un nuevo valor a ans luego de cada clculo. Para realizar a clculos ms complejos, es posible asignar los valores calculados a variables que uno mismo a a elige. Por ejemplo, >> u = cos(10) u = -0.8391 >> v = sin(10) v = -0.5440 >> u^2 + v^2 ans = 1 Matlab utiliza aritmtica de punto otante de doble presicin, lo cual da una precisin de e o o aproximadamente 15 d gitos; sin embargo, Matlab muestra solamente 5 d gitos por defecto. Para mostrar ms d a gitos, si se tipea format long. Entonces, todas las salidas numricas a e partir de ese momento sern de 15 d a gitos. Si ahora tipea format short, se volvern a mostrar a 5 d gitos.

c 2009 O.R. Faure

Principios bsicos de Matlab a

4.

Expresiones simbolicas, precision y aritmetica exacta

Como ya hemos dicho, Matlab usa aritmtica de punto otante para sus clculos. Utilizando e a la Toolbox de Clculo simblico (Symbolic Math Toolbox), es posible realizar clculos con a o a aritmtica exacta. Considrese el siguiente ejemplo: e e >> cos(pi/2) 6.1232e-17 La respuesta est escrita en formato de punto otante y signica 6.1232 1017 . Sin a embargo, es sabido que cos(/2) es en realidad igual a 0. La inexactitud es debida al hecho que tipeando pi en Matlab se tiene una aproximacin de de 15 d o gitos, no su valor exacto. Para obtener una respuesta exacta, en lugar de una aproxiamda, se debe crear una representacin simblica de /2 tipeando sym(pi/2). Si ahora se toma el coseno de la repo o resentacn simblica de /2: o o >> cos(sym(pi/2)) 0 Que es la respuesta esperada. Las comillas que entre las que se encuentra pi/2 en la l nea de arriba crean un string que consiste de los caracteres pi/2 y previene a Matlab de evaluar esto como un nmero de punto u otante. El comando sym convierte un string en una expresin simblica. o o Los comandos sym y syms estn estrechamente relacionados. De hecho, syms x es equivaa lente a x = sym(x). El comando syms tiene un efecto ms duradero sobre su argumento (se a declara simblico a partir de ahora), mientras que sym tiene solamente un efecto temporario a o menos que se asigne la salida a una variable, como por ejemplo haciendo x = sym(x). Si se desea sumar 1/2 y 1/3 simblicamente, se escribe: o >> sym(1/2) + sym(1/3) 5/6 Finalmente, es posible obtener el valor numrico una variable simblica con vpa. Por ejeme o plo, para mostrar 50 d gitos de 2, se puede tipear >> vpa(sqrt(2), 50) 1.414212562373095048801668872422096980785696718753769 Nota: Se debe ser cuidadoso al usar sym o vpa en una expresin que Matlab debe evaluar o antes de utilizar la evaluacin numrica. Para ilustrar esto, ingrese las expresiones 3^45, o e vpa(3^45) y vpa(3^45). La primera da una aproximacin de punto otante de la reso puesta, la segunda da una respuesta que es correcta solamente en sus primeros 16 d gitos, pues Matlab solamente utiliza precisin de 16 d o gitos en su evaluacin de punto otante en la o exponenciacin, y la tercera da la respuesta exacta. o ans = ans = ans =

ans =

5. Manipulacion de variables Existen tres clases diferentes de datos en Matlab: nmeros de punto otante, strings y expreu siones simblicas. Luego de una larga sesin de Matlab puede ser dif recordar los nombres o o cil y clases de todas las variables que se han denido. Si se tipea whos puede verse un resumen de los nombres y tipos de las variables existentes. Aqu se muestra las salida de whos para la sesin de Matlab luego de haber ejecutados los comandos dados hasta el momento: o

c 2009 O.R. Faure

Principios bsicos de Matlab a

>>

whos Name Size Bytes ans 1 x 1 226 u 1 x 1 8 v 1 x 1 8 x 1 x 1 126 y 1 x 1 126 Grand total is 58 elements

Class sym object double array double array sym object sym object using 494 bytes

Puede verse que existen actualmente cinco variables asignadas en nuestra sesin de Matlab. o Hay de clase sym object; es decir que son objetos simblicos. Las variables x e y son o simblicas pues han sido declaradas utilizando syms, y ans es simblica pues es la salida del o o ultimo comando ejecutado, el cual involucraba una expresin simblica. Las otras dos variables, o o u y v, son de clase double array . Esto signica que son arreglos (matrices) de nmeros de u doble precisin; en este caso los arreglos son de tamao 1 1 (es decir, escalares). La columna o n Bytesmuestra cuanta memoria de la computadora ocupa cada variable. Si se hace u = pi, v = pi y w = sym(pi), y se tipea whos pueden verse los diferentes tipos de datos descriptos anteriormente. El comando whos muestra informacin acerca de todas las variables denidas, pero no o muestra los valores de estas variables. Para ver el valor de una variable, simplemente se tipea el nombre de la variable y se presiona enter o return. Cada comando de Matlab necesita un tipo particular de datos como argumento, y es importante conocer qu clases de datos son necesarios en un comando determinado, la ayuda e (help nombre del comando) usualmente proporciona la o las clases de datos que deben ser provistos. Un tipo de dato de entrada errneo generalmente produce un mensaje de error o un o resultado que no es correcto o esperado. Por ejemplo, se tipese sin(pi) para ver como una e salida inesperada puede aparecer como resultado de escribir una cadena como argumento de una funcin que no est diseada para stas. o a n e Para borrar todas las variables denidas se tipea clear o clear all. Es posible borrar solamente algunas de estas variables, si se tipea por ejemplo, clear x y se borran solamente estas dos variables. Es aconsejable borrar todas las variables antes de comenzar nuevos clculos. De lo contrario, a valores de clculos previos pueden ser utilizados errneamente en un nuevo clculo. Finalmente, a o a se puede utilizar la ventana del Workspace browser como una alternativa grca de whos. a

6. Errores en los inputs Si se comete un error al tipear un comando, Matlab mostrar un mensaje de error por la a pantalla. Por ejemplo, aqu se intenta evaluar 3u^2: >> 3u^2 ??? 3u^2 | Error: Missing operator, comma, or semicolon. El error es un operador * que no falta. El input correcto deber ser 3*u^2. Ntese que a o Matlab coloca una marca (un segmento de linea vertical) en el lugar donde supone que el error puede haber ocurrido; sin embargo, el error puede haber ocurrido antes o despus en la exe presin. o Nota: La falta de operadores de multiplicacin y los parstesis son generalmente los errores o e ms comunes. a Es posible editar una l nea utilizando la echa arriba () y de esta manera ver un comando ingresado previamente, y aqu es posible utilizar las echas izquierda () y derecha() para editar la l nea anterior, y luego ejecutarla presionando ENTER o RETURN. Las teclas () y () permiten navegar hacia atras o adelante en los comandos ingresados previamente en la

c 2009 O.R. Faure

Principios bsicos de Matlab a

sesin de Matlab y son muy utiles para corregir, modicar o reingresar comandos tipeados o anteriormente.

7. Ayuda Online Existen varias formas de ayuda en Matlab. Para ayuda de algn comando particular, tipenado u solamente help seguido del nombre del comando. Por ejemplo, help solve, mostrar la docua mentacin existente para el comando solve. o

8. Variables y asignaciones En Matlab , puede usarse el signo igual para asignar un valor a una variable. Por ejemplo, >> x = 7 asignar a la variable x el valor 7 a partir de ahora. De aqu en adelante, cada vez que Matlab a vea la letra x, automticamente le asignar el valor 7. Por ejemplo, si y ha sido denida como a a una variable simblica, entonces o >> x^2 - 2*x*y + y ans = 49 - 13*y Para borrar el valor de la variable x, se tipea clear x. Es posible hacer asignaciones generales para variables simblicas y manipularlas. Por ejemo plo, >> >> z = z = x^2 - 2*x*y + y >> 5*y*z 5*y*(x^2-2*x*y+y) El nombre de una variable o una funcin puede ser una cadena de letras, d o gitos, y guines bajos, teniendo en cuenta que debe comenzar con una letra. Matlab distingue entre maysculas u y minsculas. De deben elegir nombres distintivos que sean fciles de recordar, generalmente u a usando letras minsculas. Por ejemplo, podr usarse cubicsol como nombre para la solucion u a de una ecuacin cbica. o u Una gran fuente de errores usar sin darse cuenta nombres de variables denidas con valores asignados previamente. Matlab nunca olvida las deniciones a menos que uno se lo ordene expl citamente. Se pueden chequear los valores de las variables simplemente tipeando sus nombres. ans = clear x; syms x y z = x^2 - 2*x*y + y x = 7

9. Resolviendo ecuaciones Es posible ecuaciones algebraicas utilizando solve o fzero. Por ejemplo, para encontrar las soluciones de la ecuacin cuadrtica x2 2x 4 = 0, se puede tipear o a >> solve(x^2 - 2*x - 4 = 0) [5^(1/2) + 1] [1 - 5^(1/2)] ans =

c 2009 O.R. Faure

Principios bsicos de Matlab a

Debe notarse que la ecuacin a resolverse debe ser especicada como un o string; es decir, debe estar entre comillas. La respuesta consiste de la solucin (exacta) 1 5. Para obtener la o solucin numrica, se tipea double(ans), o vpa(ans) para mostrar ms d o e a gitos. El comando solve puede resolver ecuaciones polinmicas de orden elevado. Tambin es o e capaz de resolver ecuaciones con ms de una variable. Si hay ms ecuaciones que variables, a a deben especicarse (como strings) la o las variables para las que se desea resolver. Por ejemplo, si se tipea solve(2*x - log(y) = 1, y) para resolver 2x log y = 1 para y en trminos e de x. Pueden especicarse tambin ms de una ecuacin. Por ejemplo, e a o >> x = [ 1+2*2^(1/2)] [ 1-2*2^(1/2)] y = [ 7+4*2^(1/2)] [ 7-4*2^(1/2)] Este sistema de ecuaciones tiene dos soluciones. Matlab muestra las soluciones dando los dos valores de x y los dos valores de y para esas soluciones. Entonces, la primera solucin consiste o del primer valor de x combinado con el primer valor de y. Pueden extraerse estos valores tipeando simplemente x(1) e y(1): >> x(1) 1+2*2^(1/2) >> y(1) 7+4*2^(1/2) La segunda solucin puede extraerse de la misma manera con x(2) e y(2). o Ntese que en el comando solve precedente, se asigna la salida al vector [x, y]. Si se usa o solve sobre un sistema de ecuaciones sin asignar la salida a un vector, entonces Matlab no muestra automticamente los valores de la solucin: a o >> sol = solve(x^2 - y = 2, y - 2*x = 5) x : y : [2 x 1 [2 x 1 sym] sym] sol = ans = ans = [x, y] = solve(x^2 - y = 2, y - 2*x = 5)

Para ver los valores de los vectores solucin x e y es necesario tipese sol.x y sol.y. Para ver o e los valores individuales, tipese sol.x(1), sol.y(1), etc. e

c 2009 O.R. Faure

Principios bsicos de Matlab a

exp(!x) y sin(x) 1.0 0.8 0.6 0.4 0.2 0.0 !0.2 !0.4 !0.6 !0.8 !1.0 0 1 2 3 4 5 6 7 8 9 10

Figura 2. ex y sin x Algunas ecuaciones no pueden resolverse simblicamente, y en estos casos solve intenta o encontrar una respuesta numrica. Por ejemplo, e >> solve(sin(x) = 2 - x) 1.1060601577062719106167372970301 A veces existe ms de una solucin, y es posible que no se obtenga la deseada. Por ejemplo, a o >> solve(exp(-x) = sin(x)) -2.01277556629315111633360706990971 +2.7030745115909622139316148044265*i La respuesta es un nmero complejo; la i que aparece al nal de la respuesta denota el nmero u u 1. A pesar de que esta es una solucin vlida de la ecuacin, existen tambin soluciones o a o e reales de sta. De hecho, las grcas de exp(x) y sin x son mostradas en la Figura 1; cada e a interseccin de las dos curvas representa una solucin de la ecuacin ex = sin x. o o o Es posible encontrar numricamente las soluciones mostradas en el grco con fzero, la cual e a busca un cero de la funcin dada en un entorno especicado de x. Una solucin de la ecuacin o o o ex sin x es un cero de la funcin ex sin x, entonces para buscarla cerca de x = 0.5 tipese o e >> fzero(inline(exp(-x) - sin(x)), 0.5) 0.5885 Nota: En el ejemplo anterior, se utiliz el comando inline, sobre el que volveremos ms o a adelante, ste convierte su argumento string en una funcin. e o ans = ans = ans =

10. Vectores y matrices Matlab fue desarrollado originalmente para permitir a ingenieros y cient cos operar los objetos del lgebra lineal, esto es vectores y matrices, con un esfuerzo m a nimo. Ahora introduciremos algunas de esta ideas.

c 2009 O.R. Faure

Principios bsicos de Matlab a

10.1. Vectores. Un vector es una lista ordenada de nmeros. Es posible ingresar un vector u de cualquier longitud en Matlab tipenadouna lista de nmeros separados por comas o espacios, u todo el conjunto dentro de corchetes. Por ejemplo, >> Z = [2, 4, 6, 8 ] Z = 2 4 6 8 >> Y = [4 -3 5 -2 8 1 ] Y = 3 -3 5 -2 8 1 Supngase que se desea crear un vector de con los nmeros desde 1 a 9. Es posible hacerlo sin o u tipear cada nmero: u >> X = 1: 9 X = 1 2 3 4 5 6 7 8 9 La notacin 1: 9 se utiliza para representar un vector de nmeros que va desde 1 hasta 9 con o u un incremento de 1. El incremento puede especicarse como el segundo argumento de una lista de tres: >> X = 0: 2: 10 X = 0 2 4 6 8 10 Tambis es posible utilizar incrementos fraccionales o negativos, por ejemplo: 0: 0.1: 1 o e incluso 100: -1: 0. Los elementos de un vector X pueden referenciarse fcilmente, por ejemplo X(1) es el primer a elemento, X(2) es el sgundo, etc. Para cambiar de un vector la X a un vector columna, solamente escribimos la prima () despus de la X: e >> X ans = 0 2 4 6 8 10 Es posible realizar operaciones matemticas sobre vectores. Por ejemplo, para obtener el a cuadrado de los elementos del vector X, es posible hacerlo tipeando: >> X.^2 ans = 0 4 16 36 64 100 El punto en esta expresin es muy importante, con l, los nmeros de X son elevados al o e u cuadrado individualmente, o elemento a elemento. De manera similar, si se desea multiplicar o dividir vectores elemento a elemento, se debe tipear .* ./ respectivamente. Por ejemplo, o para multiplicar los elementos del vector X por los correspondientes elementos del vector Y, se debe tipear >> X.*Y ans = 0 -6 20 -12 64 10 La mayor parte de las operaciones en Matlab son, por defecto, realizadas elemento a elemento. Por ejemplo, no es necesario tipear el punto para adicin o sustraccin, y si se tipea o o exp(X) obtenemos un vector conteniendo la exponencial de cada elemento del vector X. Para realizar la exponencial matricial se utiliza la funcin expm. Una de las fortalezas de Matlab es o su capacidad para realizar eciente y fcilmente operaciones con vectores. a

c 2009 O.R. Faure

Principios bsicos de Matlab a

10.2. Matrices. Una matriz es un arreglo rectangular de nmeros. Vectores la y columna, u loscuales fueron discutidos anteriormente, son ejemplos de matrices. Considrese la siguiente e matriz de 3 4 1 A= 5 9 >> A = 1 5 9 2 6 10 3 7 11 4 8 12 2 6 10 3 7 11 4 8 . 11

En Matlab puede ingresarse de la sigiuente manera: A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]

Ntese que los elementos en cada la de la matriz son separados por una coma, y las las son o separadas por un punto y coma. Los elementos en una la igualmente pueden separarse por espacios. Si dos matrices A y B tienen el mismo tamao, su suma (elemento a elemento) se obtiene n tipeando A + B. Es posible sumar un escalar (un nmero) a una matriz; A + c suma la cantidad u c a cada elemento de A. Si A y B son compatibles para multiplicar (es decir, si A es de n m y B es de m ), entonces su producto A B es de n . Recurdese que los elementos de la e matriz A B en la i-sima la y la jsima columna es la suma de los productos de los elementos e e de la isima la de A por la jsima columna de B, esto es e e
m

(A B)i,j =
k=1

Ai,k Bk,j ;

1 i n, 1 j .

Para realizar esta operacin en Matlab , solamente es necesario tipear A*B. o El producto de un nmero c y la matriz A est dado por c*A, y A representa la conjuu a gada traspuesta de A. Para ms informacin, pueden consultarse en la ayuda los comandos a o ctraspose y traspose. Una simple ilustracin est dada por el producto de la matriz A de 3 4 por el vector Z T o a de 4 1 dados anteriormente >> A * Z ans = 60 140 220 El resultado es una matriz de 3 1, en otras palabras, un vector columna. Nota: En Matlab existe una gran catidad de comandos para trabajar matrices. Para mayores detalles puede consultarse la ayuda on line. Ms adelante retornaremos sobre este a tema e ilustraremos con algunos ejemplos.

11. Suprimiendo Salidas Tipeando un punto y coma al nal de una l nea se suprime la salida por pantalla de la respuesta del comando en Matlab. El punto uy comadebe utilizarse generalmente cuando se denen vectores o matrices de tamao muy grande (por ejemplo X = -1:0.1:2;). Es util de igual n manera utilizarlo en aquellas situaciones en las que no es necesario ver la respuesta.

c 2009 O.R. Faure

Principios bsicos de Matlab a

10

12. Funciones En Matlab se pueden utilizar tanto funciones internas como funciones creadas por el propio usuario. 12.1. Funciones internas. Matlab tiene una gran cantidad de funciones internas. Entre estas, podemos citar funciones bsicas como por ejemplo sqrt, cos, sin, tan, log, exp, atan a (para el arcotangente), etc, como as tambin funciones especializadas como gamma, erf, y e besselj. Matlab tambin trabaja con muchas constantes, incluyendo pi (el nmero ), i (el e u nmero complejo i = 1), e inf (). Aqu presentamos algunos ejemplos: u >> log(exp(3)) ans = 3 La funcin log es el logaritmo natural, llamada ln en muchos libros de texto. Ahora o consideremos >> sin(2*pi/3) ans = 0.8660 Para tener la respuesta exacta, es necesario utilizar un argumento simblico, esto puede hacerse o por ejemplo de la siguiente manera: >> sin(sym(2*pi/3)) ans = 1/2*3^(1/2)

13. Funciones definidas por el usuario Aqui se mostrar de que manera se puede utilizar el comando inline para denir sus propias a funciones. Aqu se muestra de qu manera se puede denir la funcin polinmica f (x) = e o o x2 + x + 1: >> f = inline(x^2 + x + 1, x) f = Inline function f(x) = x^2 + x + 1 El primer argumento de inline es un string que comntiene la expresion que dene la funcin. o El segundo argumento es un string que especica el valor de la variable independiente. Luego de que la funcin fue denida, es posible evaluarla: o >> f(4) ans = 21 Las funciones en Matlab pueden operarse tanto sobre escalares como sobre vectores. Para que una funcin denida inline pueda operar vectorialmente debe usarse la funcin vectorize de o o Matlab . Esta es la versin vectorizada de f (x) = x2 + x + 1: o >> f1 = inline(vecoriza(x^2 + x + 1), x) f1 = Inline function: f1(x) = x.^2 + x + 1 Ntese que ^ ha sido reemplazado por .^. Ahora es posible evaluar f1 sobre un vector: o >> f1(1:5) ans =

c 2009 O.R. Faure

Principios bsicos de Matlab a

11

13

21

31

Es posible dibujar f1, como veremos luego. Para concluir, es importante destacar que es posible denir funciones de dos o ms variables: a >> g = Inline function: g(u, v) = u.^2 + x^2 g = inline(u^2 + v^2, u, v)

c 2009 O.R. Faure

Vous aimerez peut-être aussi