Вы находитесь на странице: 1из 12

AMPLIACIN DE MATEMTICAS (2 Ingeniera de Telecomunicacin y Aeronutico)

Departamento de Matemtica Aplicada II. Universidad de Sevilla CURSO ACADMICO 2008-2009

Prctica I: Breve Introduccin a Matlab Aspectos Generales de Matlab


Acceso a Matlab. En las clases de laboratorio se utilizar la versin de Matlab instalada en el Centro de Clculo de nuestra escuela. Las presentes notas deben entenderse slo como una sencilla introduccin a aquellos aspectos de este programa que van a ser utilizados repetidamente durante el curso. Es muy recomendable profundizar en algunos de los temas aqu tratados, especialmente, en todo lo relacionado con el manejo de archivos *.m y con la programacin. Para ello puede, por ejemplo, consultarse el excelente manual de Javier Garca de Jaln, Jos Ignacio Rodrguez y Jess Vidal, "Aprenda Matlab 7.0 como si estuviera en primero", disponible en la pgina WEB http://mat21.etsii.upm.es/matesp/docs/tutoriales/matlab70primero.pdf Para empezar a trabajar con Matlab, debe arrancarse el ordenador en el modo Matlab siguiendo las correspondientes instrucciones del Centro de Clculo de la Escuela. Posteriormente, para abrir una ventana y comenzar una sesin, basta buscar el icono correspondiente a Matlab en el escritorio de Windows, situarnos sobre l con el ratn y pulsar dos veces su botn izquierdo. El smbolo >> (prompt ) nos indica que el programa est a la espera de nuestras instrucciones. Para salir de Matlab basta teclear exit o quit y para ejecutar cualquier instruccin la tecla Return . Hemos de tener en cuenta que una instruccin termina al cambiar de lnea. Si necesitamos escribir ms de una lnea, debemos poner el smbolo ... (tres puntos) al nal de la misma y continuar en la siguiente. Si lo que queremos es escribir varias instrucciones dentro de la misma lnea basta separarlas por comas. El cursor se posiciona con las echas izquierda/derecha , y para borrar caracteres pueden usarse las teclas Backspace o Supr . Si lo que se desea es borrar toda la lnea de edicin puede usarse la tecla Esc . Tambin son accesibles otras posibilidades de edicin en lnea (de signicado completamente intuitivo) con las teclas Inicio , Fin

o Insert . Otra opcin muy til es usar las echas arriba/abajo , para recuperar las rdenes previas. Por tanto, se puede recuperar una lnea anterior de rdenes, editarla y ejecutarla revisada. Para limpiar completamente la pantalla se utiliza la orden clc. Funciones implementadas en Matlab. El programa Matlab lleva implementadas la inmensa mayora de las funciones matemticas ms utilizadas, las cuales suelen admitir argumentos escalares y vectoriales. Adems, Matlab maneja con facilidad nmeros complejos y, utiliza indistintamente la i y la j para representar el nmero imaginario unidad. Conviene precisar que los parntesis ( ) y los corchetes [ ] tienen signicados bien distintos en Matlab. Los primeros se utilizan para evaluar funciones y los segundos para denir vectores o matrices. La orden help permite obtener ayuda de las distintas funciones que Matlab tiene implementadas. Por ejemplo, >> help log permite conocer el funcionamiento de la funcin logaritmo (variables de las que depende, ...). Ejercicio resuelto 1. (a) Determine el valor de la raz cuadrada del logaritmo neperiano del seno de cinco. (b) Compruebe que 3-4-5 son las dimensiones de un tringulo rectngulo. >> sqrt(log(sin(5))) >> sqrt(3^2+4^2)-5 Ejercicio 2. Evale la expresin tan s2 2 sen +1 , 5

para s = 0.5, 0.95 y 1.

Ejercicio 3. Ejecute las rdenes clock, date y calendar. Interprete las respuestas proporcionadas por Matlab y limpie posteriormente la pantalla. Formatos numricos. Para visualizar los resultados, Matlab ofrece varias posibilidades aunque, por defecto, representa los nmeros en pantalla con redondeo a cuatro cifras decimales. Tambin decide si representa un nmero en notacin convencional (coma ja) o en notacin cientca (coma otante). Los nmeros enteros que tengan menos de nueve cifras siempre se representan en coma ja. La orden para la representacin en pantalla es format y admite, entre otras, las siguientes opciones: format long: 16 dgitos. format short: 4 dgitos. Equivale a escribir slo format. 2

