Está en la página 1de 18

1

MATLAB
MATLAB es un entorno de programacin que combina clculo numrico, creacin y visualizacin de grficos y un lenguaje de programacin de alto nivel orientado al clculo matricial, su ms potente aplicacin. La biblioteca de funciones incorporadas de MATLAB es muy extensa e incluye, adems, herramientas de clculo especficas llamados Toolboxes; entre otras, dos especialmente tiles: disttool, un entorno grfico que representa la funcin de distribucin de densidad o la funcin de distribucin acumulada de varias funciones de distribucin de uso frecuente en Estadstica y randtool, un potente generador de nmeros aleatorios. Los clculos pueden efectuarse directamente desde el teclado, como si de una calculadora de bolsillo se tratara, o bien mediante programas. Las prestaciones de MATLAB son muy numerosas y completas, sin embargo, por razones de espacio y tiempo lo que sigue es un resumen forzosamente limitado a los comandos y operaciones ms frecuentes. Quienes, movidos por la curiosidad o la motivacin, deseen profundizar ms en el manejo de MATLAB debern consultar la Gua del Usuario (un grueso volumen) o la ayuda incorporada (Help) del programa mismo. 1 CONCEPTOS BSICOS MATLAB funciona desde WINDOWS en los ordenadores PC compatibles del laboratorio de Astrofsica y en el aula de Informtica de la Facultad. Para ponerlo en marcha se activa el correspondiente icono en el administrador de programas (hay un acceso directo), se abre entonces una ventana llamada Ventana de Comandos en la que se teclean los comandos. En la parte superior de la ventana aparece un men con las cinco opciones: File, Edit, Options, Windows y Help algunas de cuyas funciones tienen un significado similar al de otros programas (abrir y cerrar ficheros de programas, cortar, copiar pegar, etc.); otras se comentarn a lo largo de este texto y todas ellas las debe explorar el lector. Aquellos lectores que se enfrenten por primera vez a MATLAB encontrarn especialmente interesantes los comandos intro y demo. Si escribimos intro y pulsamos se activa una demostracin de las posibilidades generales del programa, en la que pantalla a pantalla se explican los conceptos bsicos y caractersticos de MATLAB y nos dar, por tanto, una visin global y rpida (dura slo unos pocos minutos) que contribuir a entender mejor el programa. La opcin demo son demostraciones sobre temas muy concretos de MATLAB (trazado de grficos, operaciones con matrices, funciones especiales, etc.). Se accede a ellas escribiendo demo y siguiendo las instrucciones que aparecen en pantalla. En general: Los comandos se ejecutan escribiendo su nombre en la lnea de comandos (sealada con el smbolo ) y pulsando a continuacin. Veamos ahora unas cuantas normas generales: 1.- Los comandos MATLAB se escriben siempre con minsculas. 2.- Los nombres de las variables se pueden escribir con maysculas o minsculas, pero las entiende como diferentes, es decir, temp y Temp seran dos variables diferentes que pueden albergar valores distintos.
1

3.- La asignacin de valores a las variables de tipo escalar (los vectores y matrices se comentarn ms adelante) se hace de la forma: nombre-de-variable = valor-numrico[;]. Los corchetes ([ ]) indican que el signo ; es optativo; si no se escribe ;se repite en pantalla el nombre y valor de la variable (eco de pantalla). 4.- Unidad de trabajo. Con frecuencia necesitaremos leer datos de (o escribir resultados en) un fichero externo; conviene, por tanto, tener activada permanentemente la unidad de trabajo (a:, c:, etc.) que ser aquella donde se encuentren los datos (o donde se desee guardar los resultados). Esto se hace con el comando cd u:\subdirectorio: donde u: es la unidad. Si no se efecta esta operacin el directorio de trabajo es: C:\MATLAB\BIN, que no debemos utilizar para nuestros trabajos. 5.- Contenido del directorio de trabajo. Usaremos el comando: dir dir *.dat o dir a*.* y aparecer una lista completa de los ficheros que contiene. Tambin podemos usar comodines: mostrara slo los ficheros con extensin DAT o los que su nombre empezara por A, respectivamente.

Los comandos cd o dir son de los pocos comandos de DOS que pueden usarse en el entorno MATLAB. Si, estando en este entorno, hay necesidad de usar comandos DOS podemos hacerlo anteponiendo el smbolo !. Por ejemplo: ! copy c:\nombre.ext a:\. 6.- Los comandos de carcter general who, whos y clear. En una sesin de trabajo se definen numerosas variables, las podemos ver todas ejecutando: who aparece en pantalla una lista completa de los nombres de stas que ya estn definidas y cuyos nombres no debemos volver a usar salvo que deseemos redefinirlas. El comando adems de los nombres nos indica la dimensin (1 by 1, para escalares, m by n, para matrices mn), el nmero de datos que alberga dicha variable, el tamao (en bytes), la densidad y si es o no variable compleja. El comando

whos

