Está en la página 1de 14

Modelado matemtico de los sistemas ecolgicos Facultad de Biologa

Universidad de Oviedo Curso 2007-2008

Prctica 1: Introduccin a matlab 1. Qu es Matlab?

La primera versin de matlab data de los aos 70, y fue diseada como herramienta de apoyo para los cursos de Teora de Matrices, lgebra Lineal y Anlisis Numrico. El nombre matlab es un acrnimo: MATrix LABoratory. Hoy en da, matlab es un programa muy potente, con un entorno agradable, que incluye herramientas de clculo cientco y tcnico y de visualizacin grca, as como un lenguaje de programacin de alto nivel.

Figura 1: La ventana de matlab (versin 7)

2.

Operaciones elementales y variables

La forma de representar nmeros y de operar de matlab es la misma que la de las calculadoras de bolsillo. Por ejemplo: 3 -99 .001 9.63 1.62e-020

Observa que se usa el punto como separador decimal, en lugar de la coma. Las operaciones usuales se realizan con los mismos smbolos y en la misma secuencia que en las calculadoras. suma a+b resta a-b multiplicacin ab 1 divisin a/b potencia a b

Prctica 1: Introduccin a matlab

Para que matlab ejecute una orden, es preciso pulsar la tecla Intro . Por ejemplo, para calcular el valor de 3 + 5 2 + 1, se ejecuta la instruccin >> 3 + 5*2 + 1 y se obtiene como respuesta ans = 14 Esto quiere decir que el resultado se ha almacenado en la variable ans. En cambio, >> s = (3+5)*2 + 1 indica a matlab que el resultado de esa operacin ha de guardarse en la variable s. Comprubalo y observa la diferencia con el caso anterior.

Ejercicio
Realizar las operaciones siguientes y guardar el resultado en la variable que se indica: 6 2. 3 6 2. t = 32 5 . 32 1. s = 32 5 3. s + t + 1. (Sol: s = 0.) (Sol: t = 3.) (Sol: . . . . . . = . . . . . ..)

2.1.

Reglas para nombrar variables

- El nombre de una variable puede tener como mximo 63 caracteres (31 en versiones anteriores), que pueden ser letras, nmeros y el guin de subrayar - El primer carcter tiene que ser una letra. lado2 es un nombre vlido, pero no lo es 2lado. - Las maysculas y las minsculas tienen valor distintivo. La variable Base es distinta de la variable base. - Dentro de un nombre de variable no puede haber espacios en blanco. lado1 es vlido, pero no lado 1. - Existen nombres que deben evitarse, porque tienen signicado propio en Matlab: ans, pi, Inf, . . .

2.2.

Signos de puntuacin y movimientos del cursor

- Se pueden denir varias variables en una misma lnea si se separan por comas. Por ejemplo: >> base = 2, altura = 3, area = base * altura - Tambin se pueden separar mediante punto y coma. En ese caso se inhibe el eco que sigue a la denicin de una variable: >> base = 5; altura = 2; area = base * altura - Las teclas y permiten recuperar lneas anteriores y posteriores a la actual. - Las teclas y permiten moverse a derecha e izquierda en una lnea para hacer modicaciones.

2.3.

Ejercicio
1

Para x = 0, x = 1 , x = 2 2 y x = 1, calcula el valor del cociente 2 2

x2

x . 1

Prctica 1: Introduccin a matlab

3.

El escritorio

La ventana de Matlab muestra un escritorio dividido en varias partes: Las rdenes se escriben en la Command Window. La ventana Workspace proporciona diversa informacin sobre las variables utilizadas. Todas las rdenes quedan registradas en el Command History. Si queremos borrar la ventana de rdenes (Command Window) podemos hacerlo utilizando la orden clc; hay que tener en cuenta que esto no afecta a las variables que ya estn en uso.

4.

Cmo encontrar ayuda (Help)

