MATLAB_Guía

17
Herramientas para Simulación 1 MATLAB es un lenguaje de elevadas prestaciones orientado a cálculos técnicos, que integra el cómputo, la visualización y la programación en un ambiente de fácil utilización en el que tanto los problemas como sus soluciones son expresados mediante una notación matemática familiar para el usuario. Sus áreas de aplicación típica incluyen, entre otros a: Cálculos matemáticos Desarrollo de algoritmos Modelos y simulaciones ... y ha sido justamente su inmediata aplicabilidad al área de simulación lo que ha conducido a tomarlo una de las herramientas básicas para el desarrollo de los trabajos prácticos en nuestra Cátedra. MATLAB ha sido desarrollado originalmente por Cleve Moller en lenguaje Fortran. La versión actual de MATLAB fue escrita en lenguaje C por los integrantes de The Math Works, Inc. MATLAB cuenta con una extensa ayuda on-line a la que puede accederse mediante los comandos help window o help desk (en este último caso, en su equipo ha de encontrarse instalado el programa NETSCAPE). Se presupone un conocimiento standard de inglés técnico por parte del usuario. MATLAB 5 GUIA BASICA DE USO ELEMENTAL

description

Gui rapida para el uso de Matlab

Transcript of MATLAB_Guía

  • Herramientas para Simulacin

    1

    MATLAB es un lenguaje de elevadas prestaciones orientado a clculos tcnicos, que integra el cmputo, la visualizacin y la programacin en un ambiente de fcil utilizacin en el que tanto los problemas como sus soluciones son expresados mediante una notacin matemtica familiar para el usuario. Sus reas de aplicacin tpica incluyen, entre otros a:

    Clculos matemticos Desarrollo de algoritmos Modelos y simulaciones

    ... y ha sido justamente su inmediata aplicabilidad al rea de simulacin lo que ha conducido a tomarlo una de las herramientas bsicas para el desarrollo de los trabajos prcticos en nuestra Ctedra. MATLAB ha sido desarrollado originalmente por Cleve Moller en lenguaje Fortran. La versin actual de MATLAB fue escrita en lenguaje C por los integrantes de The Math Works, Inc. MATLAB cuenta con una extensa ayuda on-line a la que puede accederse mediante los comandos help window o help desk (en este ltimo caso, en su equipo ha de encontrarse instalado el programa NETSCAPE). Se presupone un conocimiento standard de ingls tcnico por parte del usuario.

    MATLAB 5 GUIA BASICA DE USO ELEMENTAL

  • Herramientas para Simulacin

    2

    Para concluir esta breve referencia a la documentacin de MATLAB, debemos mencionar los archivos en formato .pdf a los que puede accederse mediante Acrobat Reader versin 3 o superior (Acrobat puede obtenerse va Internet www.acrobat.com en forma totalmente gratuita). Los documentos de mayor importancia son:

    c:\matlab\help\pfdocs\Getstart.pdf Getting started with MATLAB

    contiene informacin muy til para el principiante; c:\matlab\help\pfdocs\Refbook.pdf Language Reference Manual

    describe el funcionamiento de los comandos de MATLAB;

    recomendamos especialmente imprimir y leer el primero de los documentos indicados, para tener una idea clara del funcionamiento de MATLAB. Resumiremos a continuacin unas pocas ideas elementales que es necesario dominar para trabajar sin problemas con MATLAB. Una vez iniciado MATLAB, ya sea a travs del Escritorio de Windows o por acceso a la carpeta de Programas del men de inicio, aparece la Ventana de Comandos de MATLAB:

    El significado de los conos que aparecen en la barra de herramientas, de izquierda a derecha, es Nuevo Archivo-M Abrir Archivo-M Cortar Copiar Pegar Deshacer Hojear Espacio de Trabajo (Workspace Browser) Hojear Rutas (Path Browser) Nuevo Modelo de Simulink Ventana de Ayuda

  • Herramientas para Simulacin

    3

    MATLAB opera en un entorno matricial con variables reales y/o complejas. Un escalar es tratado como una matriz de una fila por una columna. Los comandos de MATLAB pueden ser grabados en archivos especiales denominados genricamente Archivos-M. Cada variable asignada ocupa un lugar en el Espacio de Trabajo (memoria fsica + memoria virtual) y sus caractersticas pueden ser analizadas utilizando el Workspace Browser. Las rutas de acceso a archivos pueden ser analizadas y modificadas por medio del Path Browser. En su momento trataremos lo relacionado a Simulink, una herramienta de MATLAB que proporciona un entorno grfico muy sencillo para la simulacin de sistemas dinmicos. Un detalle muy importante a tener en cuenta es que MATLAB diferencia entre maysculas y minsculas. Por lo tanto x y X referenciarn dos objetos distintos. Lo mismo vale para los nombres de funciones, por lo que resulta aconsejable utilizar maysculas solamente en casos especiales y fciles de recordar. Veamos ahora algunos ejemplos que nos introducirn en las peculiaridades de MATLAB. Para dar a una variable t el valor 5, escribimos en la Ventana de Comandos:

    Para evitar que MATLAB repita en cada expresin el o los valores asignados, debemos agregar al final de la misma un punto y coma (;) Probmoslo:

    Veamos cmo hacemos para ingresar una matriz A : Se separan los elementos de una fila con espacios o comas , Se emplea un punto y coma ; para indicar el fin de cada fila Se rodea la lista de elementos con corchetes [ ]

    t=5 t = 5

    Observamos que, a pesar de no haberlo requerido, MATLAB muestra inmediatamente el valor asignado a la variable t.

    x=2;

    A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

    A(3,2) ans = 6

    Cualquier elemento de la matriz A puede ser referenciado mediante subndices en la forma usualmente empleada en notacin matemtica:

  • Herramientas para Simulacin

    4

    Los dos_puntos : es uno de los ms importantes operadores de MATLAB y puede emplearse de muy diversas maneras, 1:10 produce un vector fila que contiene los diez primeros enteros 1 a 10

    Para obtener un espaciado no unitario, se especifica un incremento, por ejemplo 100:-7:50 produce

    El incremento no ha de ser necesariamente un entero; as 0:pi/4:pi produce

    Expresiones subindicadas con dos_puntos hacen referencia a porciones de una matriz. As por ejemplo A(1:k,j) se refiere a los primeros k elementos de la columna j de la matriz A. EXPRESIONES Como muchos otros lenguajes de programacin, MATLAB opera sobre expresiones matemticas, pero tales expresiones involucran matrices. Los elementos constitutivos de las expresiones son

    Variables Nmeros Operadores Funciones

    Variables MATLAB no requiere sentencias declarativas de tipo ni el dimensionamiento de sus variables. Cuando MATLAB encuentra un nuevo nombre de variable, automticamente crea la variable y le asigna el almacenamiento apropiado. Por ejemplo

    cant_alumnos = 25 crea una matriz de 1-por-1 llamada cant_alumnos y almacena el valor 25 en su nico elemento. Los nombres de variables consisten de una letra seguida de cualquier cantidad de letras, dgitos y signos de subrayado (_). MATLAB utiliza solamente los primeros 31 caracteres de un nombre de variable. Nmeros MATLAB emplea para los nmeros la notacin decimal convencional, con un punto decimal opcional y un signo ms o menos antepuesto. La notacin cientfica utiliza la letra e para indicar

    1:10 ans = 1 2 3 4 5 6 7 8 9 10

    100:-7:50 ans = 100 93 86 79 72 65 58 51

    0:pi/4:pi ans = 0 0.7854 1.5708 2.3562 3.1416

  • Herramientas para Simulacin

    5

    una potencia de diez como factor de escala. Los nmero imaginarios emplean i o j como sufijo. Ejemplos de nmeros vlidos son 3 -99 0.001 9.6397238 1.6021e-20 6.02252e23 1i 3e5j 3 + 2i Todos los nmeros son almacenados internamente empleando el formato largo especificado por la norma IEEE. Los nmeros de punto flotante tiene una precision de aproximadamente 16 dgitos decimales y un rango finito que va de aproximadamente 10-308 a 10+308 . Operadores Las expresiones utilizan operadores aritmticos y emplean las reglas de precedencia que nos son ya familiares + adicin

    - sustraccin * multiplicacin

    / divisin \ divisin por la izquierda (matricial)

    potencia ' (apstrofe): transpuesta compleja conjugada matricial () especifican el orden de evaluacin.

    Funciones MATLAB brinda un gran nmero de funciones matemticas standard incluyendo abs, sin, sqrt y exp. Tomar la raz cuadrada o el logaritmo de un nmero negativo no produce error, sino que el nmero complejo resultante es calculado automticamente. Asimismo posee numerosas funciones matemticas especiales, incluyendo funciones de Bessel y gamma. La mayor parte de stas aceptan argumentos complejos. Para obtener un listado de funciones elementales basta tipear help elfun

    Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. acos - Inverse cosine. acosh - Inverse hyperbolic cosine. tan - Tangent. tanh - Hyperbolic tangent. atan - Inverse tangent. atan2 - Four quadrant inverse tangent. atanh - Inverse hyperbolic tangent. sec - Secant. sech - Hyperbolic secant. asec - Inverse secant. asech - Inverse hyperbolic secant. csc - Cosecant. csch - Hyperbolic cosecant. acsc - Inverse cosecant. acsch - Inverse hyperbolic cosecant. cot - Cotangent. coth - Hyperbolic cotangent. acot - Inverse cotangent. acoth - Inverse hyperbolic cotangent.

    Exponential. exp - Exponential. log - Natural logarithm. log10 - Common (base 10) logarithm. log2 - Base 2 logarithm and dissect floating point number. pow2 - Base 2 power and scale floating point number. sqrt - Square root. nextpow2 - Next higher power of 2. Complex. abs - Absolute value. angle - Phase angle. conj - Complex conjugate. imag - Complex imaginary part. real - Complex real part. unwrap - Unwrap phase angle. isreal - True for real array. cplxpair - Sort numbers into complex conjugate pairs. Rounding and remainder. fix - Round towards zero. floor - Round towards minus infinity. ceil - Round towards plus infinity. round - Round towards nearest integer. mod - Modulus (signed remainder after division). rem - Remainder after division. sign - Signum.

  • Herramientas para Simulacin

    6

    Algunas funciones especiales suministran los valores de constantes tiles: pi 3.14159265... i Unidad imaginaria, (-1)1/2 eps Precisin relativa en punto flotante, 2-52 realmin nmero de punto flotante ms pequeo, 2-1022 realmax el nmero de punto flotante ms grande, (2-eps)1023 inf infinito nan not-a-number (no es un nmero). El infinito inf se genera al intentar dividir un valor distinto de cero por cero o al evaluar expresiones que producen desborde (overflow). nan se produce al intentar evaluar expresiones indeterminadas del tipo 0/0 o bien - que matemticamente no poseen valor. Los nombres de funciones no son reservados, por lo que resulta posible sobrescribirlos con una nueva variable, como por ejemplo eps = 1e-6 para utilizarla en clculos subsiguientes. La funcin original puede ser restablecida en cualquier momento mediante el comando clear, clear eps < vuelve al valor original de eps 2-52 >. Expresiones Ya hemos utilizado precedentemente varias expresiones. Damos a continuacin algunos ejemplos adicionales con los valores resultantes

    a = abs(3+4i) a = 5 z = log(-1) z = 0+ 3.1416i grande = exp(log(realmax)) grande = 1.7977e+308 demasiado_grande = pi * grande demasiado_grande = Inf

  • Herramientas para Simulacin

    7

    A ttulo ilustrativo, echemos una ojeada al espacio de trabajo que hemos generado con nuestros ejemplos:

    El comando format Este comando controla el formato numrico de los valores mostrados por MATLAB. Mostramos un ejemplo de los diversos formatos de visualizacin para un vector x con componentes de muy distinta magnitud

    x = [4/3 1.2345e-6]; format short x x = 1.3333 0.0000 format short e x x = 1.3333e+000 1.2345e-006 format short g x x = 1.3333 1.2345e-006

    format long x x = 1.33333333333333 0.00000123450000 format long e x x = 1.333333333333333e+000 1.234500000000000e-006

    Para ms informacin acerca de la totalidad de los formatos utilizables en MATLAB tipear help format

  • Herramientas para Simulacin

    8

    GRAFICACIN

    Deseamos crear un grfico de la funcin e-0.2t.sen(t) para valores de la variable independiente comprendidos en el intervalo [0, 6], nos valemos para ello de los comandos

    obteniendo el siguiente resultado en pantalla:

    Observemos que tanto t como exp(-0.2*t) como sin(t) son matrices (hablando con propiedad, vectores fila de 1 fila por 100 columnas), por lo que la multiplicacin de la funcin exponencial por la funcin seno no puede ser indicada simplemente con el operador *. Esto es as porque la multiplicacin de matrices exige que las mismas sean conformables -es decir, que la cantidad de columnas de la matriz multiplicando sea igual a la cantidad de filas del multiplicador: X(mxn) * Y(nxp) = Z(mxp) -. Ahora bien, nosotros deseamos multiplicar escalarmente cada valor de exp(-0.2*t) por el valor de sin(t) correspondiente al mismo instante t, por lo tanto empleamos el operador .* ("punto por")

    para indicar este tipo de operacin.

    t=0:pi/100:6*pi; y=exp(-0.2*t).*sin(t); plot(t,y)

  • Herramientas para Simulacin

    9

    Podemos agregar el reticulado, etiquetas a los ejes, ttulo a la figura y leyendas descriptivas mediante los comandos:

    Finalmente, podemos copiar la figura con la opcin Copy Figure del men Edit de la misma, obteniendo el grfico:

    0 5 10 15 20-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    t (tiempo)

    y(t

    )

    OSCILACION AMORTIGUADA exp(-0.2*t).*sin(t)

    Perodo de oscilacin 2

    Y an podemos jugar con el grosor de la lnea y el rango de los ejes, empleando los comandos

    Con lo que, en definitiva, obtenemos la figura de la pgina siguiente.

    grid on xlabel('t (tiempo)') ylabel('y(t)') title('OSCILACION AMORTIGUADA exp(-0.2*t).*sin(t)') text(6, 0.5, 'Perodo de oscilacin 2{\pi}')

    hold on %mantiene la figura anterior plot(t,y,'LineWidth',2) axis([0 20 -1 1]) plot(t,exp(-0.2*t),':') % ':' muestra lnea punteada plot(t,-exp(-0.2*t),':') text(11, -0.3,'\it{envolventes en lneas de puntos}')

  • Herramientas para Simulacin

    10

    0 5 10 15 20-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Perodo de oscilacin 2

    OSCILACION AMORTIGUADA exp(-0.2*t).*sin(t)

    t (tiempo)

    y(t

    )

    envolventes en lneas de puntos

    Manejo de Polinomios y Grficos Logartmicos Planteamos el problema concreto de graficar la funcin de respuesta en frecuencia (diagramas de Bode) de mdulo y fase correspondiente a la funcin de transferencia

    para valores de la pulsacin comprendidos entre 0.1 y 100 radianes/seg. Como en H(s) el numerador es constante, nuestro problema radica en evaluar el polinomio denominador de cuarto grado P(s) para los valores indicados de s=j . El tratamiento de polinomios en MATLAB es sumamente simple, tanto para valores reales como complejos de la variable independiente. Un vector fila formado por n+1 coeficientes ordenados segn el orden decreciente de las potencias de la variable, es interpretado como un polinomio, cuyas races pueden ser investigadas mediante la funcin roots ,

    jsconsP

    sH ==++++

    =)(

    9

    9 4.6s 10.05s 0.6s s

    9)(

    234

    p=[1.0000 0.6000 10.0500 4.6000 9.0000]; % Vector de los coeficientes de P(s) r=roots(p) r = % r es un vector columna que contiene las % races de P(s). -0.0500+ 2.9996i -0.0500- 2.9996i % Observamos dos pares de races complejas -0.2500+ 0.9682i % conjugadas, lo que nos hace predecir dos -0.2500- 0.9682i % frecuencias de resonancia.

  • Herramientas para Simulacin

    11

    Para trabajar en escala logartmica MATLAB permite, mediante el uso la funcin logspace, definir un vector de valores de la variable independiente -que llamaremos om- logartmicamente espaciados. El comando es

    y genera 1000 valores logartmicamente distribuidos entre 10-1 y 102 que corresponden a los extremos inferior (0.1) y superior (100) del rango de inters para nuestro problema. Evaluamos ahora el mdulo de H(j) -que almacenamos en el vector h- aplicando al polinomio (almacenado en la variable p), las funciones abs (valor absoluto: que en el caso de un complejo corresponde al mdulo) y polyval (que calcula el valor del polinomio para los valores de la variable de su segundo argumento,

    La conversin a decibeles es inmediata, empleando la frmula conocida y la funcin log10 (logaritmo decimal.

    Slo nos resta ahora graficar h_db versus om para completar el diagrama de Bode del mdulo de H(j). Empleamos para ello la funcin semilogx (cuyo nombre aclara totalmente su cometido).

    Resultando la figura

    10-1

    100

    101

    102

    -160

    -140

    -120

    -100

    -80

    -60

    -40

    -20

    0

    20

    A la que aplicamos nuestra "cosmtica" para hacerla un poco ms legible,

    om=logspace(-1,2,1000);

    h=9./abs(polyval(p,om*i)); % Ntese que como 9 es un escalar, % y el denominador produce un vector, % resulta necesario realizar la divisin % con el operador ./

    h_db=20*log10(h); % h_db contiene el valor de % h expresado en decibeles.

    semilogx(om,h_db)

  • Herramientas para Simulacin

    12

    10-1

    100

    101

    102

    -140

    -120

    -100

    -80

    -60

    -40

    -20

    0

    20

    Funcin de Transferencia de 4 Orden - Doble Resonancia

    Pulsacin en rad/s

    M

    du

    lo d

    e H

    (j

    ) e

    n d

    b.

    Para el diagrama de ngulos de fase, observamos que en nuestra funcin de transferencia es

    ya que el numerador es un nmero real. Evaluamos la fase del polinomio denominador, en todo el rango de con el comando angle que brinda como resultado el argumento (o ngulo de fase) de un nmero complejo, e inmediatamente lo graficamos

    10

    -110

    010

    110

    2-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    La figura nos aparece con las ordenadas en radianes y, lo que es verdaderamente grave, una injustificable discontinuidad (salto de valor 2) en 3 rad/s. Pero no hay que apenarse! Ello se debe al algoritmo empleado por MATLAB en angle. Afortunadamente, tenemos la solucin por medio de unwrap. Con unwrap, pasando radianes a grados y un poco de manicura...

    )}(arg{)()( jPconejHjH j ==

    w=-angle(polyval(p,om*i)); % almacenamos en w la fase de p semilogx(om,w); % graficamos y oh sorpresa!

  • Herramientas para Simulacin

    13

    10-1

    100

    101

    102

    -350

    -300

    -250

    -200

    -150

    -100

    -50

    0

    Funcin de Transferencia de 4 Orden - Doble Resonancia

    Pulsacin en rad/s

    Fa

    se

    de

    H(j

    )

    en

    gra

    do

    s

    Archivos Script Mucho nos agradara, en nuestro afn de simplificar tareas, guardar todos los comandos que hemos empleado en el punto precedente, de manera de tenerlos disponibles para cualquier otra ocasin que se nos presente un problema similar. Y lo vamos a hacer empleando el icono New M-File de la barra de tareas. Aparece la siguiente pantalla, sobre la cual podemos rescribir los comandos anteriores o, si somos ms duchos, podemos copiar con Ctrl.-C y Ctrl.-V las lneas escritas en la Ventana de Comandos:

    fi=180*unwrap(w)/pi; % Convierte radianes en grados semilogx(om,fi); grid on axis([.1 100 -360 0]) title('Funcin de Transferencia de 4 Orden - Doble Resonancia') xlabel('Pulsacin {\omega} en rad/s') ylabel('Fase de H(j{\omega}) en grados')

  • Herramientas para Simulacin

    14

    ste es un editor de texto, con alguna funciones auxiliares que invitamos a experimentar. Procediendo entonces como dijimos en la pgina precedente, llegamos a

    ... y con el comando Save del men File lo podemos almacenar como archivo .m en un directorio tal como C:\MATLAB\ejercicios (que deberemos haber creado anteriormente) bajo el nombre ft_4o_orden.m

    Desde el momento que se encuentra almacenado, este archivo puede ser invocado desde la Ventana de Comandos introduciendo simplemente su nombre de la siguiente forma

    % FT_4o_ORDEN

    % F. DE TRANSFER. H(s)=9/(s^4+0.6s^3+10.05s^2+4.6s+9)

    % diagramas de Bode de amplitud y fase

    p=[1.0000 0.6000 10.0500 4.6000 9.0000]; % Coeficientes

    r=roots(p); % Races

    om=logspace(-1,2,1000); % 1000 valores de om entre 0.1 y 100

    h=9./abs(polyval(p,om*i)); % Mdulo de h

    h_db=20*log10(h); % decibeles

    figure(1); % define la Figura 1 como la figura actual

    semilogx(om,h_db); % Grfico semilogartmico del mdulo en db

    grid on

    axis([.1 100 -140 20])

    title('Funcin de Transferencia de 4 Orden - Doble Resonancia')

    xlabel('Pulsacin {\omega} en rad/s')

    ylabel('Mdulo de H(j{\omega}) en db.')

    w=-angle(polyval(p,om*i)); % Clculo del argumento

    fi=180*unwrap(w)/pi; % Elimina discontinuidades y transforma a grados

    figure(2); % define la Figura 2 como la figura actual

    semilogx(om,fi); %Grfico semilogartmico del ngulo de fase en grados

    grid on

    axis([.1 100 -360 0])

    title('Funcin de Transferencia de 4 Orden - Doble Resonancia')

    xlabel('Pulsacin {\omega} en rad/s')

    ylabel('Fase de H(j{\omega}) en grados')

    ft_4o_orden ??? Undefined function or variable 'ft_4o_orden'.

  • Herramientas para Simulacin

    15

    El mensaje de error se origina porque MATLAB no tiene incorporado el camino C:\MATLAB\ejercicios a sus rutas de bsqueda. Para solucionar el inconveniente accedemos al icono Path Browser de la barra de tareas.

    Para que el camino se incorpore en forma permanente a la ruta de bsqueda, deber responderse afirmativamente al cuadro de dilogo que aparece a continuacin

    Un archivo .m como el que acabamos de generar se conoce como script. Un script no posee argumentos de entrada y al ser invocado, MATLAB simplemente ejecuta los comandos que encuentra en el archivo generando o modificando valores en el espacio de trabajo. Un segundo tipo de archivos .m son las funciones function, las cuales aceptan argumentos de entrada y devuelven valores en los argumentos de salida; las variables internas de una funcin son locales a la misma y no afectan al espacio de trabajo. SOLUCION DE ECUACIONES DIFERENCIALES MATLAB posee potentes algoritmos para la solucin de ecuaciones diferenciales, con el comando help funfunctions obtenemos el listado

    Ordinary differential equation solvers. (If unsure about stiffness, try ODE45 first, then ODE15S.) ode45 - Solve non-stiff differential equations, medium order method. ode23 - Solve non-stiff differential equations, low order method. ode113 - Solve non-stiff differential equations, variable order method. ode15s - Solve stiff differential equations, variable order method. ode23s - Solve stiff differential equations, low order method. odefile - ODE file syntax.

  • Herramientas para Simulacin

    16

    Nosotros emplearemos normalmente ode45 y utilizaremos ode15s tan slo cuando notemos que la solucin tarda excesivamente en ser calculada, lo que ocurre cuando la curva solucin (t) presenta flancos muy abruptos (casi verticales). ode45 implementa un algoritmo de Runge-Kutta modificado, de paso de integracin variable, desarrollado por Dormand-Prince.

    Invocaremos ode45 para resolver una ecuacin diferencial de alguna de las maneras alternativas siguientes: [T,Y] = ode45('F', rango_tiempo, y0) [T,Y] = ode45('F', rango_tiempo, y0, opciones) [T,Y] = ode45('F', rango_tiempo, y0, opciones, p1, p2, . . .)

    donde los argumentos tienen los significados T,Y Matriz solucin Y en la que cada fila corresponde a un valor de

    tiempo consignado en el vector columna T.

    F Nombre de un archivo ODE, una funcin de T e Y que devuelve un vector columna. La sintaxis especial de este archivo ser considerada ms adelante.

    rango_tiempo Un vector que especifica el intervalo total de integracin [t0 tfinal] y0 Un vector de condiciones iniciales. opciones Argumentos de integracin opcionales para aplicaciones avanzadas. No los utilizaremos en nuestro curso. p1, p2, ... Parmetros opcionales para la funcin_F.

    Como ejemplo aplicativo, veamos la solucin de la ecuacin diferencial de Van der Pol, que es de la forma

    que equivale al sistema de dos ecuaciones diferenciales de primer orden

    El archivo-M

    define este sistema de ecuaciones con =1. La grabamos bajo el nombre vdpl.m Para resolver el sistema de Van der Pol en el intervalo de tiempo [0 20] con los valores iniciales y(1)=2 e y(2)=0, invocamos

    0)1( 2 =+ yyyy

    122

    12

    21

    )1( yyyy

    yy

    =

    =

    function out1= vdpl(t,y)

    %Resuelve Van der Pol con mu=1

    out1= [y(2); (1-y(1)^2)*y(2)-y(1)];

    [t,y]=ode45('vdpl',[0 20],[2;0]) plot(t,y(:,1),'-',t,y(:,2),'-.')

  • Herramientas para Simulacin

    17

    y poniendo ttulos, comentarios y dems, obtenemos la figura

    0 5 10 15 20

    -3

    -2

    -1

    0

    1

    2

    3

    Ecuacin de Van der Pol con =1

    t

    y(t)

    dy/dt

    Como vemos, el procedimiento no es para nada complicado. Lo que debe quedar claro respecto de la funcin vdpl que creamos ms arriba, es que out1 es un vector columna de dos componentes. Por ello, tambin las condiciones iniciales y0 son introducidas en los argumentos de ode45 como un vector columna [2; 0]. Resulta instructivo analizar el contenido de las primeras 10 componentes de las variables t e y:

    ganamos as, un conocimiento adicional acerca de la cantidad de valores que calcula y almacena MATLAB al resolver una ecuacin diferencial. Los interesados en realizar elaboraciones algo ms profundas, pueden utilizar el comando help odefile y consultar las pginas 2-453 a 2-472 del documento Refbook.pdf.

    t(1:10) ans = 0 2.5119e-005 5.0238e-005 7.5357e-005 0.00010048 0.00022607 0.00035166 0.00047726 0.00060285 0.0012308

    y(1:10,:) ans = 2 0 2 -5.0236e-005 2 -0.00010047 2 -0.0001507 2 -0.00020092 2 -0.00045199 2 -0.00070296 2 -0.00095383 2 -0.0012046 2 -0.0024571