clear [nombre] borra la variable llamada nombre; si omitimos ste, se borran todas las variables. 7.- Los comandos de ayuda help y lookfor. De utilidad cuando no recordamos la sintaxis correcta o el nombre de un comando: help nombre-del-comando: aparecer en la pantalla toda la informacin disponible sobre dicho comando acompaada en algunos casos de

ejemplos. Puede suceder, tambin, que; en este caso usaremos la instruccin lookfor texto En caso de que hayamos olvidado incluso el nombre: El texto contiene la palabra, palabras o slabas que suponemos deben figurar en la definicin de lo que estamos buscando.

Ejemplo: supongamos que no conocemos, o hemos olvidado, el nombre del comando que calcula el producto vectorial de dos vectores pero s sabemos que existe tal comando, elegimos como texto o palabra clave prod y escribimos lookfor prod. Aparecera en la pantalla el siguiente texto como resultado: CROSS CUMPROD DOT PROD KRON BOXUTIL Vector cross product. Cumulative product of the elements. Vector dot product. Product of the elements. Kronecker tensor product. Produces a single box plot.

observamos que prod aparece en el texto explicativo formando parte de las palabras product y produces; tambin en los comandos CUMPROD y PROD; ninguno de estos dos nos sirven, ya que, como se ve, el comando buscado es CROSS. Si ahora escribimos help cross , completaramos la informacin sobre su sintaxis y dems circunstancias. Hay que manejar con un poco de cuidado el comando lookfor, ya que si el texto es demasiado general o ambiguo MATLAB respondera con un nmero abrumador de pginas (pantallas) de texto lo que nos supondra un trabajo y un tiempo excesivos. Obviamente, podramos hallar la descripcin del comando cross navegando por la opcin Help del men, pero esto suele llevar ms tiempo. 2 ESCALARES, VECTORES, MATRICES 2.1 Escalares Ya hemos visto antes cmo se asignan valores a una variable, aadamos ahora que el carcter entero, real, complejo o alfanumrico de una constante o variable queda determinado por la forma misma en que se escribe ese dato. x=-3 y = 3.27 z=2-3i s=Orin Nmero entero negativo Nmero real positivo Numero complejo Variable alfanumrica. Las comillas son obligatorias y los espacios en blanco tambin son caracteres. Para conocer ms detalles sobre las funciones de variables alfanumricas, consultar la ayuda ejecutando help strfun.

MATLAB representa los nmeros con cuatro cifras decimales salvo que se le indique otra cosa. Las formas alternativas de representacin se eligen pulsando con el ratn (o teclas Alt+O) en el men: Options y Numeric Format: se desplegar un submen con las siguientes opciones: Short (default): Long: Hex: Bank: Plus: representacin con cuatro cifras decimales 15 dgitos decimales formato hexadecimal 2 decimales escribe +, - o espacio en blanco para cantidades positivas, negativas o cero respectivamente Short e y Long e: notacin exponencial, exx, con 4 15 dgitos decimales respectivamente; Rational: aproxima un nmero real mediante el cociente de dos enteros, por ejemplo =355/113). Para ms informacin sobre los formatos ejecutar help format 2.2 Vectores: Hay tres formas de crear vectores: 1) Vectores con cualesquiera componentes: Se crean escribiendo entre corchetes ,[ ], sus componentes separadas por espacios en blanco (al menos uno). As se escribira: v=[1 2.5 -3.2] v= [1 ; 2.5 ; -3.2] v=[1 2.5 -3.2] z=[-1.5 sqrt(2) sin(pi/4)] El vector fila v=(1, 2.5, 3.2) El mismo v expresado como vector columna. Obsrvese que ; acta como delimitador de las columnas Otra forma vlida de expresar v como vector columna

Componentes de z definidas por funciones MATLAB.

En este ltimo ejemplo sqrt(x) es la raz cuadrada de x y pi es el nmero . En general, el punto y coma dentro de los corchetes, tanto en vectores como en matrices, acta como separador de filas. Un vector fila se convierte en vector columna (y viceversa) mediante la operacin algebraica de la transposicin, que en MATLAB se denota mediante el apstrofo ; as y = x indica que el vector y es el transpuesto del vector x.

2) Vectores con componentes equiespaciadas: x=1:4 x=0 : 0.25 : 1 generara el vector x=(1,2,3,4), donde se supone que el valor del equiespaciado es 1, por defecto. el intervalo o equiespaciado vale 0.25 en este caso, obtendramos x=(0,.25,.5,.75,1). Se admite tambin intervalos negativos, por ejemplo: x=4:-1:1, dara x=(4,3,2,1).

