You are on page 1of 44

Facultad de Ingeniera Universidad de Mendoza Dr. Ing.

Jess Rubn Azor Montoya


1
Resolutores de Ecuaciones Diferenciales

Mathcad tiene una variedad de funciones para resolver numricamente
ecuaciones diferenciales parciales:

Resolutor de Ecuaciones Diferenciales Ordinarias

odesolve(x,b,step)
rkfixed(y,x1,x2,npoints,D)

Sistemas Alisados

Bulstoer(y,x1,x2,npoints,D)

Sistemas Stiff

Stiffb(y,x1,x2,npoints,D,J)
Stiffr(y,x1,x2,npoints,D,J)

Sistemas lentamente variables

Rkadapt(y,x1,x2,npoints,D)

Encontrar el ultimo punto sobre el intervalo de integracin

bulstoer(y,x1,x2,acc,D,kmax,s)
rkadapt(y,x1,x2,acc,D,kmax,s)
stiffb(y,x1,x2,acc,D,J,kmax,s)
stiffr(y,x1,x2,acc,D,J,kmax,s)

Resolver problemas de valores lmites dos-puntos

bvalfit(v1,v2,x1,x2,xf,D,load1,load2,score)
sbval(v,x1,x2,D,load,score)

Resolver Ecuaciones Diferenciales a las derivadas parciales

relax(a,b,c,d,e,f,u,rjac)
multigrid(M,ncycle)

Resolucin de una sola ecuacin diferencial ordinaria

odesolve(x,b,[step]) Retorna una funcin de x la cual es una solucin a la
ecuacin diferencial ordinaria (ODE), sujeta a a los constreiminetos de
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

2
valor inicial o bordes provista en el solve block. La ODE debe ser lineal en
sus derivadas ms altas y el nmero de condiciones debe ser igual al orden
de la ODE.
.

Argumentos:
x es la variable de integracin. x debe ser real.

b es el punto terminal del intervalo de integracin. b debe ser real.

step (opcional) es el nmero de pasos usados internamente cuando se
calcula la solucin.


Uso de la funcin odesolve:
Pasos para usar la funcin odesolve para resolver una ecuacin diferencial
ordinaria:
Tipee la palabra Given para arrancar el
solve block.


Por debajo del Given, tipee la ecuacin
diferencial y sus constrimientos usando
boolean operators.


Tippee la funcin odesolve con la
variable de integracin, x, y el punto
terminal b.
Notes:
La ecuacin diferencial puede ser escita usando los operadores
derivada tales como d/dx y d
2
/dx
2
o usando notacin primada similar
a y(x) e y'(x). (La combinacin de teclas para el character prima es
Ctrl+F7.)
Los constreimientos estarn en la forma de y(a)=b o y'(a)=b.
Mathcad no aceptar constrimientos ms complicados tales como
y'(a)+y(a)=b.
El punto terminal b debe ser ms grande que el valor inicial.
Por default, odesolve usa un runge-kutta de paso fijo de resolucin.
Para usar un mtodo adaptivo, cliquee sobre odesolve con el botn
derecho del mouse y eleija Adaptive desde el men pop-up.
Para resolver sistemas de ecuaciones diferenciales o para resolver
una que no es lineal en el trmino de derivada ms alta, use rkfixed.
Ejemplo:

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
3
Los ejemplos de abajo demuestran cmo usar la funcin odesolve para
resolver ecuaciones diferenciales ordinarias:
Given

100 y'' x ( ) 10 y' x ( ) + 101 y x ( ) + 50 cos
1
4
x
|

\
|
|


y 0 ( ) 0 y' 0 ( ) 1

y Odesolve x 150 , ( ) :=

0 2 4 6 8 10
1
0
1
2
1.465
0.698
y x ( )
10 0 x

Given
4
2
t
f t ( )
d
d
2
f t ( ) + t f 0 ( ) 4 f 5 ( ) 13.5

f Odesolve t 5 , ( ) :=
0 1 2 3 4 5 6
10
20
30
f t ( )
t

----------------------------------------------------------------------------------------------------
Utilizacin de Matlab para resolucin de Ecuaciones Diferenciales


DSOLVE Solucin simblica de ecuaciones diferenciales ordnarias

DSOLVE('eqn1','eqn2', ...) acepta ecuaciones simblicas representando
ecuaciones diferenciales ordinarias y condiciones iniciales. Varias ecuaciones o
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

4
condiciones iniciales pueden ser agrupadas juntas, separadas por comas, en
un nico argumento de entrada.

Por omisin, la variable independiente es ' t '. La variable independente puede
ser cambiada de 't' a alguna otra variable simblica incluyendo esa variable
como el ltimo argumento.
La letra 'D' denota derivada con respecto a la variable independiente, en este
caso usualmente d/dt. Una 'D' seguida por un dgito denota derivacin
repetida; por ejemplo, D2 es d^2/dt^2. Cualesquiera caracteres siguiendo
estos operadores de derivacin son tomados como variables dependientes; por
ejemplo, D3y denota al tercera derivada de y(t). Note que los nombes de las
variables simblicas no debern contener la letra 'D'.
Las condiciones iniciales son especificadas por ecuaciones tales como 'y(a)=b'
o 'Dy(a) = b' donde y es una de las variables dependientes y a y b son
constantes. Si el nmero de condiciones iniciales es menor que el nmero de
variables dependientes, las soluciones resultantes obtendrn constantes
arbitrarias, C1, C2, etc.
Son posibles tres diferentes tipos de salidas.
Para una ecuacin y una salida, es retornada la solucin resultante, con
soluciones mltiples para una ecuacin no lineal en un vector simblico.
Para varias ecuaciones e igual nmero de salidas, los resultados son
ordenados en orden lexicogrfico y asignados a las salidas.
Para varias ecuaciones y una nica salida, se retorna una estructura
conteniendo las soluciones.
Si no se encuentra ninguna solucin closed-form (explcita) , se intenta una
solucin implcita. Cuando se retorna una solucin implcita, se da una
advertencia.
Si no se puede calcular una solucin explcita o implcita, entonces se da una
advertencia y se retorna el sym vaco. En algunos casos involucrando
ecuaciones no-lineales, la salida ser una ecuacin diferencial de ms bajo
orden equivalente o una integral.

Ejemplos:

dsolve('Dx = -a*x') retorna

ans = exp(-a*t)*C1

x = dsolve('Dx = -a*x','x(0) = 1','s') retorna

x = exp(-a*s)

y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') retorna

y =
[ sin(t)]
[ -sin(t)]

S = dsolve('Df = f + g','Dg = -f + g','f(0) = 1','g(0) = 2')
retorna una estructura S con campos

S.f = exp(t)*cos(t)+2*exp(t)*sin(t)

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
5
S.g = -exp(t)*sin(t)+2*exp(t)*cos(t)

Y = dsolve('Dy = y^2*(1-y)')

Advertencia: No puede ser encontrada solucin explcita; se retorna la
solucin implcita.

Y =
t+1/y-log(y)+log(-1+y)+C1=0

dsolve('Df = f + sin(t)', 'f(pi/2) = 0')
dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')
S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')
S = dsolve('Du=v, Dv=w, Dw=-u','u(0)=0, v(0)=0, w(0)=1')
w = dsolve('D3w = -w','w(0)=1, Dw(0)=0, D2w(0)=0')
y = dsolve('D2y = sin(y)'); pretty(y)

Algunos comandos, tales como ode45 (un resolutor de ecuaciones
diferenciales en forma numrica), requiere que su primer argumento sea una
funccin para ser preciso o bien una funcin inline, como en
ode45(f, [0 2], 1).
o una function handle, esto es, el nombre de una funcin built-in o una funcin
M-file precedida por el smbolo especial @, como en
ode45(@func, [0 2], 1)).

Ecuaciones Diferenciales Ordinarias

El objetivo de este laboratorio es aprender tcnicas para la resolucin numrica de
problemas de valores iniciales (P.V.I.) para ecuaciones diferenciales ordinarias
(E.D.O.) y sistemas de E.D.O.
Matlab tiene varios comandos para la resolucin numrica de P.V.I. para E.D.O.:

Resolutores de ecuaciones diferenciales.
Resolutores de problemas con valores iniciales para ODEs. (Si no tiene seguridad
acerca del stiffness, intente primero ODE45, luego ODE15S.)
[En matemtica, una ecuacin stiff es una ecuacin diferencial en los que determinados
mtodos numricos para resolver la ecuacin son numricamente inestables, a menos
que el tamao de paso sea tomado extremadamente pequeo. Ha resultado difcil
formular una definicin precisa del stiff, pero la idea principal es que la ecuacin
incluye algunos trminos que pueden conducir a una variacin rpida en la solucin.]