La orden helpwin sirve para obtener informacin sobre un tema concreto. Por ejemplo, >> helpwin ans proporciona informacin sobre ans. Muy similar a helpwin es la orden doc. Si no se conoce la orden exacta sobre la que deseamos ampliar la informacin, se puede escribir simplemente helpwin para abrir una ventana de ayuda Help en la que aparecer, entre otras cosas, una lista de temas, un ndice de trminos y un buscador de palabras.

Figura 2: Un aspecto del men de ayuda de Matlab 7.1 que proporciona helpwin

c 2007 Pablo Prez

Prctica 1: Introduccin a matlab

5.

Formatos

Cuando matlab presenta los resultados, elige por defecto un formato con 3 dgitos como mximo para la parte entera y 4 como mximo para la parte decimal; si el nmero que se quiere mostrar necesita ms dgitos, se utiliza la notacin exponencial. Esta es la opcin short de la orden format. Por ejemplo: >> format short >> pi ans = 3.1416 Prueba con >> 10*pi >> 100*pi >> 1000*pi format short format long 3 dgitos como mximo para la parte entera y 4 como mximo para la parte decimal; si el nmero es mayor se pasa a la notacin exponencial. 2 dgitos para la parte entera y 14 para la decimal; si el nmero es mayor se pasa a la notacin exponencial.

Independientemente del formato con el que se muestra un clculo en pantalla, el ordenador realiza todos los clculos con 16 cifras signicativas.

6.

Algunas funciones matemticas

matlab dispone de una gama muy completa de funciones con la orden help elfun se puede obtener la lista completa que se corresponden con las funciones matemticas ms utilizadas. Algunos ejemplos de estas funciones son: Notacin cientca |x| sen x cos x tan x arc sen x arc cos x arctan x ex ln x x Nombre en matlab abs(x) sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) exp(x) log(x) sqrt(x) Signicado valor absoluto de x seno de x coseno de x tangente de x arcoseno de x arcocoseno de x arcotangente de x exponencial de x logaritmo en base e de x raz cuadrada de x

En las funciones trigonomtricas, el ngulo siempre se expresa en radianes.

7.

Vectores y matrices

Uno de los aspectos ms notables de matlab lo constituye la forma en que permite manipular y operar con vectores y matrices. 4

Prctica 1: Introduccin a matlab

7.1.

Vectores la
En general, se introducen escribiendo entre corchetes cada una de sus componentes separadas por un espacio o una coma. Por ejemplo: >> v=[4 -6 5] >> v=[4,-6,5] Tambin se pueden introducir especicando el valor de cada componente en el orden que se desee: >> w(2)=-6, w(1)=4, w(3)=5 Otras rdenes para casos particulares: v=[a:h:b] v=[a:b] v=linspace(a,b,n) Dene un vector la cuyo primer elemento es a y los dems elementos aumentan de h en h sin superar b. Dene un vector la cuyo primer elemento es a y los dems elementos aumentan de 1 en 1 sin superar b. Dene un vector la de n componentes, cuyo primer elemento es a y cuyo ltimo elemento es b, con diferencia constante entre componentes consecutivas.

Ejemplos: >> u=linspace(-4,7,6) >> v=[-4:2:7], w=[-4:7] >> v=-4:2:7, w=-4:7

% se puede escribir sin los corchetes

7.2.

Vectores columna y matrices


En general, se introducen como los vectores la, separando las las por un punto y coma: >> b=[0;1;-5] >> a=[-2 4;5 -1;7 1] Tambin se pueden introducir especicando cada uno de sus elementos en el orden que se desee; por ejemplo: >> m(2,2) = -1, m(3,1) = 7, m(2,1) = 5, m(1,1) = -2, m(1,2) = 4, m(3,2) = 1 Se pueden denir por cajas que estn construidas previamente y cuyas dimensiones sean adecuadas: >> c = [a b]

7.3.

Elementos de vectores y matrices