3) Usando las funciones espaciadoras de datos: x=linspace(a,b,n): crea un vector de n componentes, la primera vale a y la ltima vale b. y=logspace(a,b,n): similar a la anterior slo que se tomaran n puntos espaciados logartmicamente entre 10 y 10b. Si no se especifica el nmero de puntos se toma por defecto n=100 en linspace y n=50 en logspace. 2.3 Matrices: Se puede generar matrices de cuatro formas diferentes: 1): a=[1 2 3 ; 4 5 6 ; 7 8 9] Especificando el valor de cada elemento y delimitando las filas (;) a=[1 2 3 Equivalente a la anterior 456 7 8 9] 2) Mediante un fichero .M (vase ms adelante): a=matriza Suponemos que existe en el directorio activo un fichero llamado matriza.m que contiene el texto: a=[1 2 3 ; 4 5 6 ; 7 8 9] u otra definicin equivalente 3) Leyndola directamente de un fichero de datos con el comando load: load tabla1.dat carga el contenido de tabla1.dat en una variable que se llama tabla1

Esta ltima es la forma ms til y sencilla -tambin la ms frecuente- ya que permite cargar un gran volumen de datos almacenados en un fichero ASCII normal, en este ejemplo llamado tabla1.dat, que contiene los datos que nos interesan en forma de tabla de n filas y m columnas. Lo que MATLAB hace es cargar el contenido de tabla1.dat en una variable que se llama de la misma forma que el fichero origen (y suprimiendo la extensin dat); en lo sucesivo los datos del fichero se podrn manejar a nuestra conveniencia en la forma de una variable matricial aritmtica (de dimensin mn) llamada tabla1. Precisamente el hecho de que tabla1 sea una matriz pone una severa limitacin a la estructura del fichero tabla1.dat y es que ste ha de contener slo nmeros separados por espacios, para conformar una estructura de filas y columnas; ni signos ni caracteres alfabticos, tampoco huecos en los lugares en los que tendran que figurar nmeros, nada que sea ajeno a una matriz numrica.

2.4 Manipulacin de vectores y matrices Los elementos de una matriz (o vector) se identifican por sus subndices escritos entre parntesis; sea el vector x=[1 2 -3 5], si escribimos x(3) el programa responder escribiendo en pantalla -3. Se puede aadir elementos a una matriz (o vector), por ejemplo haciendo x(6)=-4, con lo que x valdra ahora x=[1 2 -3 5 0 -4]. La dimensin ha crecido hasta el valor 6 para adaptarse al nuevo elemento, y como hemos definido slo x(6), x(5) ha tomado el valor cero. Tambin puede construirse matrices ms grandes usando como elementos otras matrices menores; por ejemplo, si la matriz A es:

1 2 3 A= 4 5 6 7 8 9
y deseamos ampliarla con una fila ms, digamos: r=[10 11 12], escribiremos A=[A;r] con lo que la matriz A redefinida queda: 1 2 3 4 5 6 A= 7 8 9 10 11 12 Es posible extraer matrices de otras ms grandes, usando el signo dos puntos (:). Por ejemplo: B=A(1:3,:) hace que la matriz B se forma con las filas 1 a 3 y todas las columnas de la matriz A, o sea B quedara como la matriz A inicial. c1=A(:,1) ser el vector formado por la primera columna de A. Asmismo x=A(:) sera el vector columna formado por todos los elementos de la matriz A leidos por columnas , o sea, x transpuesto, x, sera: x=[1 4 7 10 2 5 8 11 3 6 9 12] 3 OPERADORES Y OPERACIONES Una de las ventajas de MATLAB es la posibilidad de efectuar clculos en paralelo. Esto significa que si a dos variables x e y se les ha asignado un nico valor numrico a cada una, el producto de x por y se realizar de la forma habitual, es decir, como el producto de dos nmeros cualesquiera; en cambio si se han definido como matrices (en la forma que se ha explicado en el apartado 2) el resultado ser otra matriz que MATLAB calcular automticamente si ambas matrices son algebraicamente multiplicables, en caso contrario nos avisar del error cometido. Lo mismo cabra decir para las dems operaciones algebraicas elementales, como veremos con ms detalle a continuacin. Los operadores de MATLAB, al igual que los de otros lenguajes de programacin, son de tres tipos: aritmticos, relacionales y lgicos.

(1): Si A y B son matrices, la divisin A/B significa: A/B=C, con C=A*B-1, suponiendo que B-1 exista y sea multiplicable por la izquierda por A (divisin por la derecha). (2) Si A es una matriz (nn) y B es un vector columna de dimensin n u otra matriz de n filas y cualquier nmero de columnas, entonces X=A\B es la solucin de la ecuacin A*X=B

OPERADORES: Aritmticos: Asignacin = Suma + Resta Producto * Producto elemento a elemento .* Potenciacin ^ Potenc. elemento a elemento .^ Divisin (1) / Divisin elemento a elemento ./ Divisin por la izquierda (2) \

Relacionales y lgicos < Menor que <= Menor o igual a > Mayor que >= Mayor o igual a == Igual a ~= Distinto de & AND lgico | OR lgico ~ NOT (complemento lgico)

+, -, *, / y ^