ode45 Resuelve ED non-stiff, por el medium order method.
ode23 - Resuelve ED non-stiff, por el low order method.
ode113 - Resuelve ED non-stiff,, por el variable order method.
ode23t - Resuelve ED moderadamente non-stiff, y DAEs Index 1, trapezoidal rule.
ode15s - Resuelve ED stiff y DAEs Index 1, variable order method.
ode23s - Resuelve ED stiff, low order method.
ode23tb - Resuelve ED stiff, low order method.

Como se ve en esta lista, hay mtodos para resolver E.D.O. stiff y no stiff. Adems hay
mtodos de orden bajo, medio, alto y variable.
Todos ellos tienen una sintaxis semejante. Por ejemplo, para resolver el P.V.I.

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

6


en el intervalo [to, tf ] mediante el comando ode45 en su opcin ms sencilla, debe
ejecutarse:

[t,y]=ode45(f,[to tf],yo);

donde:
f es el nombre de la funcin f(t, y) (tpicamente definida mediante un programa
function en un archivo f.m);
to y tf son los extremos del intervalo donde se desea conocer la solucin;
yo es el valor de la solucin en to (es decir el valor de la condicin inicial y(to) = yo);
t devuelve los valores de la variable independiente t donde el mtodo calcula el valor
de la solucin;
y devuelve los valores de la solucin en cada uno de los puntos t.

Estos comandos no requieren como dato un paso de integracin h pues todos ellos
determinan de manera automtica en cada paso k, el tamao del paso de integracin
hk necesario para mantener los errores por debajo de una tolerancia determinada. Los
valores de t que entrega corresponden a los puntos
tk = tk1 + hk, k = 1, 2, . . . , en los que el comando necesit calcular el valor de y(tk).
Si se desea conocer la solucin para ciertos valores de t, puede
alternativamente ejecutarse:

[t,y]=ode45(f,tspan,yo);

donde tspan es el vector de valores donde se desea conocer la solucin. Por
ejemplo, tspan=0:0.1:1.
En ese caso, la salida t coincide con tspan e y contiene los valores de la
solucin en esos puntos.
La tolerancia predeterminada de estos mtodos es 10E3, para el error
relativo, y 10E6, para el error absoluto. Si se desea calcular la solucin con
otras tolerancias, deben prefijarse las opciones elegidas mediante el comando
odeset. Adems, en la ejecucin del comando para resolver la E.D.O., debe
agregarse el parmetro adicional de opciones. La sintaxis para realizar esto es,
por ejemplo:

options=odeset(RelTol,1e-6,AbsTol,1.e-8);
[t,y]=ode45(f,[to tf],yo,options);

Si se ejecuta options=odeset(RelTol,1e-6,AbsTol,1.e-8) sin el ; puede verse
que hay otras opciones que pueden prefijarse, adems de las tolerancias de los
errores.
Por ejemplo, si se desea resolver el P.V.I.



en el intervalo [0, 1.5], mediante el comando ode45 y visualizar la solucin
obtenida, debe crearse un fichero f.m como sigue:


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
7
function z=f(t,y)
z=y;

y ejecutarse:

[t,y]=ode45(f,[0 1.5],1);
plot(t,y,t,exp(t),'o')
As se obtiene la siguiente grfica:


El siguiente ejemplo resuelve la misma ecuacin en los puntos t=0:0.1:1.5, con
error absoluto menor a 10E6 y calcula los errores cometidos restando los
valores calculados a los de la solucin verdadera, que en este caso es y(t) =
exp(t):

options=odeset('AbsTol',1.e-6);
tspan=0:.1:1.5;
[t,y]=ode45('f',tspan,1,options);
error=exp(t)-y

error =
1.0e-006 *

0
-0.0003
-0.0248
-0.0448
-0.0076
-0.0415
-0.0694
-0.0200
-0.0669
-0.1056
-0.0402
-0.1048
-0.1586
-0.0721
-0.1612
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

8
-0.0989

La salida que se presenta indica que los errores son efectivamente menores en
valor absoluto a 10E6.
La resolucin de P.V.I. para sistemas de E.D.O. se realiza mediante los
mismos comandos. En tal caso, f(t,y) debe ser una funcin a valores vectoriales
(es decir un vector columna de funciones) e y un vector columna de variables
de la misma dimensin. Adems, la condicin inicial yo tambin debe ser un
vector columna de la misma dimensin.

Por ejemplo, consideremos el P.V.I.

cuya solucin exacta es:

Por lo tanto los puntos (x(t), y(t)) solucin de este sistema de E.D.O, describen
la circunferencia unitaria.
Este sistema escrito vectorialmente resulta:

Para resolverlo debe crearse un fichero F.m como sigue:

function Z=F(t,Y)
Z=[Y(2);-Y(1)];
Los siguientes comandos resuelven este P.V.I. en el intervalo [0, 2] y grafican
la curva (x(t), y(t)), para 0 < t< 2, que se obtiene:
[t,Y]=ode45('f',[0 2*pi],[1;0]);
plot(Y(:,1),Y(:,2));
As se obtiene la siguiente grfica:

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
9

Supongamos que deseamos resolver y plotear la solucin de la siguiente
ecuacin diferencial de segundo orden

eqn2='D2y+8*Dy+2*y=cos(x)';
inits2 = 'y(0)=0, Dy(0)=1';
y=dsolve(eqn2,inits2,'x')
y =
1/65*cos(x)+8/65*sin(x)+(-1/130+53/1820*14(1/2))*exp((-4+14(1/2))*x)
-1/1820*(53+14(1/2))*14(1/2)*exp(-(4+14(1/2))*x)
x=0:0.1:1;
z=eval(vectorize(y));
plot(x,z)


Given

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

10
100 y'' x ( ) 10 y' x ( ) + 101 y x ( ) + 50 cos
1
4
x
|

\
|
|


y 0 ( ) 0 y' 0 ( ) 1

y Odesolve x 150 , ( ) :=

0 2 4 6 8 10
1
0
1
2
1.465
0.698
y x ( )
10 0 x

Resolver con Matlab:
eqn2='100*D2y+10*Dy+101*y=50*cos(0.25*x)';
inits2 = 'y(0)=0, Dy(0)=1';
y=dsolve(eqn2,inits2,'x')
x=0:0.1:10;
z=eval(vectorize(y));
plot(x,z)


Resolucin de Sistemas de ED con Matlab
Supngase que deseamos resolver y graficar las soluciones del sistema de tres
ED ordinarias

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
11

Primero, para encontrar una solucin general, procedemos como en el caso de
una sla ED, excepto que cada ecuacin es abrazada por su par de comillas
(simples):
[x,y,z]=dsolve(Dx=x+2*y-z,Dy=x+z,Dz=4*x-4*y+5*z)
x =
-C1*exp(3*t)-C2*exp(t)-2*C3*exp(2*t)
y =
C1*exp(3*t)+C2*exp(t)+C3*exp(2*t)
z =
4*C1*exp(3*t)+2*C2*exp(t)+4*C3*exp(2*t)
Tenga en cuenta que ya no se ha especificado ninguna variable independiente,
MATLAB utiliza por defecto t.. Para resolver un problema de valores iniciales,
simplemente se define un conjunto de valores iniciales y se aaden al final del
comando dsolve (). Supongamos que tenemos x (0) = 1, y (0) = 2, y z (0) = 3.
Luego:

inits=x(0)=1,y(0)=2,z(0)=3;
[x,y,z]=dsolve(Dx=x+2*y-z,Dy=x+z,Dz=4*x-4*y+5*z,inits)
x =
-5/2*exp(3*t)-5/2*exp(t)+6*exp(2*t)
y =
5/2*exp(3*t)+5/2*exp(t)-3*exp(2*t)
z =
10*exp(3*t)+5*exp(t)-12*exp(2*t)

Finalmente, graficando esta solucin

t=linspace(0,.5,25);
xx=eval(vectorize(x));
yy=eval(vectorize(y));
zz=eval(vectorize(z));
plot(t, xx, t, yy, t, zz)

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

12

Bsqueda de soluciones numricas