Hemos visto que es posible denir vectores y matrices especicando sus elementos. Una vez denida una matriz a o un vector v, tambin podemos acceder a sus elementos o submatrices con las rdenes siguientes: v(i) v(i:j) a(i,j) a(i:j,k:l) a(i,:) a(:,j) a(u,w) componente de v que ocupa la posicin i. componentes de v situadas entre la posicin i y la posicin j. elemento de la matriz a que est en la la i y la columna j. submatriz de a que contiene las las i hasta j y columnas k hasta l. la i de la matriz a. columna j de la matriz a. submatriz de a que contiene las las indicadas en el vector u y las columnas indicadas en el vector w.

c 2007 Pablo Prez

Prctica 1: Introduccin a matlab

Ejemplos: >> a(1,:) >> a(:,2) >> a([1,3],2)

7.4.

Algunas matrices especiales


zeros(m,n) ones(m,n) eye(m,n) genera una matriz de ceros de dimensin m n. genera una matriz de unos de dimensin m n. genera una matriz de dimensin mn, cuya diagonal principal son unos, y el resto de los elementos ceros.

Cuando las matrices son cuadradas de orden n, se puede sustituir el argumento (m,n) por (n). Ejemplos: >> >> >> >> zeros(2,3) zeros(2) eye(2,3) eye(3)

7.5.

Ejercicio

Denir los vectores siguientes: 1. v = ( 2, , e). 2. x = (0.15, 0.30, 0.45, . . . , 1.65, 1.80). 3. y = (3, 4, 5, . . . , 46, 47). 4. z = (100, 100, 1, 2, 3, . . . , 99, 100).

7.6.

Tamao de vectores y matrices


length(v) size(a) muestra el nmero de componentes del vector v. muestra el nmero de las y columnas de la matriz a.

7.7.

Ejercicio

1. Construir una particin P del intervalo [2, 3] formada por 9 puntos igualmente espaciados. 2. Construir un vector q cuya primera componente sea 2 y las siguientes se obtengan realizando un incremento de 3/5, sin sobrepasar el valor 3. Calcular el nmero de componentes de q.

7.8.
7.8.1.

Operaciones con vectores y matrices


Operaciones algebraicas con matrices

Si a y b son matrices (o vectores) de tamaos adecuados y r es un escalar, pueden realizarse las operaciones algebraicas habituales: suma a+b resta a-b producto por un escalar r r * a producto de matrices a*b potencia n-sima (n N) a n

Prctica 1: Introduccin a matlab

7.8.2.

Operaciones elemento a elemento

En general, las funciones internas de matlab admiten argumento matricial, es decir, la funcin se aplica sobre cada elemento de la matriz. Ejemplo: >> a=[1 2; 3 4], sqrt(a) Si a y b son matrices (o vectores) del mismo tamao y r es un escalar, se pueden realizar las operaciones siguientes:

Operacin r + a a.*b a./b a. r r. a a. b

Descripcin suma el escalar r a cada elemento de la matriz a multiplica cada elemento de a por el correspondiente de b divide cada elemento de a por el correspondiente de b eleva cada elemento de a al escalar r eleva el escalar r a cada elemento de a eleva cada elemento de a al correspondiente de b

Elemento (i, j) r + aij aij bij ar ij raij


ij aij

aij / bij

Ejemplo: >> v=[1 2 3 4] >> 1+v >> v.^2

7.9.

Ejercicio
1

1 Para x = 0, x = 2 , x = 2 2 y x = 1, calcula el valor del cociente elemento.

x x2 1

utilizando operaciones elemento a

8.

Expresiones simblicas y cadenas de caracteres