tienen su significado habitual cuando los operandos son escalares y tambin cuando son matriciales, (en este ltimo caso han de cumplirse las correspondientes reglas algebraicas de cada operacin) actan sobre vectores o matrices pero operando elemento a elemento, es decir, si a y b son los vectores: a=(a1,a2) y b=(b1,b2) entonces a.^2=(a12,a22) y tambin a.* b=(a1*b1, a2*b2).

.*, ./ y .^

Para ms informacin sobre operadores y caracteres especiales seleccionar Help en el men, despus Table of contents y se desplegar una lista en la que hay que activar OPS. 4 REPRESENTACIN GRFICA Se hace, en general, con el comando plot, el cual tiene las siguientes formas y opciones: plot(x,y): Dibuja el vector y (ordenada) frente al vector x (abscisa) enlazando con una lnea cada punto. Si x e y son matrices, dibujar las filas o columnas que se le indiquen. Dibuja el vector y frente a su ndice. Si y es complejo, plot(y) es equivalente a plot(real(y),imag(y)). Permite el trazado con varios tipos de lneas, smbolos para los puntos y colores que estn especificados en la variable alfanumrica s que tiene 1, 2 o 3 caracteres siguientes: y (amarillo), m (magenta), c (azul turquesa [cyan]), r (rojo), g (verde), b (azul), w (blanco) y k (negro) para los colores; para los datos,

plot(y):

plot(x,y,s):

trazados punto a punto: . (punto), o (crculo), x, +,*; por ltimo, para el aspecto de las lneas: - (lnea continua). : (puntos), -. (rayas y puntos), (rayas discontinuas). Por ejemplo, plot(x,y,b+)dibujara cada dato con el signo + en azul sin enlazarlos con lneas, es decir, cada dato aislado; plot(x,y,b) dibujara los datos enlazados por una lnea de color azul. Obsrvese que por ser s una variable alfanumrica, sus argumentos han de escribirse entre apstrofos (). bar(x,y,s): Crea un diagrama de barras del vector y en las posiciones fijadas por el vector x con los smbolos especificados por s, tal como se explic antes). Todos los comandos del tipo plot() comentados anteriormente pueden transformarse en sus equivalentes bar().

plot(x1,y1,s1, x2,y2,s2, x3,y3,s3,) combina varios dibujos en una misma grfica, cada uno de ellos definido por su tripleta (x,y,s). subplot(n,i,j),plot(): Permite dibujar n figuras dispuestas en forma de mosaico, donde i y j representan, respectivamente, el ndice de la fila y de la columna donde se va a trazar cada grfico. La secuencia subplot-plot se escribir n veces, tantas como figuras han de representarse.

Ejemplo:, si se desea dibujar 6 figuras ordenadas en 3 filas y 2 columnas escribiremos: subplot(6,1,1),plot(x1,y1,s1) para la Fig.1 subplot(6,1,2),plot(x2,y2,s2) para la Fig.2 subplot(6,2,1),plot(x3,y3,s3) para la Fig.3 .. subplot(6,3,2),plot(x6,y6,s6) para la Fig.6 El comando plot elige los colores de forma automtica en el orden especificado anteriormente, salvo que se le indique otra cosa. Si sobre una grfica se dibujan ms de ocho curvas -agotando, por tanto, la gama disponible de colores-, se comienza otro nuevo ciclo siguiendo el mismo orden. Modificacin del aspecto de un dibujo: semilogx() Es lo mismo que plot(), excepto que usa una escala logartmica (en base 10) en el eje x; semilogy() es su anlogo para el y.

loglog(): grid on, grid off:

Es lo mismo que el anterior con escalas logartmicas (en base 10) en los ejes x e y a la vez. Pone (on) o quita (off) una retcula (en x e y) en los dibujos en dos o tres dimensiones. Si se escribe slo grid alterna los dos estados, es decir, quita la retcula si exista o viceversa. Borra la figura. Si se aade reset, restituye, adems, a sus valores por defecto todas las propiedades de la figura, excepto la posicin. Lo mismo que en el caso anterior, pero actuando slo sobre los ejes. La opcin on hace que se mantenga un dibujo ya existente con todas sus propiedades, de forma que la siguiente grfica se superponga a la anterior. La opcin off vuelve todos los parmetros a sus valores por defecto, y el siguiente dibujo borrara el anterior. Si se escribe slo hold, se conmuta entre los dos estados. Pone un texto en el eje x; anlogamente, ylabel(texto) para el eje y y si se dibuja en 3-D, zlabel(texto) para el tercer eje. Aade un texto en la parte superior del dibujo en 2D 3-D. Escribe un texto en la posicin especificada por las coordenadas x,y en las unidades reales de los ejes. Si se trata de un dibujo en 3-D la sintaxis de esta instruccin sera text(x,y,z,texto). Establece la escala de los ejes entre los valores mnimo y mximo para x e y que se le indican. Lgicamente, si se trata de un dibujo en 3-D, habra que completar esta instruccin en la forma: axis([xmin xmax ymin ymax zmin zmax]). Si se escribe axis(auto), la escala vuelve a tomar los valores por defecto que son xmin=min(x) etc. axis(equal), hace que los ticks que sealan los intervalos sean de igual tamao en los ejes x e y. Con ello se consigue que plot(sin(x),cos(x)) tenga el aspecto de un crculo en vez de un valo. axis(off), suprime los ejes y sus etiquetas, solo mantiene la curva o los puntos; se restituyen los ejes con axis(on). Estas son las opciones ms frecuentes
9