MATLAB tiene una serie de herramientas para resolver numricamente las
ecuaciones diferenciales ordinarias. Nos centraremos en los dos principales, el
incorporado en las funciones ode23 y ode45, que implementan versiones
de Runge-Kutta 2do/3er-orden y 4to/5to-orden, respectivamente.
Ejemplo. Aproximar numricamente la solucin de el ED de primer orden

sobre el intervalo x [0, .5].
Para cualquier ED en la forma y = f(x, y), comenzamos definiendo la funcin
f(x, y). Para ecuaciones nicas, podemos definir f(x, y) como una funcin inline.
Aqu,
f=inline('x*y^2+y')
f =
Inline function:
f(x,y) = x*y2+y
El uso bsico para el resolutor ode45 de Matlab es
ode45(function,domain,initial condition).
Esto es, usamos
[x,y]=ode45(f,[0 .5],1)
y MATLAB retorna dos vectores columna, el primero con valores de x y el
segundo con valores de y. Ya que x e y son vectores con los correspondientes
componentes, podemos graficar los valores con
plot(x,y)

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
13


Eleccin de la particin.
En la aproximacin de esta solucin, el algoritmo ode45 ha seleccionado una
particin determinada del intervalo [0, 0.5], y MATLAB ha devuelto un valor de y
en cada punto de esta particin. A menudo es el caso en la prctica en que nos
gustara especificar la particin de valores en los que MATLAB devuelve una
aproximacin. Por ejemplo, slo puede ser que desee para aproximar y(0.1),
y(0,2), ..., y(0,5). Podemos especificar esto al introducir el vector de valores [0,
0.1, 0.2, 0.3, 0.4, 0.5], como el dominio en el ode45. Es decir, que utilizamos

xvalues=0:.1:.5;
[x,y]=ode45(f,xvalues,1)

x =
0
0.1000
0.2000
0.3000
0.4000
0.5000
y =
1.0000
1.1111
1.2500
1.4286
1.6667
2.0000

Opciones. Hay varias opciones disponibles para el resolutor ode45, dando al
usuario un control limitado sobre el algoritmo. Dos opciones importantes son la
tolerancia relativa y absoluta, respectivamente RelTol y AbsTol. En cada paso
del algoritmo ode45, un error se aproxima a ese paso. Si y
k
es la aproximacin
de y(x
k
) en el paso k, y e
k
es el error aproximado en este paso, a continuacin,
MATLAB elige su particin para asegurar
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

14

e
k
max (y
k
* RelTol , AbsTol),

donde los valores por defecto son RelTol = 0,001 y AbsTol = 0.000001.
Como un ejemplo de cundo puede ser que desee cambiar estos valores,
observamos que si y
k
llega a ser grande, entonces al error e
k
se le permitir
crecer bastante. En este caso, aumentar el valor de RelTol. Para la ecuacin
y' = xy
2
+ y, con y (0) = 1, los valores de y llegan a ser muy grandes cuando x
se acerca a 1. De hecho, con las tolerancias de error por defecto, nos
encontramos con que el comando

[x, y] = ode45 (f, [0,1], 1);

conduce a un mensaje de error, causado por el hecho de que los valores de y
son cada vez ms grandes a medida que x se acerca a 1. (Note en la parte
superior del vector de la columna para y que se multiplica por 10
14
.) Con el fin
de solucionar este problema, seleccione un valor menor para RelTol.

options=odeset ('RelTol', 1e-10);
[x, y] = ode45 (f, [0,1], 1,options);
max (y)
ans =
2.425060345544448e 07

Adems de emplear el comando option, se ha calculado el valor mximo de
y(x) para mostrar que o mostrar que s es bastante grande, aunque no tan
grandes como se sugiere en los ltimos clculos.

Ecuaciones de primer orden con M-files

Alternativamente, se puede resolver la misma ODE definiendo primero a f(x, y)
como un M-file firstode.m.

function yprime = firstode(x,y);
% FIRSTODE: Computes yprime = x*y2+y
yprime = x*y2 + y;

En este caso, slo requerimos un cambio en el commando ode45: debemos
usar un puntero @ para indicar el M-file. Esto es, usamos los siguientes
comandos.

xspan = [0,.5];
y0 = 1;
[x,y]=ode23(@firstode,xspan,y0);
plot(x,y)


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
15


Sistemas de EDs

Resolver un sistema de EDs en MATLAB es muy similar a resolver una nica
ecuacin, aunque un sistema de EDs no puede ser definido como una funcin
inline debemos definirlo como un M-file.

Ejemplo. Resolver el sistema de ecuaciones de Lorenz



[Las ecuaciones de Lorenz tienen algunas propiedades de las ecuaciones en
derivados atmosfricos. Las soluciones de las ecuaciones de Lorenz han
servido como ejemplo de comportamiento catico.]
Donde a los efectos de este ejemplo, vamos a tomar

= 10,

= 8 / 3, y

= 28,
as como x (0) = - 8, y (0) = 8, y, z (0) = 27. El M-file que contiene las
ecuaciones de Lorenz aparece a continuacin.

function xprime = lorenz1(t,x);
%LORENZ: Computes the derivatives involved in solving the
%Lorenz equations.
sig=10;
beta=8/3;
rho=28;
xprime=[-sig*x(1) + sig*x(2); rho*x(1) - x(2) - x(1)*x(3); -beta*x(3) + x(1)*x(2)];

Observe que x se almacena como x(1), y como x(2), y z como x(3). Adems,
xprime es un vector columna, como se desprende de la coma despus de la
primera aparicin de x(2). Si en la ventana de comandos, escribimos

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

16
x0=[-8 8 27];
tspan=[0,20];
[t,x]=ode45(@lorenz1,tspan,x0);

Aunque no se dan aqu, la salida de este ltimo comando consiste en una
columna de las tiempos seguido por una matriz con tres columnas, la primera
de las cuales se corresponde con los valores de x en los tiempos asociados, y
lo mismo para la segunda y tercera columna para y y z. La matriz se ha
denotado x en la declaracin llamante ode45, y en general cualquier
coordenada de la matriz se puede especificar como x(m,n), donde m denota la
fila y n denota la columna.
En lo que se estar ms interesado es en referencia a las columnas de x, las
cuales se corresponden con valores de los componentes del sistema. En este
sentido, podemos denotar todas las filas o todas las columnas por un colon (:).
Por ejemplo, x(:,1) se refiere a todas las filas de la primera columna de la matriz
x, es decir, se refiere a todos los valores de nuestro componente original x. Con
esta informacin, podemos fcilmente trazar el atractor extrao de Lorenz, que
es un grfico de z en funcin de x:

plot(x(:,1),x(:,3))


Por supuesto, tambin podemos trazar cada componente de la solucin en
funcin de t, y una forma til de hacer esto es apilar los resultados. Podemos
crear la siguiente figura con:
subplot(3,1,1)
plot(t,x(:,1))
subplot(3,1,2)
plot(t,x(:,2))
subplot(3,1,3)
plot(t,x(:,3))


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
17


Pasando parmetros

Al analizar el sistema de ecuaciones diferenciales, a menudo se quiere
experimentar con diferentes valores de los parmetros. Por ejemplo, en el
estudio de las ecuaciones de Lorenz se podra considerar el comportamiento
en funcin de los valores de , y . Por supuesto, una forma de cambiar
esto es manualmente volviendo a abrir el M-file lorenz1.m cada vez que se
quiere probar con nuevos valores, pero no slo es una forma lenta de hacerlo,
sino que es difcil de manejar para automatizar. Lo que podemos hacer en
cambio es pasar valores de los parmetros directamente a nuestro M-file a
travs de la instruccin de llamada ode45. Para ver cmo funciona esto, lo
primero es alterar lorenz1.m en lorenz2.m, el ltimo de los cuales acepta un
vector de parmetros que denotamos con p.

funtion XPRIME = lorenz2 (t, x, p);
% LORENZ: Calcula los derivados necesarios para resolver el
% ecuaciones de Lorenz.
sig = p (1), beta = p (2); rho = p (3);
XPRIME = * [-seal x (1) + * seal x (2); * rho x (1) - x (2) - x (1) * x (3)-beta * x
(3) + x (1) * x (2)];

Ahora puede enviar valores de los parmetros con ode45.
> p> = [10 08/03 28];
>> [t, x] = ode45 (@ lorenz1, tspan, x0, [], p);

Podemos enviar ahora los valores de parmetros con ode45.

p=[10 8/3 28];
[t,x]=ode45(@lorenz2,tspan,x0,[],p);