Las capacidades de Matlab se pueden ampliar instalando diversos mdulos (toolboxes). Uno de ellos, denominado Symbolic Math Toolbox, permite realizar clculo simblico, es decir, permite manipular las variables sin necesidad de utilizar sus aproximaciones numricas. Para utilizar el mdulo de clculo simblico Symbolic Math Toolbox es necesario crear unos objetos simblicos que representan a las variables simblicas. Por abuso del lenguaje, a los objetos simblicos de Matlab tambin se les llama variables simblicas. Otro tipo de variables de Matlab son las cadenas de caracteres. Una cadena de caracteres es una coleccin de caracteres ascii enecerrados entre apstrofos. Por ejemplo: >> Ecu2 = a^2 = b^2 + c^2 Entre otras, el mdulo Symbolic Math Toolbox permite realizar las tareas siguientes:

c 2007 Pablo Prez

Prctica 1: Introduccin a matlab

syms x y z solve(Expr) solve(Expr,z) solve(eq1=eq2,z) subs(S,x,a) pretty(S) double(S) simplify(S)

Crea las variables simblicas x, y, z. Calcula ceros de Expr (expresin simblica o cadena de caracteres). Calcula los valores de z que anulan a Expr. Resuelve la ecuacin eq1=eq2 con respecto a la variable z. Sustituye en la expresin simblica S la variable x por a. Presenta de forma elegante la expresin S. Calcula el valor numrico en una expresin simblica. Simplica una expresin simblica.

8.1.

Ejercicio

Solucin: Se puede hacer de dos formas: escribiendo la ecuacin mediante una cadena de caracteres y resolviendo con solve >> solve(x^3+3*x^2-4=0) o deniendo una variable simblica x para usar solve de manera ms simple: >> syms x >> solve(x^3+3*x^2-4)

Resolver la ecuacin x3 + 3x2 4 = 0.

8.2.

Ejercicio

En cierto cultivo de bacterias (cuyo crecimiento es constantemente proporcional a los efectivos de poblacin) el nmero de individuos se ha multiplicado por 6 en 10 horas. Cunto tiempo tard la poblacin en duplicar su nmero inicial? La poblacin sigue la Ley de Malthus N (t) = N0 er t . Si el nmero de individuos se multiplica por 6 en 10 horas, entonces 6 N0 = N0 er 10 , es decir er 10 = 6. Calculamos r resolviendo esta ecuacin, escrita en forma homognea equivalente >> syms t r >> r=solve(exp(r*10)-6) r = 1/10*log(6) >> double(r) ans = 0.1792 es decir, ln 6 0,1792 10 Para calcular ahora el tiempo que tard la poblacin en duplicar su nmero, resolveremos r= 2 N0 = N0 er t , 8

Prctica 1: Introduccin a matlab

esto es >> t=solve(exp(r*t)-2) y debe obtenerse t 3,8685 horas (= 3h 52m 6,7s).

8.3.

Ejercicio

Una poblacin de bacterias crece en funcin del tiempo, medido en horas, siguiendo la Ley Logstica dN = r (1 N ) N, t t0 , dt K N (t0 ) = N0 , de modo que N (t) = N0 K N0 + (K N0 )er (tt0 )

donde K es la capacidad de carga o poblacin lmite de la especie. Es sabido que, inicialmente, el nmero de individuos es 100, que el mximo que puede soportar el medio es 105 individuos y que al nal de la primera hora la poblacin es de 120 individuos. Se desea conocer el tamao de la poblacin al cabo de 4 horas y cunto tendr que transcurrir para que se alcance la mitad del nmero de individuos que forman la capacidad mxima. Sol: r = 0,1825. N (4) = 207,3032. t = 37,8407.

8.4.

Ejercicio

En 1845 el demgrafo belga Pierre Francois Verhulst (1804-1849) us los datos de la poblacin norteamericana de 1790 a 1840 para predecir la poblacin americana hasta el ao 1930, bajo la hiptesis de que segua la Ley Logstica. Tomando N0 = 3,9 y K = 197,3 (ambas en millones de habitantes) y r = 0,03135, compltese la siguiente tabla Ao 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 Poblacin real 3,9 5,3 7,2 9,6 12,9 17,1 23,2 31,4 38,6 50,2 62,9 76,0 92,0 106,5 123,2 Poblacin calculada Error absoluto Error relativo ( %)