format long e: 16 dgitos ms exponente. format short e: 4 dgitos ms exponente. Es fundamental entender que Matlab no cambia la representacin interna de un nmero cuando se escogen diferentes formatos, slo se modica su visualizacin. Ejercicio resuelto 4. Escriba en los cuatro formatos anteriores el nmero . >> pi >> format long, pi >> format long e, pi >> format short e, pi Ejercicio 5. Ejecute las rdenes realmax y realmin para conocer exactamente el rango real en el que se mueven los nmeros que maneja Matlab. Variables. Una variable es simplemente una etiqueta que se asigna temporalmente a un dato. El modo de denir una variable cualquiera en Matlab es variable=expresin. Por ejemplo, >> a=7*pi Para saber el valor actual de una variable slo hay que escribirla y pulsar la tecla Return . El resultado de ejecutar en Matlab cualquier expresin matemtica se guarda, por defecto, en una variable denominada ans, que sale inmediatamente en pantalla y que toma como valor el correspondiente resultado. Si deseamos que esta variable no aparezca en pantalla, basta teclear al nal de la expresin el smbolo ; (punto y coma). Ejercicio 6. Cree dos variables que almacenen los valores 2 3 23 e , log(37 + cos(73 )) 6ch(5) y calcule su suma y su producto. Ejercicio 7. Consulte la ayuda sobre la variable predeterminada i y calcule i2 . Posteriormente, dena la variable i como dos y vuelva a calcular i2 . Qu regla prctica debe concluirse?

El Entorno de Trabajo de Matlab


El entorno de trabajo. A partir de la versin 5.0, el entorno de Matlab ha mejorado mucho, hacindose mucho ms grco e intuitivo. Los principales componentes de dicho entorno son el explorador de caminos de bsqueda (Path Browser ), el editor y depurador de errores (Editor/Debugger ) y el visualizador del espacio de trabajo (Workspace Browser ). 3

Path Browser. Matlab puede llamar a una gran variedad de funciones, tanto propias como programadas por los usuarios. A veces, puede haber funciones distintas que tengan el mismo nombre. Por tanto, es interesante saber cmo Matlab busca cualquier funcin que se le pida que ejecute. La clave es el camino de bsqueda (search path ) que el programa utiliza cuando encuentra el nombre de una funcin. El search path es una lista de directorios que se puede ver y modicar mediante la orden path, o utilizando el Path Browser (Submen Set Path en el men File ). El directorio actual. El concepto de directorio actual o de trabajo es crucial en Matlab. Es el directorio donde el usuario debe guardar los diferentes archivos que genere en las sesiones, para que Matlab pueda detectarlos. Puede consultar el directorio en que se encuentra con la orden pwd. El contenido de dicho directorio puede obtenerse con la orden dir. Para cambiar el directorio actual se utiliza la orden cd (Change Directory ) seguido del nombre del nuevo directorio. Ejecutando cd .., se sube un nivel en la jerarqua de directorios. Editor/Debbuger. En Matlab tienen particular importancia los M-archivos, esto es, archivos con la extensin *.m, los cuales son archivos de texto ASCII que contienen un cierto conjunto de rdenes de Matlab. La importancia de estos archivos es que al teclear su nombre en la lnea de rdenes de Matlab y pulsar Return , se ejecutan todas las rdenes contenidas en dicho archivo. Matlab dispone de un editor propio que permite tanto crear y modicar estos archivos (proceso de edicin-Editor ), como ejecutarlos paso a paso para detectar errores (proceso de depuracin-Debugger ). Workspace Browser. El espacio de trabajo (Workspace ) de Matlab es el conjunto de variables que en un determinado momento estn denidas en la memoria del programa. Para obtener informacin sobre el workspace se pueden utilizar las rdenes who y whos. La segunda proporciona una informacin ms detallada que la primera. Copias completas de una sesin de trabajo. Matlab incorpora la orden diary para guardar sesiones completas de trabajo con Matlab. Esta orden puede ser de gran utilidad en el desarrollo de las clases prcticas, pues permite guardar en un archivo de texto todos los resultados obtenidos en la sesin, los comentarios realizados en la clase y, en general, todo lo que el programa va presentando en pantalla. La forma natural de proceder es la siguiente: se teclea diary nombre1.txt. De este modo, se crea el archivo nombre1.txt en el directorio actual y todo aquello que aparezca en pantalla, a partir de ese momento, se graba en dicho archivo. Para que dejen de grabarse las instrucciones que aparecen en pantalla hay que teclear diary o y para volver a abrir el archivo diary on.