Ecuaciones de Segundo Orden

El primer paso en resolver una ED ordinaria de segundo orden (o ms) en
MATLAB es escribir la ecuacin como un sistema de primer orden. Como
ejemplo se retomar uno anterior. Tomando y
1
(x) = y(x) e y
2
(x) = y(x), tenemos
el sistema
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

18





Mtodo visto arriba: Codificado en Matlab (usando dsolve, solucin simblica):

eqn2 = 'D2y + 8*Dy + 2*y = cos(x)';
inits2 = 'y(0)=0, Dy(0)=1';
y=dsolve(eqn2,inits2,'x')

y =
exp((-4+14^(1/2))*x)*(53/1820*14^(1/2)-1/130)+exp(-(4+14^(1/2))*x)*(-
53/1820*14^(1/2)-1/130)+1/65*cos(x)+8/65*sin(x)
x=0:0.01:1;
z = eval(vectorize(y));
plot(x,z)




Mtodo sistema de EDs (usando ode45, solucin numrica)

Primero, se construye el M-file basado en:


function xprime = ee(x,y);
%
%
xprime=[y(2);-8*y(2)-2*y(1)+cos(x)];

Se ejecuta:

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
19
x0=[0 1]; % condiciones iniciales
tspan=[0,1]; % intervalo
[x,y]=ode45(@ee,tspan,x0);
plot(x,y(:,1))




Transformadas de Laplace

Una de las ms tiles transformadas en matemtica es la transformada de
Laplace. MATLAB tiene rutinas built-in para calcular la Transformada de
Laplace como su inversa. Por ejemplo, para computar la transformada de
f(t)=t
2
, simplemente tipee

syms t;
laplace(t^2)

ans =
2/s^3

Para invertir, digamos, F(s) = 1/(1+s), tipee

syms s;
ilaplace(1/(1+s))

ans =
exp(-t)

Problemas de contorno

Por diversas razones de mrito discutible mayora de los cursos de introduccin
a ecuaciones diferenciales ordinarias se centran principalmente en problemas
de valores iniciales (IVP). Otra clase de EDs que surgen a menudo en las
aplicaciones son los problemas de contorno (BVPs). Consideremos, por
ejemplo, la ecuacin diferencial

y''- 3y '+ 2y = 0 y (0) = 0 y (1) = 10,
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

20

donde nuestras condiciones y(0) = 0 e y(1) = 10 se especifican en el lmite del
intervalo de inters x [0, 1]. (Aunque nuestra solucin normalmente se
extiende ms all de este intervalo, la mayora de los escenarios comunes en
los problemas de valores en la frontera es el caso en el que slo estamos
interesados en los valores de la variable independiente entre los puntos
extremos especificados.)
El primer paso en la solucin de este tipo de ecuacin es escribirlo como un
sistema de primer orden con y
1
= y e y
2
= y', por lo cual tenemos


Grabamos este sistema en el M-file bvpexample.m.

function yprime = bvpexample(t,y)
%BVPEXAMPLE: Differential equation for boundary value
%problem example.
yprime=[y(2); -2*y(1)+3*y(2)];

Luego, escribimos las condiciones de contorno como el M-file bc.m, lo cual
registra los residuos de contorno.

function res=bc(y0,y1)
%BC: Evaluates the residue of the boundary condition
res=[y0(1);y1(1)-10];

Por residuos, nos referimos a la parte izquierda de la condicin de frontera, una
vez que ha sido puesta en 0.
En este caso, la segunda condicin de contorno es y(1) = 10, de modo que su
residuo es y(1) - 10, que se registra en el segundo componente del vector que
devuelve bc.m. Las variables y0 e y1 representan la solucin en x=0 y en x=1,
respectivamente, mientras que el 1 en el parntesis indica el primer
componente del vector. En el caso de que la segunda condicin de contorno
era y '(1)=10, reemplazara a y1(1) - 10 con y1(2) - 10.
Ahora estamos en condiciones de comenzar a resolver el problema de
contorno. En el siguiente cdigo, en primer lugar se especifica una cuadrcula
de valores de x para resolver en una estimacin inicial del vector que se dara
para un problema de valor inicial [y (0), y '(0)]. (Por supuesto, y(0) conocido,
pero y'(0) debe ser una conjetura. En trminos generales, MATLAB va a
resolver una familia de problemas de valores iniciales, buscando aquel para el
cual las condiciones de contorno se cumplen.) Resolvemos el problema del
valor lmite con el resolutor built-in de MATLAB bvp4c.

sol=bvpinit(linspace(0,1,25),[0 1]);
sol=bvp4c(@bvpexample,@bc,sol);
sol.x

ans =
Columns 1 through 9
0 0.0417 0.0833 0.1250 0.1667 0.2083 0.2500 0.2917 0.3333
Columns 10 through 18
0.3750 0.4167 0.4583 0.5000 0.5417 0.5833 0.6250 0.6667 0.7083
Columns 19 through 25

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
21
0.7500 0.7917 0.8333 0.8750 0.9167 0.9583 1.0000

sol.y

ans =
Columns 1 through 9
0 0.0950 0.2022 0.3230 0.4587 0.6108 0.7808 0.9706 1.1821
2.1410 2.4220 2.7315 3.0721 3.4467 3.8584 4.3106 4.8072 5.3521
Columns 10 through 18
1.4173 1.6787 1.9686 2.2899 2.6455 3.0386 3.4728 3.9521 4.4805
5.9497 6.6050 7.3230 8.1096 8.9710 9.9138 10.9455 12.0742 13.3084
Columns 19 through 25
5.0627 5.7037 6.4090 7.1845 8.0367 8.9726 9.9999
14.6578 16.1327 17.7443 19.5049 21.4277 23.5274 25.8196

Observamos que en este caso, MATLAB devuelve la solucin como una
estructura cuyo primer componente de la estructura sol.x simplemente contiene
slo los valores de x especificados. El segundo es sol.y, que es una matriz que
contiene como primera fila los valores de y(x) en los puntos de la grilla x
especificada, y como segunda fila los valores correspondientes de y '(x).

Mtodos Numricos

A pesar de que se pueden resolver EDOs en MATLAB sin ningn conocimiento
de los mtodos numricos que emplea, a menudo es til para comprender los
principios bsicos subyacentes. En esta seccin se utilizar el teorema de
Taylor para obtener mtodos para aproximar la solucin de una ecuacin
diferencial.

Mtodo de Euler

Consideremos la ecuacin diferencial general de primer orden

y supongamos que queremos resolver esta ecuacin en el intervalo de valores
de x [x
0
, x
n
]. Nuestro objetivo aspira a aproximar el valor de la solucin y(x) en
cada uno de los valores de x en una particin P = [x
0
, x
1
, x
2
, ..., x
n
]. Puesto que
y(x
0
) est dado, el primer valor que necesitamos estimar es y(x
1
). Por el
Teorema de Taylor, podemos escribir

donde c (x
0
, x
0
). Observando desde nuestra ecuacin que y(x
0
) = f(x
0
, y(x
0
)),
tenemos

Si nuestra particin P tiene pequeos subintervalos, entonces x
1
x
0
ser
pequeo y se puede considerar la cantidad pequea

como un trmino error. Esto es, tenemos
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

22
(6.2)
Ahora podemos calcular y(x
2
) de una manera similar usando el teorema de
Taylor para escribir

Una vez ms, tenemos desde nuestra ecuacin que y'(x
1
) = f(x
1
, y(x
1
)), y as

Si eliminamos el trmino

como un error, entonces tenemos

donde el valor y(x
1
) requerido aqu puede ser aproximado por el valor de (6.2).
Ms generalmente, para cualquier k = 1, 2, ..., n - 1 se puede aproximar y(x
k
+1)
de la relacin

donde y(x
k
) se conocern a partir del clculo anterior. Al igual que con los
mtodos numricos de la integracin, es habitual en la prctica de tomar la
particin en subintervalos de igual anchura,

(En el estudio de mtodos numricos para ecuaciones diferenciales, esta
cantidad es a menudo denotada con h) En este caso, tenemos la relacin
general



Si decimos que los valores de y
0
, y
1
, ..., y
n
denotan nuestras aproximaciones
para y en los puntos x
0
, x
1
, ..., x
n
(es decir, y
0
= y(x
0
), y
1
y(x
1
), etc), entonces
podemos aproximar y(x) sobre la particin de P calculando iterativamente