La poblacin de Estados Unidos en 1980 era de 226,505 millones con lo que la poblacin lmite supuesta por Verhulst ha sido rebasada.

c 2007 Pablo Prez

10

Prctica 1: Introduccin a matlab

9.

M-archivos

Las rdenes de matlab se pueden introducir y ejecutar directamente a travs de la ventana de comandos, pero tambin es posible escribir un archivo de texto que contenga las rdenes y ejecutarlas todas en bloque. Un archivo que contiene rdenes de matlab se denomina un M-archivo. Para que matlab reconozca como tal un M-archivo, este debe tener adems la extensin .m. Los M-archivos se pueden escribir utilizando el editor incluido en la instalacin de matlab, al que se accede a travs del men File. Para ejecutar las rdenes contenidas en el M-archivo nombre.m, basta teclear su nombre desde la ventana de comandos. Por ejemplo op1.m a b s p = = = = 2; 5; a+b a*b

Un caso especial de M-archivos son los archivos de funcin. Son aquellos cuya primera lnea ejecutable (no de comentario) comienza con la palabra function. Una funcin se dene con un m-chero, cuyo nombre coincide con el de la funcin. La primera lnea ejecutable es: function argumentos_salida=nombre_funcin (argumentos_entrada) seguida de las instrucciones necesarias. Cuando hay ms de un argumento de salida, stos deben ir entre corchetes y separados por comas. Por ejemplo: function y=f(x) function [a,b,c]=g(x,y) Es conveniente comenzar las primeras lneas del chero con un comentario (inicindolas con el smbolo %), explicando cmo debe usarse la funcin y sus argumentos (tanto de entrada como de salida). De esta manera, dicha explicacin ser visible mediante la instruccin help nombre_funcin. La funcin puede nalizarse en cualquier momento utilizando la instruccin return. Por ejemplo op2.m function [s,p] = op2(a,b) s = a+b; p = a*b;

10.
10.1.

Representaciones grcas
Representacin de funciones con la orden ezplot

La orden ezplot permite representar grcamente expresiones simblicas en el plano. Cada vez que se utiliza esta orden, matlab crea y activa una ventana grca a la que le asigna el nombre Figure No. 1. Algunos usos de la orden ezplot son: ezplot(f) ezplot(f,[a b]) Representa la expresin simblica f (= f (x)) en el dominio 2 x 2. Representa la expresin simblica f (= f (x)) en el intervalo [a, b]. 10

Prctica 1: Introduccin a matlab

11

Por ejemplo: >> syms x >> ezplot(sin(x)/x) % x es una variable simbolica % abre una ventana grafica

produce el resultado que se observa en la Figura3(a).

(a) Ventana generada con ezplot(sin(x)/x)

(b) Ventana generada con ezplot(sin(x)/x,[-20 20])

Figura 3: Dos usos de la orden ezplot Si a continuacin se ejecuta la orden >> ezplot(sin(x)/x,[-20 20]) entonces matlab elimina la ventana anterior y genera otra con igual nombre (vase la Figura 3(b)). Conviene advertir que matlab elige de forma automtica el rango de valores para el eje OY , y que esa eleccin puede no coincidir con la que deseamos. Veremos ms adelante cmo modicar el aspecto de una gca.

10.2.

Representacin de funciones con la orden fplot

Esta es una orden similar a ezplot, pero se utiliza para representar funciones denidas mediante M-archivos o introducidas como cadena de caracteres. fplot(f,[a b]) fplot(f,[a b],M) Representa la funcin f (= f (x)) en el intervalo [a, b]. Representa la funcin f en el intervalo [a,b], con el tipo de trazo y color especicado en el argumento M.