Matrices y Vectores
4

Matrices y vectores. En Matlab se trabaja fundamentalmente con matrices. De hecho, para Matlab, los nmeros son simplementes matrices cuadradas de orden uno. Las matrices pueden denirse de las siguientes formas: Escribir la matriz entre corchetes, colocando las las una a continuacin de otra, separadas por el simbolo ;. Entre los elementos de una misma la podemos colocar una coma o dejar un espacio en blanco. Escribir la matriz entre corchetes, colocando cada la en un rengln. La matriz vaca se representa por [ ]. Como es natural, si slo introducimos una la tenemos un vector la. Matlab incluye una orden muy til para generar vectores cuyas coordenadas estn en progresin aritmtica. En concreto, la estructura a:b:c crea un vector entre los nmeros a y c, incrementando cada coordenada con el nmero b. Si slo se escribe a:c se considera que b es igual a uno. Ejercicio resuelto 8. Genere tres vectores cuyos elementos representen una particin del intervalo [-1,1] en cinco, ocho y diez subintervalos iguales. Con las tres primeras coordenadas de cada uno de ellos, genere las tres las de una matriz 3 3 y calcule el determinante de dicha matriz y de su traspuesta. >> u=-1:2/5:1, v=-1:2/8:1, w=-1:2/10:1 >> A=[-1, -0.6, -0.2 -1, -0.75, -0.5 -1, -0.8, -0.6] >> B=A >> det(A), det(B) Ejercicio 9. Considere la matriz mgica de orden 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 cuatro .

Utilizando la orden sum, explique la razn de denominarla mgica. Direccionamiento y manipulacin de matrices. Para seleccionar un elemento determinado de una matriz se escribe el nombre de la matriz seguido del nmero de la y columna separados por una coma y entre parntesis. Si se desea extraer una submatriz basta colocar, en vez de nmeros, vectores cuyas componentes son los nmeros de las correspondientes las y columnas. El smbolo dos puntos es muy til para crear submatrices. Cuando no se le dan valores a derecha e 5

izquierda recorre, por defecto, todos las las o columnas. Si colocamos datos fuera del rango actual de una matriz se rellenan con ceros las zonas no especicadas. Ejercicio resuelto 10. Obtenga de cuatro maneras distintas la submatriz formada por la segunda y la tercera la de la siguiente matriz 1 1 1 1 1 2 2 2 A= 1 2 3 3 . 1 2 3 4 >> >> >> >> >> A = [1 1 1 1; 1 2 2 2 ; 1 2 3 3 ; 1 2 3 4 ] A(2:3,1:4) A(2:3,:) A([2 3],[1 2 3 4]) A([1 4],:)=[]

Ejercicio 11. Dena la matriz A cuadrada de orden 15 tal que todos sus elementos son nulos, salvo la primera la y la primera columna, las cuales toman los valores, respectivamente de la columna o la en que se encuentran. Ejercicio 12. Escriba las matrices A y B denidas por A(i, j ) = 10(i j ) + 1; i, j = 1, ..., 10. 1, i j = 1 B (i, j ) = , i, j = 1, ..., 20 0, en otro caso

Grcas en Matlab
La ventana grca de Matlab. Para mostrar las correspondientes grcas, Matlab abre una nueva ventana, la denominada ventana de gura. Si ya hubiera una ventana de gura, se borra la ventana de gura actual y se dibuja en ella la nueva grca. Para utilizar dos o ms grcas en diferentes ventanas de gura, se usa la orden gure. La orden gure(n) muestra o crea, si no la hay, la ventana de gura n-sima y sta pasa a ser la ventana de gura activa. La orden close cierra la ventana grca activa.