(6.3)

Ejemplo: Utilice el mtodo de Euler (6.3) con n = 10 para resolver la ecuacin
diferencial



en el intervalo [0, 1]. Llevaremos a cabo las primeras iteraciones en detalle, y a
continuacin vamos a escribir un archivo de MATLAB M-file para aplicar el

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
23
mtodo en su totalidad. En primer lugar, el valor inicial y(0) =

nos da los
valores x
0
= 0 e y
0
=0. Si nuestra particin se compone de subintervalos de igual
anchura, entonces x
1
=

x = 1/10 = 0.1, y de acuerdo con (6.3)





Ahora tenemos el punto (x
1
, y
1
) = (.1,

), y podemos utilizar esto y (6.3) para


calcular


Ahora tenemos (x
2
, y
2
) = (0.2, 3.1725), y podemos utilizar esto para calcular

Ms generalmente, podemos usar el M-file euler1.m
function [xvalues, yvalues] = euler1(f,x0,xn,y0,n)
%EULER: MATLAB function M-file that solve the
%ODE y=f, y(x0)=y0 on [x0,y0] using a partition
%with n equally spaced subintervals
dx = (xn-x0)/n;
x(1) = x0;
y(1) = y0;
for k=1:n
x(k+1)=x(k) + dx;
y(k+1)= y(k) + f(x(k),y(k))*dx;
end
xvalues = x';
yvalues = y';

Podemos implementar este archivo con el siguiente cdigo, que crea la figura
6.1.

f=inline('sin(x*y)');
[x,y]=euler1(f,0,1,pi,10);
plot(x,y)

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

24
Con x=0.01
[x,y]=euler1(f,0,1,pi,100);
plot(x,y)


Resolutores ODE Avanzados

Adems de los resolutores ODE ode23 y ode45, ambos basados en el mtodo
de Runge-Kutta, MATLAB tiene otros resolutores adicionales, que aparecen a
continuacin junto con las sugerencias para su uso que da el MATLAB-help.

Resolutores Multipaso

- ode113. Si se utilizan tolerancias estrictas de error o la resolucin de un
archivo ODE computacionalmente intensivo.

Problemas stiff (vase ms adelante)
- ode15s. Si ode45 es lento porque el problema es stiff.
- ode23s. Si se est utilizando tolerancias de error crudas para resolver
sistemas stiff y matriz de masa es constante.
- ode23t. Si el problema slo es moderadamente stiff y necesitas una solucin
sin amortiguacin numrica.
- ode23tb. Si se utilizan tolerancias de error crudas para resolver sistemas stiff.
EDs stiffrgido
Con EDs stiff nos referimos a una ED para la cual los errores numricos crecen
dramticamente en el tiempo. Por ejemplo, considere la ED ordinaria

y '= -100y + 100 t + 1, y(0) = 1.


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
25
Ya que la variable dependiente, y, en la ecuacin est multiplicada por 100,
pequeos errores en nuestra aproximacin tendern a magnificarse. En
general, debemos tomar considerablemente pasos ms pequeos en tiempo
para resolver EDs stiff, y esto puede alargar dramticamente el tiempo de
resolucin.
A menudo, las soluciones se puede calcular de manera ms eficiente usando
uno de los resolutores diseado para problemas stiff.
Ecuaciones diferenciales en derivadas parciales (PDE) en el espacio uni-
dimensional
Para las PDE de valores inicial-borde con tiempo t y una variable espacial x,
MATLAB tiene un resolutor built-in llamado pdepe.
Ecuaciones nicas

Ejemplo. Supongamos, por ejemplo, que queremos resolver la ecuacin del
calor

MATLAB specifica tal PDE parablica en la forma



Las formas standard de una ecuacin diferencial

El paso ms importante en preparacin de una ecuacin diferencial para
los resolutores de Mathcad es adquirirla en la forma Standard que
entiendan los resolutotes. El proceso es tomar la ecuacin diferencial y
liberarse de cualquier derivada de orden ms alto que aparezca, dejando
slo primeras derivadas. Su ecuacin diferencial es entonces un sistema de
ecuaciones diferenciales de primer orden.
Por ejemplo, la ecuacin diferencial:
2
x
y x ( )
d
d
2
3
x
y x ( )
d
d
+ 7 y x ( ) 4 x

contiene una segunda derivada la cual puede ser escrita como una primera
derivada:
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

26
2
x
y x ( )
d
d
2
x x
y x ( )
d
d
|

\
|
|

d
d

define dos funciones como:
y
0
x ( ) y x ( ) y
1
x ( )
x
y
0
x ( )
d
d

Ahora la ecuacin diferencial contiene dos funciones y es esencialmente un
sistema de dos ecuaciones diferenciales.
x
y
0
x ( )
d
d
y
1
x ( )
x
y
1
x ( )
d
d
4 x 7 y
0
x ( ) + 3 y
1
x ( )

El prximo paso es capturar esta informacin en una funcin vector nico
valuado D para usar con los resolutores de Ecuacin Diferencial de
Mathcad:
DY x y , ( )
y
1
4 x 7 y
0
+ 3 y
1

|

\
|
|

:=



Sistemas de ecuaciones diferenciales ordinarias

rkfixed(y, x1, x2, npoints, D) Retorna una matriz en la cual (1) la primera
columna contiene los puntos en los cuales es evaluada la solucin y (2) las
columnas remanente contiene los valores correspondientes de la solucin y
sus primeras n-1 derivadas.

Argumentos:
y debe ser o bien un vector de n valores inicales u un valor inicial
nico.


x1, x2 son puntos extremos del intervalo sobre el cual la
solucin a las ecuaciones diferenciales ser evaluada. Los valores
iniciales en y son los valores en x1.


npoints es el nmero de puntos ms all del punto inicial para el
cual la solucin es aproximada. Esto controla el nmero de filas
(1 + npoints) en la matriz retornada por rkfixed.

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
27
D es una funcin vector-valued n-element conteniendo las
primeras derivadas de las funciones desconocidas.
Notas:
rkfixed usa el mtodo Runge-Kutta method de cuarto orden para
resolver una ecuacin diferencial de primer orden.
Se puede usar rkfixed para resolver una ecuacin diferencial as
tambin como un sistema de ecuaciones diferenciales.
Uso de la funcin rkfixed
Para sistemas de ecuaciones diferenciales o por una que no es lineal en el
trmino derivada de ms alto orden, use rkfixed.
El ejemplo de abajo muestra cmo usar rkfixed para evaluar la solucin de
una ecuacin diferencial de segundo orden a puntos igualmente espaciados.
Solve y'' y' 2 y +
y 0 ( ) 1 y' 0 ( ) 3

y
1
3
|

\
|
|

:=
<- define las condiciones iniciales
<- primera derivada
D t y , ( )
y
1
y
1
2 y
0
+
|

\
|
|

:=
<- segunda derivada

Z rkfixed y 0 , 0.5 , 400 , D , ( ) :=
<- Evalua solucin en 400 puntos entre 0 y 0.5

Z
0 1 2
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0 1 3
1.2510
-3
1.004 2.999
2.510
-3
1.007 2.998
3.7510
-3
1.011 2.996
510
-3
1.015 2.995
6.2510
-3
1.019 2.994
7.510
-3
1.022 2.993
8.7510
-3
1.026 2.992
0.01 1.03 2.99
0.011 1.034 2.989
0.013 1.037 2.988
0.014 1.041 2.987
0.015 1.045 2.986
0.016 1.049 2.985
0.018 1.052 2.984
0.019 1.056 2.982
=


HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

28
Solucin usando tamaos de pasos adaptivos
Rkadapt(y, x1, x2, npoints, D)

Retorna una matriz en la cual: (1) la primera columna contiene los puntos
en los cuales es evaluada la solucin y (2) las columnas remanente contiene
los valores correspondientes de la solucin y sus primeras n-1 derivadas.

Argumentos:
y debe ser o bien un vector de n valores inicales o un escalar.
x1, x2 son puntos extremos del intervalo sobre el cual la solucin
a las ecuaciones diferenciales ser evaluada. Los valores iniciales
en y son los valores en x1.


