Está en la página 1de 17

Herramientas para Simulacin

MATLAB 5

GUIA BASICA DE USO ELEMENTAL

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.

Herramientas para Simulacin

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

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:
t=5
Observamos que, a pesar de no haberlo requerido, MATLAB
muestra inmediatamente el valor asignado a la variable t.

t=
5

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:
x=2;

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 [ ]
A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A=
16 3
5 10
9 6
4 15

2 13
11 8
7 12
14 1

Cualquier elemento de la matriz A puede ser referenciado mediante


subndices en la forma usualmente empleada en notacin matemtica:

A(3,2)
ans =
6
3

Herramientas para Simulacin

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
1:10
ans =
1

10

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

93

86

79

72

65

58

51

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


0:pi/4:pi
ans =
0

0.7854

1.5708

2.3562 3.1416

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

Herramientas para Simulacin

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

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

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

format long
x

x=

x=

1.3333

0.0000

1.33333333333333 0.00000123450000

format short e
x

format long e
x

x=

x=

1.3333e+000 1.2345e-006
format short g
x
x=

1.333333333333333e+000

1.234500000000000e-006

Para ms informacin acerca de la totalidad de los formatos


utilizables en MATLAB tipear
help format

1.3333 1.2345e-006

Herramientas para Simulacin

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
t=0:pi/100:6*pi;
y=exp(-0.2*t).*sin(t);
plot(t,y)
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.

Herramientas para Simulacin

Podemos agregar el reticulado, etiquetas a los ejes, ttulo a la figura y leyendas descriptivas
mediante los comandos:
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}')
Finalmente, podemos copiar la figura con la opcin Copy Figure del men Edit de la misma,
obteniendo el grfico:
O SCILACION AMORT IG UADA exp(-0.2*t).*sin(t)
1
0.8

0.6
Perodo de oscilacin 2
y(t)

0.4

0.2
0

-0.2
-0.4

10
t (tiempo)

15

20

Y an podemos jugar con el grosor de la lnea y el rango de los ejes, empleando los comandos
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}')
Con lo que, en definitiva, obtenemos la figura de la pgina siguiente.

Herramientas para Simulacin

O SCILACION AMORT IG UADA exp(-0.2*t).*sin(t)


1
0.8
0.6
Perodo de oscilacin 2
0.4

y(t)

0.2
0
-0.2
envolventes en lneas de puntos

-0.4
-0.6
-0.8
-1

10
t (tiempo)

15

20

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
H ( s) =

9
9
=
2
s + 0.6s + 10.05s + 4.6s + 9 P( s )
4

con s = j

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 ,
p=[1.0000
r=roots(p)

0.6000 10.0500

r=
-0.0500+ 2.9996i
-0.0500- 2.9996i
-0.2500+ 0.9682i
-0.2500- 0.9682i

4.6000

9.0000]; % Vector de los coeficientes de P(s)


% r es un vector columna que contiene las
% races de P(s).
% Observamos dos pares de races complejas
% conjugadas, lo que nos hace predecir dos
% frecuencias de resonancia.

10

Herramientas para Simulacin

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
om=logspace(-1,2,1000);
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,
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 ./

La conversin a decibeles es inmediata, empleando la frmula conocida y la funcin


(logaritmo decimal.
h_db=20*log10(h);

log10

% h_db contiene el valor de


% h expresado en decibeles.

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).
semilogx(om,h_db)
Resultando la figura
20
0
-20
-40
-60
-80
-100
-120
-140
-160
-1
10

10

10

10

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

11

Herramientas para Simulacin

F uncin de T ransferencia de 4 Orden - Doble Resonancia


20

Mdulo de H(j ) en db.

0
-20
-40
-60
-80
-100
-120
-140
-1
10

10

10
Pulsacin en rad/s

10

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


H ( j ) = H ( j ) e j
ya que el numerador es un nmero real.

con = arg{ P ( j )}

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
w=-angle(polyval(p,om*i));
% almacenamos en w la fase de p
semilogx(om,w);
% graficamos y oh sorpresa!
4
3
2
1
0
-1
-2
-3
-4
-1
10

10

10

10

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...
12

Herramientas para Simulacin

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')

Funcin de Transferencia de 4 Orden - Doble Resonancia


0

F ase de H(j ) en grados

-50
-100
-150
-200
-250
-300
-350
10

-1

10

10
Pulsacin en rad/s

10

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:

13

Herramientas para Simulacin

ste es un editor de texto, con alguna funciones auxiliares que invitamos a experimentar.
Procediendo entonces como dijimos en la pgina precedente, llegamos a
% 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
% Races
r=roots(p);
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')

... 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
??? Undefined function or variable 'ft_4o_orden'.
14

Herramientas para Simulacin

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.

15

Herramientas para Simulacin

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.

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
y (1 y 2 ) y + y = 0
que equivale al sistema de dos ecuaciones diferenciales de primer orden

y 1 = y 2
2
y 2 = (1 y1 ) y 2 y1

El archivo-M
function out1= vdpl(t,y)
%Resuelve Van der Pol con mu=1
out1= [y(2); (1-y(1)^2)*y(2)-y(1)];
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

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

Herramientas para Simulacin

y poniendo ttulos, comentarios y dems, obtenemos la figura

Ecuacin de Van der Pol con =1


3
dy/dt

2
y(t)

-1

-2

-3

10
t

15

20

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:
t(1:10)

y(1:10,:)

ans =

ans =

0
2.5119e-005
5.0238e-005
7.5357e-005
0.00010048
0.00022607
0.00035166
0.00047726
0.00060285
0.0012308

2
2
2
2
2
2
2
2
2
2

0
-5.0236e-005
-0.00010047
-0.0001507
-0.00020092
-0.00045199
-0.00070296
-0.00095383
-0.0012046
-0.0024571

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.

17

También podría gustarte