Grcas bidimensionales. Para obtener grcas 2-D, Matlab admite cuatro opciones: grcas en coordenadas cartesianas, grcas en coordenadas polares, grcas de barras y grcas de escaleras. La orden para representar datos bidimensionales en coordenadas cartesianas es plot, para crear grcas en coordenadas polares es polar y, nalmente, los grcos de barras y escaleras se generan usando las ordenes bar y stairs, respectivamente. 6

La orden plot escala los ejes para ajustar los datos, representa los puntos y, a continuacin, conecta los puntos con una lnea recta. Tambin aade una escala numrica y coloca de forma automtica marcas en ambos ejes. Conviene aclarar que lo primero que se hace al ejecutar la orden plot es eliminar toda la informacin (lneas, ejes,...) sobre la grca anterior, si la hubiere. Ejercicio resuelto 13. Dibuje la grca de la funcin exponencial en el intervalo [-2,2]. Obtenga una segunda grca donde a la curva anterior se le aada la recta tangente en x = 0. >> x=-2:0.01:2; y=exp(x); plot(x,y) >> z= x+1; plot(x,y,x,z) Ejercicio 14. Resuelva el ejercicio anterior usando la orden hold. Ejercicio 15. Dibuje la grca de la elipse centrada en el origen y de semiejes 3 y 5. Ejercicio 16. Dibuje un polgono regular de 20 lados que pueda inscribirse en una circunferencia de radio uno. (Indicacin: Evalue plot sobre un vector cuyas componentes sean nmeros complejos). Grcas tridimensionales. Para obtener grcas 3-D, Matlab admite tres opciones: grcas de lneas, grcas de supercies y grcas de contorno. La orden bsica para realizar grcas de lneas es plot3, las rdenes para grcas de supercies son mesh y surf y, nalmente, para grcas de contorno es contour. Grcas de lneas. La funcin plot3 es anloga a su homloga bidimensional plot. Su forma ms sencilla es plot3(x,y,z) la cual dibuja una lnea que une los puntos (x(1),y(1),z(1)), (x(2),y(2),z(2)), (x(3),y(3),z(3)), etc, y la proyecta sobre un plano para poderla representar en pantalla. Ejercicio resuelto 17. Dibuje en verde un trozo de una espiral cilndrica. >> fi=[0:pi/20:6*pi]; >> plot3(cos(fi),sin(fi),fi,g) Ejercicio resuelto 18. Una forma alternativa de obtener el anterior vector fi es usar la orden linspace. Pide ayuda a Matlab sobre tal funcin y obtn de nuevo dicho vector. Ejercicio 19. Dibuje la curva alabeada de ecuaciones paramtricas x(t) = cos(t2 ), y = cos(t) sen(t), z = sen(t), t [4, 4 ]. Grcas de supercies. La idea es dibujar una funcin de dos variables sobre un dominio rectangular. Supongamos que x e y son dos vectores que contienen las coordenadas 7

en una y otra direccin de la retcula sobre la que se va a dibujar la funcin. Se comienza generando dos matrices X (cuyas las son copias de x) e Y (cuyas columnas son copias de y) con la orden meshgrid, las cuales representan las coordenadas de todos los puntos del reticulado. Posteriormente, se calcula la matriz grca de datos Z a partir de las matrices de coordenadas X e Y, teniendo en cuenta la funcin de que se trate. Finalmente, la matriz Z se dibuja con la orden mesh o la orden surf. Ambas rdenes dibujan la funcin en perspectiva y la diferencia entre ellas est en el llenado de color de las clulas generadas por el mallado. Ejercicio resuelto 20. Dibuje en un cuadrado la funcin sombrero p p z = sen( x2 + y 2 )/ x2 + y 2 . >> >> >> >> u=-8:0.5:8;v=u; [U,V]=meshgrid(u,v); r=sqrt(U.^2+V.^2)+eps;w=sin(r)./r; mesh(w)

Ejercicio 21. Represente la supercie en paramtricas x = 4 cos(r) sec(t), y = 2 sen(r) sen(t), z = tan(t), donde t [, ] y r [2, 2]. En las versiones recientes de Matlab, hay un grupo de funciones que permite realizar grcos de forma ms sencilla. Ejemplos de ellas son ezplot y ezsurf.