clf, clf reset:

cla, cla reset: hold on, hold off:

xlabel(texto):

title(texto): text(x,y,texto):

axis([xmin xmax ymin ymax]):

10

pero hay ms, para verlas todas en detalle escribir: help axis . Cuando se dibuja por primera vez una figura, MATLAB la sita en el primer plano, es decir, aparece inmediatamente a la vista; no sucede lo mismo con la siguiente figura que se trace (tanto si se ha hecho uso o no de las opciones hold on o hold off), y parece que el programa no ha obedecido al comando plot. El dibujo s se ha hecho, lo que sucede en este caso es que est detrs de la pantalla de comandos; para llevarla al primer plano basta con activar la opcin Windows del men (o pulsar Alt+W), entonces se despliega un submen con las opciones: 1 Figure No. 1 y 2 MATLAB Command Window y sealaremos lo que en cada caso proceda. Obsrvese que en la parte superior de la pantalla en la que aparecen los grficos hay otra barra de men con las opciones: File, Edit, Windows, y Help. Las dos ltimas (Windows y Help) ofrecen prcticamente las mismas funciones que sus homnimas de la pantalla de comandos; File, permite crear nuevas figuras, cerrar la pantalla grfica, establecer los parmetros de la impresora o salir de MATLAB; Edit permite borrar la figura (Clear Figure), copiar las opciones de sta (Copy Options) o copiar (Copy) en el portapapeles la figura dibujada; esta ltima opcin es especialmente til, porque permite exportarla a otros textos (por ejemplo a un documento WORD) pulsando Ctrl+v, Paste o comando equivalente. 5 FUNCIONES, BUCLES Y BIFURCACIONES 5.1 Funciones Nos referiremos en primer lugar a las funciones incorporadas (funciones de biblioteca). La gama de stas es amplsima en MATLAB y, por las razones de espacio antes indicadas, nos vamos a ceir en este resumen a las ms corrientes. La lista completa de funciones aparece pulsando en el men Help y luego Index (haciendo click con el ratn sobre cada nombre aparece automticamente la explicacin de su funcionamiento). Estn agrupadas por temas, como puede verse pulsando en el men Help y despus Table of contents, que se refieren al cdigo de color, demostraciones, funciones matemticas, etc. Los grupos o temas ms importantes y sus correspondientes funciones son las siguientes: ANLISIS DE DATOS: Operaciones bsicas sobre un vector x: Componente mxima max(x) Componente mnima min(x) Valor medio mean(x) Mediana median(x) Desviacin tpica std(x) Ordenacin (ascendente) sort(x) sum(x) Suma de los elementos de x Producto de los elementos prod(x) cumsum(x) Suma acumulativa de los elementos cumprod(x) Producto acumulativo de los elementos Integracin numrica (mtodo trapezoidal) trapz(x,y)

10

11

Operaciones con vectores: Producto vectorial cross(x,y) Producto escalar dot(x,y) Correlaciones: corrcoef(x) Coeficientes de correlacin Matriz de covarianza cov(x) FUNCIONES MATEMTICAS ELEMENTALES: Trigonomtricas: sin, cos, tan, sec, cosec, cot(x) asin, acos, atan, atan2, asec, acsc, acot(x) sinh, cosh, tanh, sech, csch, coth(x) asinh, acosh, atanh, asech, acsch, acoth(x) Exponenciales: exp(x) log(x) log10(x) sqrt(x) Complejas: abs(z) angle(z) conj(z) imag(z) real(z) Numricas: fix(x) floor(x) ceil(x) round(x) rem(x,y) sign(x) MANIPULACIN DE MATRICES: Matrices elementales: zeros(M) ones(M) eye(M) rand(M,N) randn(M,N) ans Matriz de ceros Matriz de unos Matriz identidad Nmeros aleatorios uniformemente distribuidos Nmeros aleatorios normalmente distribuidos ltima respuesta
11

Trigonomtricas directas Trigonomtricas inversas Hiperblicas directas Hiperblicas inversas Exponencial Logaritmo neperiano Logaritmo base 10 Raz cuadrada Valor absoluto ngulo de fase Complejo conjugado Parte imaginaria Parte real Parte entera de un nmero Redondeo al entero ms prximo hacia - Redondeo al entero ms prximo hacia + Redondeo al entero ms prximo Resto de la divisin de dos nmeros Funcin signo

12

Constantes especiales: pi i,j inf NaN Hora y fecha: clock cputime date etime tic,toc Manipulacin de matrices diag reshape tril triu