npoints es el nmero de puntos ms all del punto inicial para el
cual la solucin es aproximada. Esto controla el nmero de filas
(1 + npoints) en la matriz retornada por rkfixed.
D es una funcin vector-valued n-element conteniendo las
primeras derivadas de las funciones desconocidas.
Notes:
A diferencia de rkfixed la cual integra en pasos de igual tamao para
alcanzar una solucin, Rkadapt examina cun rpido una solucin
est cambiando y adapta su tamao de paso acordemente. Rkadapt
usar tamaos de paso no uniformes unternamente cuando resuelve
la ecuacin diferencial, pero retornar la solucin en puntos
igualmente espaciados.
Sistemas Alisados (Smooth systems)

Bulstoer(y, x1, x2, npoints, D) Retorna una matriz en la cual: (1) la
primera columna contiene los puntos en los cuales es evaluada la solucin
y (2) las columnas remanente contiene los valores correspondientes de la
solucin y sus primeras n-1 derivadas.

Argumentos:

y debe ser o bien un vector de n valores inicales o un escalar.
x1, x2 son puntos extremos del intervalo sobre el cual la solucin
a las ecuaciones diferenciales ser evaluada. Los valores iniciales
en y son los valores en x1.
npoints es el nmero de puntos ms all del punto inicial para el
cual la solucin es aproximada. Esto controla el nmero de filas
(1 + npoints) en la matriz retornada por Bulstoer.
D es una funcin vector-valued n-element conteniendo las
primeras derivadas de las funciones desconocidas.

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
29
Notas:
Bulstoer usa el mtodo Bulirsch-Stoer el cual sera ligeramente ms
preciso que el mtodo Runge-Kutta usado por rkfixed.
Use la funcin Bulstoer en vez de rkfixed cuando sepa que la
solucin es alisada (smooth)
Ejemplo: Movimiento del Pndulo Simple
Se analizar mediante la funcin Bulstoer, tambin para evaluar una
integral para el perodo del pndulo.
Considrese un pndulo simple en movimiento en un plano sin resistencia
del aire ni friccin. Sea L la longitud de la varilla soporte, g la aceleracin
de la gravedad y el ngulo que forma el alambre y la direccin de la
gravedad. La varilla soporte es rgida y sin masa.

La ecuacin diferencial para el ngulo (t) es:
L
2
t
t ( )
d
d
2
g sin t ( )
( )
+ 0 0 ( )
0


Valores de los parmetros de entrada:
L 3 m :=
0

4
:= g 9.807
m
s
2
=

T 6 :=
Punto derecho extremo
D t X , ( )
X
1
g
L
sin X
0
( )
|

\
|
|
|

:=
N 100 :=
Nmero de pasos de tiempo

P Bulstoer

0
0
|

\
|
|

0 , T , N , D ,