Por ejemplo: >> fplot(cos(x),[-1 1],g) permite dibujar la grca de f (x) = cos x en [1, 1], con trazo verde (g=green). No es necesario que la variable x sea simblica. Si una funcin est denida en un M-archivo mifuncion.m, se puede representar escribiendo >> fplot(mifuncion,[-1 1],g)

c 2007 Pablo Prez

12

Prctica 1: Introduccin a matlab

10.3.

Representacin de datos con la orden plot

Si t = [t1,t2,...,tn] y y=[y1,y2,...,yn] son dos vectores, entonces es posible representar grcamente los puntos de coordenadas (t1,y1), (t2,y2), . . . (tn,yn) mediante la orden plot(t,y). plot(t,y) plot(t,y,M) construye la poligonal que pasa por los puntos (t1,y1), (t2,y2), . . . (tn,yn). Permite elegir colores, trazos y marcas, segn sea el valor que se asigne al parmetro M.

Las opciones de colores, trazos y marcas pueden consultarse en el men de ayuda.

10.4.

Ejercicio

Representar grcamente los datos del censo de la poblacin de Estados Unidos del Ejercicio 8.4.

10.5.

Modicacin del aspecto de una gura

Conviene advertir que Matlab elige de forma automtica diversos aspectos de la grca (intervalos, marcas, textos, colores, tipos de lnea, rejilla, . . . ) y que esa eleccin puede no coincidir con la que deseamos. Por ejemplo, los rangos de ordenadas de las Figuras 3(a) y 3(b) son diferentes; de hecho, la eleccin del rango de ordenadas en la Figura 3(b) no parece la ms adecuada. Los aspectos de la grca se pueden editar y modicar usando el botn Show Plot Tools de la barra de iconos de la ventana (vase la Figura 4):

Figura 4: El botn Show Plot Tools de la barra de iconos de la ventana grca

De esa forma se accede a diversos cuadros de mens (vase la Figura 5) que permiten modicar numerosos aspectos de la ventana grca: intervalos, marcas, textos, colores, tipos de lnea, rejilla, . . . Con el botn Hide Plot Tools de la barra de iconos se cierran los cuadros de mens.

10.6.

Ejercicio

Representar la funcin siguiente en el intervalo [0, 10] u(t) = 5 . 1 + 5 e0,6 t

Otras rdenes de inters


Cada vez que se ejecuta una orden como ezplot, fplot o plot, matlab crea una ventana grca y elimina cualquier ventana anterior. A veces es interesante representar dos funciones diferentes sobre la misma ventana. Esto puede hacerse activando la orden hold: 12

Prctica 1: Introduccin a matlab

13

Figura 5: El editor de propiedades (Property Editor) de la ventana grca

Figura 6: El botn Hide Plot Tools de la barra de iconos de la ventana grca

hold on hold off

Activa la orden hold, y a partir de ese momento todos los nuevos grcos se aaden a la ltima ventana abierta Desactiva la orden hold.

Tambin son muy tiles las rdenes siguientes: figure(n) subplot(m,n,p) Selecciona la ventana grca Figure No. n como ventana activa; si no existiese, la crea. Divide la ventana grca en una tabla de m n subventanas y coloca el grco en la ventana p-sima contando de izquierda a derecha y de arriba a abajo.

10.7.

Ejercicio

Consideremos la funcin del ejercicio anterior u(t) = Representarla en el intervalo [0, 10]. 5 . 1 + 5 e0,6 t

c 2007 Pablo Prez

14

Prctica 1: Introduccin a matlab

En una ventana distinta, representar primero la funcin u en [0, 5] y despus y sobre esa misma ventana en [5, 10]; a continuacin, utilizar el editor de propiedades para modicar su aspecto.

10.8.

Ejercicio

Repetir el ejercicio anterior, pero usando la orden subplot para dividir la ventana grca en dos subventanas.

14

También podría gustarte