Archivos en Matlab

Comentarios generales. Para trabajar con datos de gran tamao, o bien para disear nuevas funciones en Matlab, es completamente imprescindible trabajar con archivos y, por tanto, con el editor de texto de Matlab. Los archivos adicionales que Matlab utiliza bsicamente son aquellos con extensin *.m y una parte importante de cada sesin con Matlab es crear y renar este tipo de archivos. Atendiendo a su uso, los M-archivos suelen dividirse en dos grandes grupos: archivos de instrucciones o tipo script y archivos de funciones. Como se coment, Matlab dispone de un editor excelente que facilita enormemente el trabajo con los M-archivos. En concreto, el editor muestra con diferentes colores los diferentes tipos o elementos constituyentes de las rdenes (en verde los comentarios, en rojo las cadenas de caracteres, ...). Adems, el editor se preocupa tambin de que las comillas o parntesis que se abran tengan el correspondiente elemento de cierre. Para acceder al editor desde la ventana principal de Matlab, basta pulsar el men File y despus New/ M-le (si se desea crear un archivo nuevo), o bien pulsar el men File y despus Open M-le... (si se desea abrir un archivo ya existente). El manejo de esta nueva ventana es totalmente intuitivo. Otra opcin para abrir el editor es la orden edit. 8

Ejercicio resuelto 22. Abra un archivo usando el editor de Matlab, escriba en l una matriz cuadrada de orden 2 y guarde dicho archivo con el nombre prueba.m. Pulsar: File New M-le Escribir: A=[1 2; 2 1] Pulsar Guardar como En Nombre de Archivo escribir prueba.m Con la pestaa Guardar en, situarse en el directorio donde uno quiera almacenarlo y pulsar Guardar. Archivos de instrucciones. Un M-archivo de este tipo consiste en una sucesin de instrucciones de Matlab. Para ejecutarlas y ver el correspondiente resultado en pantalla, basta escribir el nombre del archivo (sin la extensin) y pulsar Return . Las variables en un archivo de instrucciones son globales y, por tanto, pueden afectar a los valores de las variables que se hayan creado durante la sesin de trabajo con Matlab. Los archivos de instrucciones son bsicamente utilizados para introducir datos en matrices de grandes dimensiones, pues en un archivo de este tipo es fcil corregir errores sin repetir todo el trabajo. Ejercicio resuelto 23. Escriba y guarde en un archivo de nombre datos.m la matriz cuadrada de orden veinte tal que los elementos de su diagonal son todos iguales a 3 y las dos subdiagonales principales estn formadas por unos. Calcule su determinante. Posteriormente cambie la diagonal por el vector cuyas coordenadas son los primeros veinte nmeros naturales y vuelva a calcular el determinante de la nueva matriz. Escribir en un archivo: A=diag(3*ones(20,1)); A=A+diag(ones(19,1),1); A=A+diag(ones(19,1),-1); Guardar en datos.m Ejecutar el archivo y escribir en Matlab >> det(A) Abrir datos.m A=A-diag(3*ones(20,1)); A=A+diag(1:20); Guardar datos.m Ejecutar el archivo y escribir en Matlab >> det(A) Archivos de funciones. Los M-archivos de funciones son los que permiten incrementar la coleccin de funciones que ejecuta Matlab. Es decir, se pueden crear funciones especcas para algn problema concreto y, a partir de su introduccin, dichas funciones tienen el mismo rango que las funciones del sistema y se ejecutan de igual forma. Las variables en los archivos de funciones son locales, es decir, no afectan a los valores de las variables que se hayan creado durante la sesin de trabajo con Matlab. 9