3.1415926535897.... Unidad imaginaria Infinito Not-a-Number. Es el resultado que da MATLAB de una operacin no definida como p. ej. 0.0/0.0 Vector: [Ao mes da hora minuto segundo] Tiempo usado por la CPU (segundos) Fecha en formato dd-mm-aa Funcin tiempo transcurrido (ver help) Funciones de cronometraje (ver help) : Crea o extrae una matriz diagonal (ver help) Cambia el tamao de una matriz (ver help) Extrae la parte triangular inferior (ver help) Extrae la parte triangular superior (ver help)

FUNCIN DE FUNCIN. PROCESOS NUMRICOS NO LINEALES: ode23 ode23p ode45 quad quad8 fmin fmins fzero fplot Solucin de ecuaciones diferenciales (Runge-Kutta 2 y 3 orden) dem y dibuja la solucin Solucin de ecuaciones diferenciales (Runge-Kutta 4 y 5 orden) Integracin numrica con la regla de Simpson Integracin numrica por cuadratura de Newton-Ctes Mnimo local de una funcin de una variable Mnimo local de una funcin de dos variables Halla el cero de una funcin de una variable Representa la grfica de una funcin

Para familiarizarse con cada una de las funciones anteriores debemos conocer bien todas sus posibilidades, para obtener ms informacin usar el comando help seguido del nombre de la funcin. 5.2 Bucles Los hay de dos tipos: bucles FOR y bucles WHILE. a) El bucle FOR es equivalente a su homnimo de BASIC y muy similar al DO de FORTRAN. Su sintaxis es: (i) for i=valor-inicial : intervalo : valor-final (instrucciones) end Ejemplos: for i = 1:n,
12

13

for j = 1:n, a(i,j) = 1/(i+j-1); end end (ii) for s = 1.0 : -0.1 : 0.0 , {instruccin} , end obsrvese que en el primer ejemplo aparecen slo dos parmetros a continuacin de for, en este caso se entiende por defecto que se han dado los valores inicial y final de i y que el intervalo (el parmetro que falta) es igual a 1. En el segundo ejemplo aparece explcitamente el valor del intervalo que, en este caso, por ser negativo realiza una secuencia decreciente. b) El bucle WHILE tiene la siguiente sintaxis: while expresin lgica, instrucciones end mientras la expresin lgica tenga el valor verdadero, ejecutar todas las instrucciones comprendidas entre las lneas while y end. 5.3 Bifurcaciones Al igual que en otros muchos lenguajes de programacin, el comando if ejecuta un conjunto de sentencias cuando se cumplen ciertas condiciones. Su sintaxis es: if proposicin-lgica {sentencias} end la proposicin-lgica es, normalmente, una expresin que contiene los operadores ==, <, >, <=, >=, o ~=. El siguiente ejemplo ayudar a entender el funcionamiento de este comando: if i == j a(i,j) = 2; elseif abs(i-j) == 1 a(i,j) = -1; else a(i,j) = 0; end 6 FICHEROS-M: PROGRAMAS MATLAB se usa frecuentemente en modo interactivo, es decir, se escribe una lnea de comandos, se pulsa la tecla , y aparece inmediatamente el resultado en pantalla. MATLAB tambin puede ejecutar secuencias de comandos que estn almacenadas en ficheros. Ya vimos en 2, que se puede acceder a ficheros de datos invocndolos con el comando load y especificando su nombre y extensin (esta ltima puede ser cualquiera con tres caracteres), sin embargo los ficheros que contienen

13

14

sentencias MATLAB han de llevar obligatoriamente la extensin .m acompaando a su nombre, razn por la que se les llama ficheros M. Un fichero M consiste, por tanto, en una secuencia de comandos que pueden incluir referencias a otros ficheros M y se crean con cualquier programa editor o procesador de textos. Los hay de dos tipos: ficheros de texto y ficheros de funciones; los primeros realizan automticamente secuencias largas de comandos, los ltimos desempean un papel parecido al de los subprogramas en FORTRAN. Ficheros de texto Cuando se llama a un fichero de texto, MATLAB ejecuta los comandos que contiene y stos operan globalmente con los datos existentes en el espacio de trabajo. Esto ltimo quiere decir que si, por ejemplo, una variable cualquiera posee un valor dado (digamos x=-7.89) y despus ejecutamos un programa de texto en el que se modifica ese valor (por ejemplo, redefiniendo x en la forma x=/4), es este ltimo valor el que prevalece, borrndose el que tena anteriormente. Veamos el siguiente ejemplo: el fichero de texto llamado series.m contiene los comandos necesarios para calcular el valor aproximado del nmero mediante la serie

2 = 6