(
(

:= n 0 1 , N .. :=

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

30
0 1 2 3 4 5 6
theta
derivative of theta
1.384
1.384

4
P
1

( )
n
P
2

( )
n
6 0
P
0

( )
n

El periodo del pndulo (tiempo requerido para una oscilacin completa) es
una integral elptica completa sel primer tipo:
x sin

0
2
|

\
|
|

:=

4
L
g

1
1 x
2
sin
( )
2

(
(
(

d 3.614sec =

Sistemas Stiff

Stiffb(y, x1, x2, npoints, D, J)
Stiffr(Y, x1, x2, npoints, D, J)

Cada una de estas funciones retorna una matriz en la cual: (1) la primera
columna contiene los puntos en los cuales es evaluada la solucin y (2) las
columnas remanentes contienen los valores correspondientes de la solucin
y sus primeras n-1 derivadas.


Argumentos:

y debe ser o bien un vector de n valores inicales o un escalar.
x1, x2 son puntos extremos del intervalo sobre el cual la solucin
a las ecuaciones diferenciales ser evaluada. Los valores iniciales
en y son los valores en x1.
npoints es el nmero de puntos ms all del punto inicial para el
cual la solucin es aproximada. Esto controla el nmero de filas
(1 + npoints) en la matriz retornada por by Stiffb or Stiffr.

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
31
D es una funcin vector-valued n-element conteniendo las
primeras derivadas de las funciones desconocidas.

J es una funcin que retorna la matriz n por (n+1) cuya primera
columna contiene derivadas y cuyas filas remanentes forman la
matriz Jacobiana para el sistema de ecuaciones diferenciales.
Notes:
Stiffb usa el mtodo Bulirsch-Stoer para sistemas stiff. Stiffr usa el
mtodo Rosenbrock.
Use uno de los dos resolutores de ecuacin diferencial
especficamente diseados para sistemas stiff: Stiffb y Stiffr cuando
resuelva un sistema stiff.
Stiff Differential Equations

A pesar de su xito, los mtodos de Runge-Kutta tambin tienen sus fallas.
Una clase particular de ecuaciones diferenciales problemticas son aquellas
que exhiben stiffness. No hay una definicin universalmente satisfactoria
de stiffness. En la prctica se aprender a sospechar que una ODE
(ecuacin diferencial ordinaria) es stiff cuando un resolutor ODE falla para
producir una solucin eficiente. Las sospechas sern confirmadas si
verdaderamente se obtienen mejores resultados cuando se usa un mtodo
diseado para problemas stiff, tales como las rutinas de Matlab ode23s u
ode15s.

Ejemplo de ODE stiff

Un ejemplo de modelo matemtico, ms que una aplicacin prctica es:
Y' t ( ) Y t ( ) K Y t ( ) e
t

( )
K > 1 >
Y 0 ( ) 1 +


aqu K es una constante grande, digamos 10
6
y es un nmero dado
tamao ordinario, digamos = 1. La solucin se conoce que es:

Y t ( ) e
K 1 + ( ) t
e
t
+


En esta formula el primer trmino se desvanece rpidamente a medida que
la ecuacin diferencial fuerza la solucin sobre la curva e
-t
.

Y t ( ) e
K 1 + ( ) t
:= t 10
7
10
7
10
7
+ , 0.001 .. :=

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

32
0 2
.
10
6
4
.
10
6
6
.
10
6
8
.
10
6
0.5
1
0.905
0
Y t ( )
10
5
1 10
7

t


Despus esta solucin cambia lentamente.

Y t ( ) e
K 1 + ( ) t
e
t
+ := t 0.01 0.02 , 5 .. :=


0 1 2 3 4 5
0.5
1
0.99
6.738 10
3

Y t ( )
5 0.01 t


La regin corta de cambio rpido es la capa frontera, la curva de variacin
lenta es conocida como la solucin estado estacionario. Este
comportamiento es tpico de problemas stiff.

Cuando se desea slo el ultimo punto

Si no se est interesado en ver todos los valores intermedios tomados por
una solucin, se puede ahorrar tiempo de procesamiento y reducir consumo
de memoria usando una de las funciones de abajo.
stiffb y stiffr para sistemas stiff.
rkadapt para sistemas lentamente variables.
bulstoer para sistemas alisados (smooth)

A diferencia de sus equivalentes en maysculas, no se debe especificar el
nmero de puntos en el resultado. En su lugar, debe especificar el nivel de
exactitud y permitir a estas funciones generar una solucin que tenga el
nmero de elementos requeridos.


Ejemplo:

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
33
para x < 0
Solve y''
y
y
|

\
|
|

donde y(-1)=1 e y(1)=2


para x > 0

D x y , ( )
y
1
x 0 < ( ) y
0
x 0 ( ) y
0
( ) +

(
(

:= xf 0 :=
<- punto de dictontinuidad

v1
0
1 :=
< - valor de intento para y(-1)
v2
0
1 :=
< - valor de intento para y(1)


< - y(-1)
load1 x1 v1 , ( )
1
v1
0
|

\
|
|

:=
< - valor de intento para y(-1)
< - y(1)
load2 x2 v2 , ( )
2
v2
0
|

\
|
|

:=
< - valor de intento para y(1)


score xf y , ( ) y :=
< - indica a Mathcad igualar las dos mitades de la
solucin en x=xf


S bvalfitv1 v2 , 1 , 1 , 0 , D , load1 , load2 , score , ( ) :=


S 0.092 0.678 ( ) =
< - contiene [ y(-1) y(1) ]



Uso de valores intermedios para derivar condiciones iniciales

bvalfit(v1, v2, x1, x2, xf, D, load1, load2, score) Retorna un vector
conteniendo aquellos valores iniciales dejados sin especificar en x1.


Argumentos:

v1 es un vector de intento para valores iniciales dejados sin
especificar en x1. v2 es un vector que contiene intentos para valores
iniciales dejados de especificar en x2.
x1, x2 son puntos terminales del intervalo sobre la cual la solucin a
ecuaciones diferenciales sern evaluadas.
xf es un punto entre x1 y x2 en los cuales la trayectorias de las
soluciones comienzan en x1 y aquelllas que comienzan en x2 estn
constreidas a ser igual.
D es una funcin vector-valuada de n elementos conteniendo las
primeras derivadas de las funciones desconocidads.
load1 es una function vector-valuada cuyos n elementos
corresponden a los valores de las n funciones incgnitas en x1.
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

34
Algunos de estos valores sern constantes especificadas por sus
condiciones iniciales. Si un valor es desconocido se deber usar el
valor de intento correspondiente desde v1.
load2 es anloga a load1 pero los valores tomados las n funciones
incgnitas en x2.
score es una funcin vector-valuada de n elementos usada para
especificar cmo se desea que las soluciones igualen a xf.
Usualmente se desear definir score(xf, y) := y para hacer que las
soluciones para todas las funciones incgnitas coincidan en xf.
Notas:
bvalfit resuelve un problema de valores lmites de dos puntos
disparando desde los puntos terminales y equiparando trayectorias
de la solucin y sus derivadas en el punto intermedio. Este mtodo se
convierte en especialmente til cuando la derivada tiene una
discontinuidad en alguna parte del intervalo de integracin.
sbval (v1, v2, x1, x2, D, load, score) Retorna un vector conteniendo
aquellos valores iniciales dejados sin especificar en x1.

Argumentos:

v1 es un vector de intento para valores iniciales dejados sin
especificar en x1. v2 es un vector que contiene intentos para valores
iniciales dejados de especificar en x2.
x1, x2 son puntos terminales del intervalo sobre la cual la solucin a
ecuaciones diferenciales sern evaluadas.
D es una function vector-valuada de n elementos conteniendo las
primeras derivadas de las funciones desconocidads.
load es una funcin vector-valuada cuyos n elementos corresponden
a los valores de las n funciones incgnitas en x1. Algunos de estos
valores sern constantes especificadas por sus condiciones iniciales.
Si un valor es desconocido se deber usar el valor de intento
correspondiente desde v1.
score es una function vector-valuada que tiene el mismo nmero de
que v. Cada elemento es la diferencia entre una condicin inicial en
x2, como originalmente se especific, y el estimado correspondiente
desde la solucin. El vector store mide cun ajustadamente una
solucin propuesta se adapta a las condiciones iniciales en x2. un
valor de 0 para cualquier elemento indica una adaptacin perfecta.
Notas:
sbval resuelve un problema de valores lmites de dos puntos
disparando desde los puntos terminales y equiparando trayectorias
de la solucin y sus derivadas en el punto intermedio.

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
35
sbval computa los valores iniciales que la solucin debe tener para
ajustar al valor inicial que se especific. Se deben entonces tomar los
valores iniciales retornados por sbval y resolver el problema de valor
inicial resultante.
Cuando se conozca la solucin en x1 y en x2, y se tengan n valores
conocidos, se deber usar sbval para evaluar los valores iniciales
perdidos en x1. Una vez que se tienen estos valores iniciales
perdidods, se tendr un problema con valores iniciales en vez de un
problema de valores lmites de dos puntos.
Ecuacin de Poisson

relax(a, b, c, d, e, f, u, rjac) Retorna una matriz cuadrada en la cual: (1)
una locacin de elemento en la matriz corresponde a su locacin dentro de
la regin cuadrada, y (2) su valor Aproxima el valor de la solucin en este
punto.

Argumentos:

a, b, c, d, e son matrices cuadradas todas del mismo tamao
conteniendo los coeficientes de la ecuacin diferencial.


f es una matriz cuadrada conteniendo el trmino fuente en cada
punto dentro del cuadrado.

u es una matriz cuadrada conteniendo valores lmites junto con los
flancos de la regin y los intentos iniciales para la solucin dentro de
la regin.

rjac es un radio spectral de la iteracin Jacobi. Esto controla la
convergencia del algoritmo de relajacin. Puede oscilar desde 0 a 1
pero su valor ptimo depende de los detalles del problema.
Notas:
Esta function usa el mtodo de relajacin para converger a la
solucin.
Se deber usa la funcin relax si se conoce el valor tomado por la
function desconocida u(x, y) sobre el total de los cuatro lados de una
regin cuadrada.
Si la condicin de contorno es cero sobre el total de los cuatro lados
del cuadrado dominio de integracin, use en su lugar la funcin
multigrid.

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

36
Uso de la funcin relax

R 32 := M
3
R
4

R
4
,
1 :=
M
R R ,
2 := M
R
8
R
2
,
2 :=
i 0 32 .. := k 0 32 .. :=
a
i k ,
1 := b a := d a := c a := e 4 a :=
v
i k ,
0 := f M :=
S1 relax a b , c , d , e , f , v , 0.95 , ( ) :=


S1

Ecuacin de Poisson con condiciones de contorno cero

multigrid(M, ncycle) Retorna una matriz cuadrada en la cual: (1) una
locacin de elemento en la matriz corresponde a su locacin dentro de la
regin cuadrada, y (2) su valor aproxima el valor de la solucin en este
punto.


Argumentos:

M es una matriz cuadrada de 1+2^n filas cuyos elementos
corresponden al trmino fuente en el correspondiente punto en el
dominio cuadrado.

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
37
ncycle es el nmero de ciclos en cada nivel de la iteracin multigrid.
Un valor de 2 dar generalmente una Buena aproximacin de la
solucin.
Notas:
Si u(x, y) es cero sobre los cuatro lados del cuadrado, use la funcin
multigrid. Esta function frecuentemente resolver el problema ms
rpido que relax.
Uso de multigrid:
R 32 := M
R R ,
0 := M
3
R
4

R
4
,
1 :=
M
R
8
R
2
,
2 :=
M
R
4
3 R
4
,
2 :=
S multigridM 2 , ( ) :=


S











HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

38
$$$$$$$$$$$$$$$$$$$$$$$$
MATLAB contiene dos funciones para calcular soluciones numrica de
ecuaciones diferenciales ordinarias; "ode23" y "ode45".
A continuacin se describen los argumentos de los comandos MATLAB ODE.
[x,y] = ode23('funcin',a,b,inicial)
Esta instruccin regresa un conjunto de coordenadas "x" y "y" que representan
a la funcin y=f(x), los valores se calculan a travs de mtodos Runge-Kuta de
segundo y tercer orden.
El nombre "funcin", define una funcin que representa a una ecuacin
diferencial ordinaria, ODE23 proporciona los valores de la ecuacin diferencial
y'=g(x,y).
Los valores "a" y "b" especifican los extremos del intervalo en el cual se desea
evaluar a la funcin y=f(x).
El valor inicial y = f(a) especifica el valor de la funcin en el extremo izquierdo
del intervalo [a,b].
[x,y] = ode45('funcin',a,b,inicial)
Esta instruccin regresa un conjunto de coordenadas "x" y "y" que representan
a la funcin y=f(x), los valores se calculan a travs de mtodos Runge-Kuta de
cuarto y quinto orden.
El nombre "funcin", define una funcin que representa a una ecuacin
diferencial ordinaria, ODE45 proporciona los valores de la ecuacin diferencial
y'=g(x,y).
Los valores "a" y "b" especifican los extremos del intervalo en el cual se desea
evaluar a la funcin y=f(x).
El valor inicial y = f(a) especifica el valor de la funcin en el extremo izquierdo
del intervalo [a,b].
Las instrucciones "ODE23" y "ODE45" contienen dos parmetros adicionales.
Se usa un quinto parmetro para especificar una tolerancia relacionada con el
tamao del paso; las tolerancias por omisin son 0.001 para ODE23 y
0.000001 para ODE45.
Existe un sexto parmetro que sirve para solicitar que la funcin exhiba
resultados intermedios, es decir, que realice rastreo; el valor por omisin "0"
indica que no se desean rastrear los resultados.
Como ilustracin de la funcin ODE de MATLAB, se presentan los pasos para
calcular soluciones numricas de ecuaciones diferenciales, las siguientes
instrucciones MATLAB definen las funciones requeridas para evaluar la
ecuacin diferencial deseada.
Se graban las siguientes instrucciones con su editor ASCII favorito, en lo
particular yo uso el "editeur", si Ud. desea usarlo tambin, esta disponible en la
siguiente URL;
http://proton.ucting.udg.mx/shareware/editeur/editeur.zip

Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
39
function dy = g1(x,y)
%
% g1
% esta funcin evala una ODE
% ecuacin diferencial de primer grado
%
dy = 3*x.^2;
El siguiente paso consiste en grabar este archivo como "g1.m", sobre algn
subdirectorio de trabajo valido para el MATLAB, las siguientes instrucciones
resuelven g(x,y) dentro del intervalo [2,4] con condicin inicial 0.5 para y=f(2).
% Determinar la Solucin de la EDO
%
% dy = 3*x.^2;
%
[t,y] = ode23('g1',[2,4],0.5);
plot(t,y,'o'),...
title('Solucin de la Ecuacin dy = 3*x.^2'),...
xlabel('Tiempo'),ylabel('y = f(t)'),grid
Sobre el subdirectorio de trabajo valido se graba este archivo como "mat1.m" y
se escribe mat1, generndose la siguiente solucin grfica.










HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

40
























Mathcad.pdf

Las dos funciones ms fciles de usar, Odesolve y Pdesolve, son usadas
dentro de Solve Blocks. Hay muchas otras funciones que ayudan a relover
sistemas de ecuaciones diferenciales, incluyendo Adams, AdamsBDF, BDF,
Bulstoes, bvalfit, Jacob, multigrid, numol, Radau, relax, Rkadapt, rkfixed, sbval,
statespace, Stiffb y Stiffr.

La funcin Odesolve es usada en un Solve Block para resolver una nica
ecuacin diferencial (ED) o un sistema de EDs. Retorna la solucin como una
funcin de la variable independiente. Hace esto salvando soluciones en un
nmero especfico de puntos (npoints) igualmente espaciados en el intervalo
de la solucin, y luego interpolando entre estos puntos usando la funcin
lspline. El Solve Block pone el valor inicial o constreimientos de lmites. La
ODE debe ser lineal en su trmino derivado ms alto, y el nmero de
condiciones iniciales o en bordes debe ser igual al orden (u rdenes) de la(s)
ODE(s). La funcin tiene la forma Odesolve([vector],x,b,[npoints]). Los
argumentos son como sigue:

Vector es usado slo para sistemas de ODEs y es un vector de nombres
de funcin (con ningn nombre de variable incluido) como ellas
aparecen dentro del Solve Block.

x es el nombre de la variable de integracin.

b es el punto final del intervalo de la solucin. (El punto inicial del
intervalo de la solucin es especificado por las condiciones iniciales).


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
41
npoints es opcional y es el nmero entero de puntos equiespaciados
usados para interpolar la funcin solucin. El valor por default es de
1000. Si npoints es incrementado, luego la solucin interpolada es ms
exacta. El valor default es usualmente adecuado, pero si se desea
resolver sobre un gran intervalo, se debe poner a npoints a un valor
mayor a 1000. El incremento de npoints lleva ala incremento en el
tiempo de clculo.

-----














dsolve - Symbolic solution of ordinary differential equations

Syntax

dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
dsolve(...,'IgnoreAnalyticConstraints',value)

Descripcin

dsolve('eq1','eq2',...,'cond1','cond2',...,'v') resuelve simblicamente las EDs
ordinarias eq1, eq2,... usando v como la variable independiente. Aqu
cond1,cond2,... especifica condiciones iniciales o en bordes o ambas. Tambin
se usa la siguiente sintaxis: dsolve('eq1, eq2',...,'cond1,cond2',...,'v'). La
variable independiente por default es t.

The letter D denotes differentiation with respect to the independent variable.
The primary default is d/dx. The letter D followed by a digit denotes repeated
differentiation. For example, D2 is d2/dx2. Any character immediately following
a differentiation operator is a dependent variable. For example, D3y denotes the
third derivative of y(x) or y(t).

You can specify initial and boundary conditions by equations like y(a) = b or
Dy(a) = b, where y is a dependent variable and a and b are constants. If the
number of the specified initial conditions is less than the number of dependent
variables, the resulting solutions contain the arbitrary constants C1, C2,....

Ejemplo:
>> dsolve('D2y=-3*y','y(0)=1')

HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

42
ans =

C1*sin(3^(1/2)*t)+cos(3^(1/2)*t)

You can input each equation or a condition as a separate symbolic equation.
The dsolve command accepts up to 12 input arguments.

dsolve puede producir los siguientes tres tipos de salida:

* Para una ecuacin y una salida, dsolve retorna la solucin resultante
con soluciones mltiples para una ecuacin no-lineal en un vector simblico.

* Para varias ecuaciones y un nmero igual de salidas, dsolve ordena los
resultados alfabticamente y los asigna a las salidas.

* Para varias ecuaciones y una nica salida, dsolve retorna una estructura
conteniendo las soluciones.

Si dsolve no puede encontrar una solucin closed-form (explcita), intenta
buscar una solucin implcita. Cuando dsolve retorna una solucin implcita,
indica una advertencia. Si dsolve no puede encontrar una solucin ni implcita
ni explcita, da una advertencia y retorna el sym vaco. En tal caso, se puede
encontrar una solucin numrica, usando las funciones MATLAB ode23 u
ode45.
En algunos casos involucrando ecuaciones no-lineales, la salida es una
ecuacin diferencial equivalente de ms bajo orden o una integral.

dsolve(...,'IgnoreAnalyticConstraints',value) acepta los siguientes valores:

* value = 'all' aplica simplificaciones puramente algebraicas a las
expresiones sobre ambos lados de las ecuaciones. Estas simplificaciones
pueden no ser generalmente vlidas. El valor default de esta opcin es all.
* value = 'none' resuleve EDs ordinarias sin suposiciones adicionales. Los
resultados obtenidos con esta opcin son correctos para todos los valores de
los argumentos.

Nota: Por default, el solver no garantiza la correccin y completitud de los
resultados. Si no se pone la opcin IgnoreAnalyticConstraints a none,siempre
verifique los resultados retornados por el comando dsolve.


Examples

Solving Ordinary Differential Equations Symbolically

dsolve('Dx = -a*x')

ans =
C2/exp(a*t)

Specifying the Dependent Variable


Facultad de Ingeniera Universidad de Mendoza Dr. Ing. Jess Rubn Azor Montoya
43
The following differential equation presents f as a dependent variable:

dsolve('Df = f + sin(t)')

ans =
C4*exp(t) - sin(t)/2 - cos(t)/2

Specifying the Independent Variable

dsolve('(Dy)^2 + y^2 = 1','s')

ans =
1
-1
cosh(C7 + s*i)
cosh(C11 - s*i)

Setting Initial and Boundary Conditions

dsolve('Dy = a*y', 'y(0) = b')

ans =
b*exp(a*t)

dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')

ans =
(1/exp(a*t*i))/2 + exp(a*t*i)/2

Solving a System of Differential Equations

z = dsolve('Dx = y', 'Dy = -x')

z =
x: [1x1 sym]
y: [1x1 sym]

Enter z.x and z.y to see the results:

z.x

ans =
C20*cos(t) + C19*sin(t)

z.y

ans =
C19*cos(t) - C20*sin(t)

Using the IgnoreAnalyticConstraints Option

By default, the solver applies the set of purely algebraic simplifications that are
not correct in general, but that can result in simple and practical solutions:
HERRAMIENTAS COMPUTACIONALES EN CIENCIAS EXACTAS

44

y = dsolve('Dy=1+y^2','y(0)=1')

y =
tan(pi/4 + t)

To obtain complete and generally correct solutions, set the value of the option
IgnoreAnalyticConstraints to none:

y = dsolve('Dy=1+y^2','y(0)=1',...
'IgnoreAnalyticConstraints','none')

y =
piecewise([C29 in Z_, tan(pi/4 + t + pi*C29)])

The algebraic simplifications also allow you to obtain solutions for the equations
that the solver cannot compute when it uses strict mathematical rules:

dsolve('Dv=19.6*v-0.00196*v^2','v(0)=1')

ans =
10000/(exp(log(9999) - (98*t)/5) + 1)

versus

dsolve('Dv=19.6*v-0.00196*v^2','v(0)=1',...
'IgnoreAnalyticConstraints','none')

Warning: Possibly spurious solutions [solvelib::checkSolutions]
ans =
piecewise([C38 in Z_, 1/(exp(log(9999) - (98*t)/5 +...
2*pi*C38*i)/10000 + 1/10000)])

Diagnostics

If dsolve cannot find an analytic solution for an equation, it prints the warning:

Warning: Explicit solution could not be found.

and returns an empty sym object.
See Also

You might also like