Se aconseja que el nombre de un archivo de funcin sea el nombre de la funcin seguido, obviamente, de la extensin .m. La estructura de un archivo de este tipo es la siguiente: la primera lnea comienza con la orden de Matlab function seguida del nombre de la funcin que queramos denir junto con los argumentos de entrada y salida separados por comas. Es decir, function [argumentos de salida]=nombre de la funcin(argumentos de entrada). A continuacin, puede haber diversas lneas de comentario que han de estar precedidas necesariamente por el smbolo %. Conviene decir que son precisamente estas lneas las que aparecern en pantalla al usar la orden help. Finalmente aparece el programa, esto es, las instrucciones necesarias para poder evaluar la funcin. Tanto los argumentos de entrada como los de salida no son obligatorios y, si no aparecen, no hace falta escribir los correspondientes corchetes o parntesis. Ejercicio resuelto 24. Disee una funcin que muestre la grca de la funcin y = xn en [2, 2] [4, 12] y cuyo argumento de entrada sea el nmero n. La grca debe tener un mallado y deben situarse los ejes de coordenadas. function graf(n) x=-2:0.01:2; y=x.^n; plot(x,y);axis([-2 2 -4 12]); hold on plot([-2.2 2.2],[0 0],w, [0 0], [12 -4],w); grid; hold off; Ejercicio 25. Disee una funcin que devuelva el producto escalar de dos vectores x e y de Rn . Los argumentos de entrada deben ser los vectores x e y. Adems, el correspondiente archivo debe incluir algunas lneas de comentario. Ejercicio 26. Disee una funcin que calcule el factorial de un nmero natural n. El argumento de entrada debe ser dicho nmero n.

Programacin en Matlab
La orden for. La sintaxis para la utilizacin de esta orden de control es for variable=vector instrucciones sobre la variable . end

El signicado es el siguiente: mientras la variable recorre los valores del vector, se realizan las instrucciones descritas, con la variable tomando dichos valores. Matlab permite anidar varias rdenes for. 10

Ejercicio resuelto 27. Disee una funcin que devuelva el trmino n-simo de la iteracin xn+1 = x2 n 2xn , Obtenga x1 , x15 y x50 . Crear un archivo iter.m function z=iter(n) x=4; for k=1:n x=x^2-2*x; end z=x; En Matlab >> iter(1) >> iter(15) >> iter(50) Ejercicio 28. Dada una matriz cuadrada de orden n, disee una funcin usando la instruccin for, que sume los elementos de mayor mdulo de cada una de las columnas de dicha matriz. Ejercicio 29. denida por Usando dos instrucciones for anidadas, genere la matriz cuadrada A, A(i, j ) = i2 j, i, j = 1, ..., 10. x0 = 4.

Sabra generar A sin usar ninguna instruccin for? La orden if. La sintaxis habitual para la utilizacin de esta orden de control es if relacin lgica P1 instrucciones Q1 else . instrucciones Q 2 end

El signicado es el siguiente: si P1 es cierto se ejecutan las instrucciones Q1 y si P1 es falso se ejecutan las instrucciones Q2 . Las lneas tres y cuatro anteriores pueden suprimirse y, en este caso, cuando P1 sea falso, no se ejecuta ninguna instruccin. Ejercicio resuelto 30. Disee una funcin sobre los nmeros enteros que asigna el valor 1 a los nmeros pares y positivos, el valor -1 a los nmeros impares y positivos y el valor cero a los nmeros restantes. function paridad=paridad(n) if n<=0 11

paridad=0; elseif rem(n,2)==0 paridad=1; else paridad=-1; end Ejercicio 31. Disee una funcin que calcule todos los divisores de un nmero natural dado. Ejercicio 32. Disee una funcin que calcule todos los nmeros naturales perfectos menores que uno dado. Un nmero natural se dice perfecto si dicho nmero es la suma de todos sus divisores menos l. La orden while. La sintaxis para la utilizacin de esta orden de control es while relacin lgica(contador) instrucciones(contador) . end

El signicado de este esquema es que las instrucciones se irn ejecutando mientras la relacin lgica sea cierta.

Ejercicio resuelto 33. Determine el valor de la precisin de la mquina usando un bucle while. Compare el valor obtenido con la variable predenida eps de Matlab. function precmaq precmaq=1; while (1+precmaq)>1 precmaq=precmaq/2; end precmaq = 2*precmaq Ejercicio 34. Calcule el primer trmino de la sucesin de Fibonacci xn+1 = xn + xn1 , que supere 106 . Ejercicio 35. Un conocido resultado de L. Euler (1707-1783) arma que
P 1 n2

x1 = x2 = 1;

n=1

2 . 6

Obtenga el menor nmero de sumandos de la serie anterior, de modo que la correspon2 diente suma nita aproxime 6 con un error menor o igual que 104 y que 106 .

12

Вам также может понравиться