en la que la suma, en vez de extenderse al infinito se trunca en un nmero entero n cuyo valor lo decide el programador y lo introduce manualmente (por teclado). El programa es como sigue % % Series % n=input( ' Introducir el valor de n: ' ) % s=0; for i=1:n s=s+1/i^2; end y=sqrt(6*s) % Valor calculado de err=abs(y-pi) % Diferencia entre el valor calculado y el de MATLAB end en el anterior programa interesa destacar dos detalles hasta ahora no comentados: 1) %: este smbolo indica que lo que se encuentra a su derecha es un comentario y por lo tanto no se compilar. Puede estar en el medio de una lnea o registro, como se ve en la lnea que define la variable y y en la que le sigue 2) input( texto ): queda a la espera de un dato que se le va a suministrar a travs del teclado (en este caso el valor de n); el texto, que ha de escribirse entre apstrofos, aparecer en la pantalla y sirve como recordatorio del nombre de la variable a la que se va dar el valor.

1 2 i =1 i

14

15

Por ltimo, si series.m est en el subdirectorio de trabajo, series es ya un comando ms. Ficheros de funcin Son aquellos ficheros M que al principio de la primera lnea contienen la palabra clave function. Difiere de un fichero de texto en que hay que pasarle parmetros (los de entrada de la funcin) y en que las variables definidas y manejadas dentro del fichero de funcin son locales y no interfieren con las que se estn considerando en el espacio de trabajo. Los ficheros de funcin son tiles para crear funciones de MATLAB, adems de las ya existentes en la biblioteca interna. Como se ve, estos ficheros son muy parecidos al subprograma FUNCTION de FORTRAN. Ejemplo: function y=mean(x) % MEAN: valor medio % Para vectores: mean(x) da el valor medio % Para matrices; mean(x) es un vector fila que contiene el valor medio % de cada columna % [m,n]=size(x); if m==1 m=n; end y=sum(x)/m Para ejecutar este programa basta con escribir mean(parmetro), teniendo cuidado de que el parmetro ha sido definido previamente; por ejemplo si queremos que el programa calcule la media de los enteros desde1 hasta 99, escribiramos z=1:99 mean(z) y aparecera en pantalla: ans =50 Da la dimensin de la matriz A (nmero de filas y columnas, en ese orden) escribindolos en pantalla. Almacena el resultado anterior en las variables m y n, respectivamente. Da la longitud (nmero de componentes) del vector .

size(A) [m,n]=size(z) length(x)

7 OTROS PROCEDIMIENTOS TILES EN MATLAB Veamos, para finalizar, algunos procedimientos de uso frecuente en el clculo numrico, lo que nos permitir comentar algunos comandos y funciones no descritos en los prrafos anteriores.

15

16

Guardar resultados en ficheros Se hace con el comando save con las siguientes posibilidades: SAVE fname X Y Z Guarda en el fichero llamado fname las variables X, Y, Z, en cdigo binario Lo guarda como fichero en cdigo ASCII (por lo tanto es legible por cualquier programa) usando un formato de 8 dgitos Los datos se expresan con 16 dgitos Los guarda tabuladores delimitndolos con

SAVE fname X Y Z -ascii

SAVE fname X Y Z -ascii -double SAVE fname X Y Z -ascii -double -tabs

El guin que precede a los parmetros ascii, double y tabs es obligatorio. Las posibilidades de almacenaje de resultados no se agotan con este comando, el lector puede consultar a travs del correspondiente help los comandos: diary, fwrite, fprintf e imwrite. Ajuste de polinomios polyfit(x,y,n) Halla los coeficientes (que aparecern escritos en pantalla) del polinomio p(x) de grado n que ajusta por mnimos cuadrados los datos p(xi)=yi,. En este caso, los coeficientes quedan guardados en la variable c (la primera componente es el coeficiente de xn, la ltima el de x0). Halla el valor del polinomio para un x dado; p es el vector de longitud n+1 (n es el grado del polinomio) cuyos elementos son los coeficientes de ste: y = p(1)*xn + p(2)*xn-1 + ... + p(n)*x + p(n+1). Si x es una matriz o un vector, el polinomio se evala para todos los puntos de x. Halla las races del polinomio cuyos coeficientes son los elementos del vector c (como antes, c1 es el coeficiente de xn, etc.).

c=polyfit(x,y,n) y=polyval(p,x)

roots(c)

Resolucin de sistemas lineales Un sistema lineal puede escribirse de la forma: Ax=b, donde x es el vector (columna) de las incgnitas y A es la matriz de los coeficientes. La resolucin de este sistema es sumamente sencilla y rpida en MATLAB haciendo: x=A\b, como ya se ha visto anteriormente ( 3: Operadores). Obviamente, A tiene que ser una matriz no singular.

16

17

Integracin numrica y=quad(' f' ,a,b) Calcula el valor aproximado de la integral de la funcin f(x) entre los lmites (a,b) usando la frmula de Simpson. f es el nombre de una funcin (que, por lo tanto, ha de expresarse entre apstrofos ) que est definida en un fichero M de funcin. Igual que la anterior pero usando el mtodo de cuadratura de Newton-Ctes.

y=quad8(' f' ,a,b)

En ambos casos, si el resultado fuera y=inf, (infinito) querra decir que no se ha logrado convergencia o que y es una integral singular. Si los parmetros de entrada a y b son vectores, y ser otro vector (de resultados) de la misma dimensin. Resolucin de ecuaciones diferenciales La funcin ode23 integra un sistema de ecuaciones diferenciales usando un mtodo de Runge-Kutta con frmulas de 2 y 3 orden. Su sintaxis es: [x,y] = ode23(' yprima' , x0, xfinal, y0) yprima: es el nombre del fichero M donde estn definidas las funciones que constituyen el sistema (o la nica funcin si la ecuacin diferencial es de primer orden). x0, xfinal: valores inicial y final de la variable independiente, definen el dominio de integracin. y0: el vector cuyas componentes son las condiciones iniciales. [x,y]: y es la solucin en forma de vector columna para los valores especificados por el tambin vector columna x cuyos valores estn comprendidos entre x0 y xfinal con espaciado fijado automticamente por MATLAB. Si se trata de una ecuacin diferencial de primer orden, x0, xfinal, e y0 son escalares. La grfica del resultado puede verse haciendo plot(x,y). Ejemplo: La ecuacin diferencial de 2 orden d2x/dt2 + (x2-1)dx/dt + x = 0, con las condiciones iniciales: x=0, dx/dt=0.25 para t=0. Si nombramos las variables en la forma: x=x2, dx/dt=x1, entonces la ecuacin anterior equivale al sistema:

x1 = x1 (1 x 2 2 ) x2

x 2 = x1

El fichero M con la definicin de las funciones se va a llamar vdpol y su contenido ser: function xdot=vdpol(t,x) xdot=zeros(2,1) % Matriz 21 de ceros (vector columna) xdot(1)=x(1).*(1-x(2).^2)-x(2); xdot(2)=x(1); para resolver la ecuacin escribiremos: t0=0; tf=20;

17

18

x0=[0 0.25]; % Condiciones iniciales [t,x]=ode23(vdpol,t0,tf.x0) plot(t,x) Se puede resolver la ecuacin diferencial y trazar su grfica simultneamente usando la funcin ode23p (con los mismos parmetros) pero definiendo previamente los ejes con el comando axis y escribiendo posteriormente hold. Se obtiene ms precisin usando la funcin ode45 anloga a la anterior (y con los mismos parmetros), la diferencia es que utiliza un algoritmo de Runge-Kutta de 4 y 5 orden. Estadstica La herramienta disttool es un entorno grfico que representa funciones densidad (pdf) o funciones de distribucin acumulada (cdf) de las distribuciones ms usuales en estadstica. Pulsando disttool y se abre una pantalla grfica que contiene diferentes ventanas: una que permite seleccionar el modo pdf o cdf, otra que despliega un amplio men de distribuciones (normal, binomial, t de Student, etc.) y otras donde se seleccionan los valores numricos de los diferentes parmetros (media, desviacin tpica,); hay -adems- una ventana para seleccionar el valor de la variable independiente x y otra ventana que nos da el valor de la densidad de probabilidad en la opcin pdf (valor de la ordenada de la funcin de distribucin correspondiente a x) o el valor de la integral entre - y x en la opcin cdf (probabilidad de que X sea menor o igual que x). Estas funciones existen tambin fuera del entorno disttool como funciones de MATLAB. La lista de funciones de distribucin acumulada (cdf) es la siguiente: betacdf: binocdf: chi2cdf: expcdf: fcdf: gamcdf: geocdf: distribucin beta binomial chi cuadrado exponencial F gamma geomtrica hygecdf: normcdf: poisscdf: tcdf: unidcdf: unidfcdf: weibcdf: hipergeomtrica normal Poisson t de Student uniforme (discreta) uniforme (continua) Weibull

existen adems sus correspondientes funciones inversas (betainv, etc) y las de distribucin de probabilidad (betapdf, etc). Para ver el significado, parmetros y sintaxis consultar sus respectivos help. Generacin de nmeros aleatorios De forma anloga al caso anterior, ejecutando randtool se abre otra pantalla grfica que nos proporciona conjuntos de nmeros aleatorios que siguen diferentes distribuciones a elegir a travs de la correspondiente ventana: beta, binomial, chi-2, exponencial, F, gamma, geomtrica, hipergeomtrica, normal, de Poisson, t de Student, uniforme y uniforme discreta. Una grfica muestra los resultados y las diferentes ventanas permiten seleccionar el tamao del conjunto de nmeros aleatorios (ventana sample) y el intervalo (ventana number). Cada vez que se pulsa en la ventana resample, aparece una nueva muestra de nmeros. Pulsando en la venta output, la ltima muestra se almacena en la variable temporal ans y se exporta al programa MATLAB, haciendo desde ste ltimo x=ans, quedar guardado en el vector x el ltimo conjunto de nmeros aleatorios obtenido.

18

También podría gustarte