Ecuaciones Diferenciales
Ecuaciones Diferenciales
Ecuaciones Diferenciales
a) ECUACIONES SEPARABLES
Dada la ecuacin diferencial
dx
f (t , x )
dt
Donde f(t,x) se puede expresar como un producto de funciones, una que dependa de t y
otra solo de x.
dx t 5
Ejemplo 1: Resolver 2
dt x
Solucin
Separando variables e integrando
x dx (t 5)dt
2
x3 t 2
La solucin general es 5t c ; c es una constante arbitraria.
3 2
y ' f ( x, y )
(1)
y( x0 ) y 0
La ecuacin (1) tiene solucin y = f(x), cuyo grafico pasa por (x0,y0)
y
Figura 1: El y = f(x)
objetivo es
calcular y(x*) y0
x
x0 x*
r4 t
ln s 1 ]3x ]0
4
De donde tenemos
x 1 t4
ln
2 4
O tambin
t4
x 2e 1 4
>> y=dsolve('D2y=-y+cos(2*x)','y(0)=1','Dy(0)=0','x')
y = 4/3*cos(x)-1/3*cos(2*x)
c) CAMPO DE DIRECCIONES
Dada la EDO y = f(x,y) , si y = y(x) es solucin y (x0,y0) es un punto de la grafica
de y(x), entonces la pendiente de y = y(x) en (x0,y0) es y(x0) que es igual f(x0,y0).
Esto significa que, para conocer la pendiente de la solucin que pasa por (x0,y0) no
hace falta conocer dicha solucin, basta con calcular f(x0,y0).
El problema de valor inicial (1) constituye un campo de direcciones y el programa
Matlab, provee las instrucciones meshgrid y quiver que permiten generar el grafico del
campo de direcciones. Los vectores a considerar para obtener el campo de direcciones
sern (1, y) = (1, f(x,y)).
2.5
1.5
0.5
Problema de Modelacin
Modelo
Mundo real Matemtico
Prediccin Anlisis
Interpretacin
Resultado Solucin
PRUEBA DEL MODELO: Antes de verificar un modelo se deben tener en cuenta las
siguientes cuestiones.
Son razonables las hiptesis?
Son correctas las dimensiones fsicas de las variables?
Es el modelo, internamente consistente, en el sentido de que las ecuaciones no se
contradigan entre s?
Las ecuaciones pertinentes poseen solucin?
Qu tan difcil resulta obtener soluciones?
Proporcionan las soluciones una respuesta del problema estudiado?
MODELO BASICO
X(t) denota el tamao de la poblacin o la cantidad de una sustancia en el
compartimento en el instante t. Entonces la tasa se cambi X(t) puede calcularse como
el caudal(tasa) de entrada menos el de salida del compartimento.
Modelo Compartimental
k P(t) P(t)
dP (t )
kP (t ); P (0) P0
dt
b. P(t) es una poblacin humana en el instante t, la tasa de defuncin en este caso no es
nula. Pero podemos suponer que las personas solo mueren por causas naturales y por lo
tanto y por lo tanto se espera que la tasa de defuncin sea proporcional a la poblacin
P(t)
SOLUCION ANALITICA
Dado el problema de valor inicial
dP (t )
kP (t ); P(0) P0
dt
Separando variables tenemos la solucin P(t) = Cekt , C constante
Usando la condicin inicial P(0) = P0
P(t) = P0 ekt
La funcin P(t) se llama solucin(particular) del problema de valor inicial
El conjunto solucin P(t) = Cekt se llama SOLUCION GENERAL.
Ejemplo 1: En 1970, la poblacin de USA era de 3.93 millones, y en 1890 era de 62.95
millones.
Usar la ley de Malthus para estimar la poblacin de USA en funcin del tiempo.
Solucin
En, t = 0; p(0) = p0 = 3.93
Luego tenemos en (2).
p (t ) 3.93e kt (3)
Para encontrar k ajustamos el modelo a un dato especfico
Para t = 100 aos; p (100) 62.95
Luego en (3):
ln(62.95) ln(3.93)
p(100) 62.95 3.93e100 k k 0.027737
100
Al sustituir en la ecuacin (3)
p (t ) 3.93e 0.02773t
Es la poblacin en cualquier instante t.
ANALISIS CUALITATIVO
P
Sea el lado derecho f ( P ) k (1 )P
N
Graficando f tenemos que corta al eje P en P = 0 y P = N
En cualquiera de los casos tenemos, esto indica que la poblacin permanece constante si
P = 0, P = N como se observa en los grficos
dP k
En (2) tenemos P ( P N ), P (0) P0
dt N
k
Haciendo A , entonces
N
dP
AP ( P N ), P (0) P0
dt
Integrando por variables separables
P dr t
P0 r (r N )
0
Ad
De donde resulta
p0 N
P (t ) , o tambin
P0 ( N P0 )e ANt
p0 N
P (t )
P0 ( N P0 )e kt
Es la poblacin en cualquier instante t
EXISTENCIA
Tendr solucin todo el PVI que se pueda expresar en la forma (1)?
La respuesta es no, pero si podemos esperar que la solucin exista en una vecindad de t
= t0
Ejemplo 1:
Considere el PVI
x' 1 x 2
x ( 0) 0
La curva solucin inicia en t = 0, con pendiente 1(x(0) = 1), Dado que la pendiente es
positiva x(t) es creciente en una vecindad de t = 0 y x2 + 1 tambin es creciente
Se puede esperar que para algn t finita no exista solucin
Es decir que x (t) = +
Esto ocurre en t = /2, dado que la solucin es x (t) = tan(t)
Tiene solucin en -1 t 1
Prueba
Tenemos f (t , x ) (t senx ) 2 y (t 0 , x 0 ) (0,3) en el rectngulo R
R {(t , x ) / t ; x 3 } (2)
La longitud de f est acotada por
f (t , x) ( 1) 2 M
Debe satisfacer min{ , } 1 , para ello tomamos = 1, luego M = 4 ; Si 4 el
M
teorema de existencia asegura que existe una solucin al PVI en el intervalo
t min{ , } 1
M
UNICIDAD
Siendo an f continua, puede que el PVI no tenga solucin nica.
Ejemplo 3:
x' x 2 / 3
x ( 0) 0
1 3
X(t) = 0 es una solucin , otra solucin es x(t ) t
27
Para demostrar que el PVI (1) tiene una solucin nica en una vecindad t = t0 es
necesario suponer algo ms acerca de f.
f
Teorema 2: si f y son continuas en R(rectngulo) definido por (2) entonces el PVI
x
(1) tiene solucin nica en el intervalo que incluye a los t que satisfacen
t t 0 min{ , }
M
El siguiente teorema nos permite inferir la existencia y unicidad de la solucin sobre el
intervalo [a,b] dado.
dy
METODOS DE SOLUCION DEL PVI: f (t , y ); y (t 0 ) y 0
dt
t
yn 1 (t ) y 0 f ( s, y n ( s ))ds
t0
1. EL METODO DE TAYLOR
Sea el PVI
dy
f ( x, y )
dx (5)
y( x0 ) y0
La serie de Taylor
h2 h n (n) h ( n 1) ( n 1)
y i 1 y i hy 'i y ' ' i ...... y i y ( z ), xi z xi 1
2! n! ( n 1)!
Se puede usar para obtener puntos de la solucin (5), a partir de la condicin inicial y
estimar el error de truncamiento. Debe elegirse la distancia h entre los puntos.
La ventaja de este enfoque es que se puede mejorar la precisin incluyendo ms
trminos del desarrollo. Sin embargo, al usar las derivadas de y(x) se obtienen formulas
aplicables nicamente para la ecuacin especificada.
IMPLEMENTACION
El ejemplo anterior, se implementa con la funcin taylor para h = 0.1
function [x,y]= taylor(x,y,h)
y=y+h*(y-x^2+x+1)+h^2/2*(y-x^2-x+2);
x=x+h;
>> scritaylor
>> plot(u,v,'o'); % grafica los puntos (x,y) calculados
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') % obtencin de la solucin analtica
g=
x+x^2+exp(x)
>> hold on;grid on
>> ezplot(g,[0,2])
x+x 2+exp(x)
14
12
10
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
Funcin tay
function y1=tay(x,y)
y1=cos(x)-sin(y)+x^2;
3.000000000000000
3.141523798815666
3.287216794698704
3.438764055326533
3.597569817751085
3.764637981583152
3.940425688412236
4.124693336379560
4.316391269699142
4.513637715380874
4.713841791853081
Por lo que concuerda con el valor y (0) = 4.713841791853
2. METODO DE EULER
x' f (t, x)
(1)
x(t 0 ) x0
Tenemos:
El algoritmo de Euler
xi 1 xi hf (t i , xi )
t i | t i h ; i 0,1,2,...
h2
E x' ' ( z ); t i z t i 1 (error de truncamiento en cada paso)
2
k1 hf (t i , xi )
k 2 hf (t i h / 2, x i k1 / 2)
k 3 hf (t i h / 2, x i k 2 / 2)
k 4 hf (t i h, x i k 3 )
1 (9)
x i 1 x i ( k1 2k 2 2 k 3 k 4 )
6
t i 1 t i h, i 0,1,2,3,.....
h 5 (v)
E x ( z ) O (h 5 ), t i z t i 1 (error de truncamiento en cada paso)
5!
IMPLEMENTACION
Para obtener los valores mostrados en la tabla, implementamos funciones en MATLAB.
1. Mtodo de Euler
La funcin euler calcula los valores aproximados, ingresando la funcin en lnea
function [x,y]= euler(f,x,y,h)
y=y+h*f(x,y);
x=x+h;
En la ventana de comandos
>> f=inline(funcion);x = 0; y = 1 h = 0.1;
>> [x,y]=euler(f,x,y,h)
Para obtener ms puntos usar el script euleradel que utiliza la funcin euler,
asignando un valor a m.
En la ventana de comandos:
>> euleradel
>> plot(u,v,'o'),grid on,hold on , % grafica los puntos (x,y) encontrados
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') % obtiene la solucin analtica
g=
x+x^2+exp(x)
>> hold on
>> ezplot(g,[0,2]) % grafica la solucin analtica en una misma pantalla
x+x 2+exp(x)
14
12
10
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
Figura 1: Solucin analtica (lnea continua) y Euler (puntos), para h = 0.1, m = 20.
Se observa la acumulacin del error de truncamiento
2. Mtodo de HEUN
La funcin heun ,calcula los valores aproximados y son actualizados, la funcin
f(x,y) ingresa en lnea
En ventana de comandos
>> progheun
>> plot(u,v,'r*'),grid on,hold on
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)
>> ezplot(g,[0,2])
Graficando
x+x 2+exp(x)
14
12
10
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
3. Mtodo de RK4
La funcin rk4 encuentra los valores aproximados y la funcin ingresa en lnea
En la ventana de comandos
>> f=inline(funcion);x = 0; y = 1 h = 0.1;
>> [x,y]=rk4(f,x,y,h)
Para obtener ms puntos y su grafica se usa el script progrk4 que usa la funcin
rk4
% Scrip metodo de runge kutta de cuarto orden,
%para la ecuacion diferencial
% y'-y-x+x^2-1=0 ; y(0) = 1, h = 0.1, con f= y-x^2+x+1
f=inline('y-x^2+x+1');
x=0;
y=1;
m=20;
h=0.1;
for i=1:m
[x,y]=rk4(f,x,y,h);
u(i)=x; % la solucin es almacenada en
v(i)=y; % los vectores u, v
end
En ventana de Comandos
>> progrk4
>> plot(u,v,'go'),grid on,hold on
>> plot(u,v,'ro'),grid on,hold on
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)
>> ezplot(g,[0,2])
Graficando
x+x 2+exp(x)
14
12
10
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
OBSERVACION:
Dado el PVI
y ' f ( x, y )
y( x0 ) y0
Una modificacin de los programas, anteriores es considerar a la funcin f(x,y) como
pendiente, que debe ser guardado como pendiente.m , lo de m es la extensin con
que MATLAB guarda sus archivos.
Ejemplo:
Dada la ecuacin diferencial:
y ' 2 x 3 12 x 2 20 x 8.5 ; y (0) 1 , x [0,4] , con tamao de paso h = 0.5
a) haga una rutina para el mtodo de Euler
b) haga una rutina para el mtodo de Heun
c) haga una rutina para el mtodo de Runge Kutta de cuarto orden
d) compare las soluciones mediante una grafica
Implementando las rutinas en MATLAB
1. Mtodo de Euler
function y = euler1(x0,y0,xf,h)
x = x0:h:xf; % arreglo con los valores de x
y = zeros(1,length(x)); % arreglo que va a contener los valores de y
y(1) = y0; % se asigna la condicin inicial en la posicin 1
for i = 2:length(x)
y(i)=y(i-1) + pendiente(x(i-1),y(i-1))*h;
end
plot(x,y,'r-*')
En la ventana de comandos
>> x0=0;
>> y0=1;
>> xf=4;
>> h=0.5;
>> y1=euler1(x0,y0,xf,0.5)
>> hold on
>> y2=euler1(x0,y0,xf,0.1);
>> x=0:0.01:4;
>> y3=-0.5*x.^4+4*x.^3-10*x.^2+8.5*x+1;
>> hold on
>> plot(x,y3);
>> grid
>> legend('num:h=0.5','num:h=0.1','verdadera');
1
0 0.5 1 1.5 2 2.5 3 3.5 4
Figura 4: muestra los resultados por el mtodo de Euler para h = 0.5, 0.1;
conjuntamente con la solucin general.
2. Mtodo de Heun
function y = heun1(x0,y0,xf,h,e)
x = x0:h:xf;
y = zeros(1,length(x));
y(1) = y0;
for i = 2:length(x)
er = 100;
y0 = y(i-1) + pendiente(x(i-1),y(i-1))*h;
while er > e
y(i) = y(i-1) + (pendiente(x(i-1),y(i-1)) + pendiente(x(i),y0))*h/2;
er = abs((y(i) - y0)/y(i))*100
y0 = y(i);
end
end
plot(x,y,'+-')
En la ventana de comandos
>> x0=0;
>> y0=1;
>> xf=4;
>> h=0.5;
>>e=0.5;
>> y1=euler1(x0,y0,xf,0.5);
>> hold on
>> y2=heun1(x0,y0,xf,0.5,e);
>> x=0:0.01:4;
>> y3=-0.5*x.^4+4*x.^3-10*x.^2+8.5*x+1;
>> hold on
>> plot(x,y3);
>> legend('eulr1:h=0.5','heun1:h=0.5','verdadera');
>> grid
Resultados obtenidos
8
eulr:h=0.5
heun:h=0.5
7
verdadera
1
0 0.5 1 1.5 2 2.5 3 3.5 4
Figura 5: Se aprecia que el mtodo de Heun nos da mejores resultados que el de Euler,
para h = 0.5.
3. Mtodo de RK4
function y = rk41(x0,y0,xf,h)
x=x0:h:xf;
y = zeros(1,length(x));
y(1)=y0;
for j = 2:length(x)
k1 = pendiente(x(j-1),y(j-1));
k2 = pendiente(x(j-1)+h/2,y(j-1)+h*k1/2);
k3 = pendiente(x(j-1)+h/2,y(j-1)+h*k2/2);
k4 = pendiente(x(j),y(j-1)+k3*h);
y(j) = y(j-1) + (k1 + 2*k2 + 2*k3 + k4)*h/6;
end
plot(x,y,'o-')
En la ventana de comandos
>> hold on
>> y4=rk41(x0,y0,xf,h);
>> legend('eulr:h=0.5','heun:h=0.5','rk41:h=0.5','verdadera');
>> title('grafico:euler1,heun1,rk41,para h=0.5 y exacta')
Resultados obtenidos
grafico:euler,heun,RK4,para h=0.5 y exacta
8
eulr:h=0.5
heun:h=0.5
7
RK4:h=0.5
verdadera
6
1
0 0.5 1 1.5 2 2.5 3 3.5 4
Figura 6: Resultados obtenidos por Euler, Heun y Runge Kutta de 4to orden, se observa
que el mtodo de Runge Kuta es el que se aproxima mas a la solucin general para un
tamao de paso h = 0.5
Ejercicio
Dado el problema de valor inicial
y ' e 2 t 2 y ; y (0) 1 / 10
Solucin
a) Campo de direcciones: e 2t 2 y k (familia de curvas)
f=inline('exp(-2.*t)-2.*y','t','y');
paso=0.5;
iz=-6;der=6;
[t,y]=meshgrid(iz:paso:der,iz:paso:der);
[n,m]=size(t);
dt=ones(n,m);
z=f(t,y);
dy=z;
quiver(t,y,dt,dy)
8
-2
-4
-6
-8 -6 -4 -2 0 2 4 6 8
b) Solucin analtica
>> hold on
>> y=dsolve('Dy=exp(-2*t)-2*y','y(0)=1/10','t')
y=
exp(-2*t)/10 + t*exp(-2*t)
Grafica de la solucin
>> ezplot('exp(-2*t)./10+t.*exp(-2*t)',[-5.5,5.5])
>> plot(0,1/10,'*r')
4
x 10 exp(-2 t)/10+t exp(-2 t)
-0.5
-1
-1.5
-2
-2.5
-3
-5 -4 -3 -2 -1 0 1 2 3 4 5
t
0.2
0.15
0.1
0.05
>> x0=0;xf=2;y0=0.1;h=0.1;
>> y=euler1(x0,y0,xf,h),grid on
>> g=dsolve('Dy=exp(-2*x)-2*y','y(0)=0.1','x')
g = exp(-2*x)/10 + x*exp(-2*x)
>> hold on
>> ezplot(g,[0,2])
>> legend('euler:h=0.1','exacta')
exp(-2 x)/10 + x exp(-2 x)
euler:h=0.1
exacta
0.2
0.15
0.1
0.05
y
Pendiente casi
1 constante
Cambio brusco de
pendiente
0 x
1 2 3 4
Figura 10: funcin con cambios sbitos de pendiente
Un mtodo que implementa el cambio adaptativo del tamao del paso es el mtodo
Runge-Kutta Fehlberg, el cual realiza dos predicciones con mtodos quinto y cuarto
orden y de acuerdo a la diferencia entre las predicciones actualiza el paso. Aunque
alguien podra pensar que se esta duplicando el trabajo cuando se realizan dos
predicciones para el mismo punto, el mtodo RK Fehlberg utiliza las constantes ki
halladas en la prediccin de quinto orden para realizar la prediccin de cuarto orden,
reduciendo considerablemente los clculos necesarios. El mtodo RK de quinto orden
utilizado es el siguiente:
Donde
y i( qu int o ) y i( cuarto ) (4)
Ejemplo
Dada la ecuacin diferencial
dy 2 2
0.6 y 10e ( x 2 ) /[ 2 ( 0.075) ]
dx
Con y(0) = 0.5 , para h = 0.5 y dd = 0.00005.
Implementacin
La solucin de la ecuacin diferencial, lo hacemos con el programa RKadapt.m ,
creando un archivo pend.m , que ser llamado por el programa.
function y = RKadapt(x0,y0,xf,hi,dd)
% programa para el mtodo de Runge-Kutta Fehlberg
% realiza predicciones con mtodos de cuarto y quinto orden
% ENTRADAS:
% x0:valor incial de x
% y0: valor inicial de y
% xf: valor final de x
% hi:control tamao de paso
% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
x(1) = x0;
y(1) = y0;
i = 1;
while x(i) < xf
k(1) = pend(x(i),y(i));
k(2) = pend(x(i)+hi/5,y(i)+k(1)*hi/5);
k(3) = pend(x(i)+3*hi/10,y(i)+3*k(1)*hi/40 + 9/40*k(2)*hi);
k(4) = pend(x(i)+3*hi/5,y(i) + 3*k(1)*hi/10 - 9/10*k(2)*hi + 6/5*k(3)*hi);
k(5) = pend(x(i)+hi,y(i) - 11*k(1)*hi/54 + 5/2*k(2)*hi - 70/27*k(3)*hi+...
35/27*k(4)*hi);
k(6) = pend(x(i)+7/8*hi,y(i) + 1631*k(1)*hi/55296 + 175/512*k(2)*hi+...
575/13824*k(3)*hi+ 44275/110592*k(4)*hi + 253/4096*k(5)*hi);
y4 = y(i) + hi*k*[37/378;0;250/621;125/594;0;512/1771];
y5 = y(i) + hi*k*[2825/27648;0;18575/48348;13525/55296;277/14336;1/4];
err = abs(y4-y5);
if err > dd
hi = hi*(dd/err)^0.25;
else
y(i+1)=y5;
hi = hi*(dd/err)^0.2;
x(i+1)=x(i)+hi;
i = i + 1;
end
end
plot(x,y)
grid on
xlabel('x')
ylabel('y')
Archivo pend.m
function f=pend(x,y)
f= -0.6*y+10*exp(-(x-2)^2/(2*(0.075)^2));
En la ventana de comandos
>> x0=0;
>> y0=0.5;
>> xf=4;
>> hi=0.5;
>> dd=0.00005;
>> y1=RKadapt(x0,y0,xf,hi,dd)
1.6
1.4
1.2
1
y
0.8
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
x
Los mtodos numricos para EDO de primer orden se pueden extender a sistemas de
ecuaciones diferenciales ordinarias (SEDO) con condiciones iniciales.
Sea el sistema de ecuaciones diferenciales
F (t , x, y, x ' ) 0; x(t 0 ) x 0
G (t , x, y, y ' ) 0; y (t 0 ) y 0
En la notacin adecuada para usar mtodos de aproximacin
dx
f (t , x, y ); x(t 0 ) x 0
dt
(1)
dy
g (t , x, y ); y (t 0 ) y 0
dt
Nota: si en el sistema no aparece la variable t el sistema es AUTONOMO.
1. METODO DE EULER
De la ecuacin (1), el mtodo de Euler para un SEDO con condiciones de inicio
x i 1 x i hf (t i , x i , y i )
y i 1 y i hg (t i , x i , y i )
t i 1 t i h, i 0,1,2,3,.....
la funcin rhs3
function dy=rhs3(t,y)
dy=[-30*y(1)+28*y(2);0*y(1)-2*y(2)];
Ejecutamos el programa
>> eulersiste
Resultados
Ecuacion yprime=Ay
2
1.5
Y(1) y Y(2)
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo
Diagrama de fase
1
Y(2)
0.5
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Y(1)
k1, x hf (t i , xi , y i )
k1, y hg (t i , xi , y i )
k 2, x hf (t i h, xi k1, x , y i k1, y )
k 2, y hg (t i h, xi k1, x , y i k1, y )
1
xi 1 xi ( k1, x k 2, x )
2
1
y i 1 y i ( k1, y k 2, y )
2
t i 1 t i h, i 0,1,2,3,.....
E O( h 3 ), xi z xi 1 (error de truncamiento en cada paso)
Solucin
Tenemos: f(t,x,y) = t + x + y; g(t,x,y) = - t + x y; t0 = 0; x0 = 1; y0 = 2
Clculos de dos puntos de la solucin
IMPLEMENTACION
El script sistheun implementa el mtodo de heun para SEDO, utiliza la funcin
heun3.m
El ejemplo 2, es implementado.
>> sistheun
>>hold on;
>> plot(u,v,'o'); % u, v , w contienen los puntos calculados
>> plot(u,w,'o');
>> [x,y]=dsolve('Dx-t-x-y=0,Dy+t-x+y=0','x(0)=1,y(0)=2','t') % solucin exacta
x = -exp(-2^(1/2)*t)*(exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t +
1))/2 - 3/4) - 2^(1/2)*((exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4) +
2^(1/2)*exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t + 1))/2 - 3/4) +
(exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4)
y =- exp(-2^(1/2)*t)*(exp(2*2^(1/2)*t)*((exp(-2^(1/2)*t)*(2^(1/2)/2 - 1/2)*(2^(1/2)*t
+ 1))/2 - 3/4) + (exp(2^(1/2)*t)*(2^(1/2)/2 + 1/2)*(2^(1/2)*t - 1))/2 - 3/4)
>> ezplot(x,[0,2]);
>> ezplot(y,[0,2]);
-exp(-21/2 t) (exp(2 21/2 t) ((exp(-21/2 t) (21/2/2 - 1/2) (21/2 t + 1))/2 - 3/4) + (exp(21/2 t) (21/2/2 + 1/2) (21/2 t - 1))/2 - 3/4)
11
10
La frmula de Runge Kutta de cuarto orden para un SEDO con valores de inicio
k1, x hf (t i , xi , y i )
k1, y hg (t i , xi , y i )
k 2, x hf (t i h / 2, xi k1, x / 2, y i k1, y / 2)
k 2, y hg (t i h / 2, xi k1, x / 2, y i k1, y / 2)
k 3, x hf (t i h / 2, xi k 2, x / 2, y i k 2, y / 2)
k 3, y hg (t i h / 2, xi k 2, x / 2, y i k 2, y / 2)
k 4, x hf (t i h, xi k 3, x , y i k 3, y )
k 4, y hg (t i h, xi k 3, x , y i k 3, y )
1
xi 1 xi (k1, x 2k 2, x 2k 3 x k 4 x )
6
1
y i 1 y i (k1, y 2k 2, y 2k 3 y k 4 y )
6
t i 1 t i h, i 0,1,2,3,.....
4 2 x' (t ) x(t )
A ; X ' y ' (t ) ; X y (t )
1 1
Tiene solucin
X e At K ; donde K [ x 0 y 0 ]t [100 400]t
Los autovalores: A I 0 1 2; 2 3
Los autovectores: A i I vi 0; para i 1,2
para 1 2; A 2 I v1 0 tenemos v1 [- 1 1] t
para 2 3; A 3I v 2 0 tenemos v 2 [- 2 1] t
La matriz J(autovalores), y la matriz C(con columnas v1 y v2) son
2 0 e 2t 0 - 1 - 2 1 2
J ; e Jt ; C ; C 1
0 3 0
3t
e 1 1 1 1
At
La matriz e (fundamental)
e 2t 2e 3t 2e 2t 2e 3t
e At Ce Jt C 1
e e 2e 2t e 3t
2t 3t
Solucin analtica
x(t ) At 100 900e 2t 1000e 3t
y ( y ) e At
K e . 400 3t
900e 500e
2t
IMPLEMENTACION COMPUTACIONAL
El modelo depredador-presa, puede ser resuelto en MATLAB, por el mtodo de la
matriz exponencial.
En la ventana de
>> progmatricial
tab =
1.0e+003 *
0 0.1000 0.4000
0.0000 0.1317 0.4072
0.0001 0.1672 0.4137
0.0001 0.2067 0.4195
0.0001 0.2506 0.4243
0.0001 0.2994 0.4281
0.0001 0.3534 0.4307
0.0002 0.4133 0.4319
0.0002 0.4795 0.4316
0.0002 0.5526 0.4295
0.0002 0.6332 0.4253
0.0003 0.7220 0.4190
0.0003 0.8197 0.4101
0.0003 0.9272 0.3984
0.0004 1.0453 0.3836
0.0004 1.1749 0.3652
0.0004 1.3171 0.3429
0.0004 1.4730 0.3163
0.0005 1.6438 0.2849
0.0005 1.8307 0.2482
0.0005 2.0352 0.2056
Graficando
modelo depredaor presa
2500
2000
1500
1000
500
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
2000
1500
1000
500
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Donde la palabra funcin es alguna de las funciones (ode45, ode23, ode113, etc.)
Las especificaciones de los parmetros de entrada son.
Parmetro Especificacin
EDOfun Representa la funcin en el lado derecho de la EDO, dy/dt =
EDOfun(t,y) , donde t escalar, y y dy/dt son vectores columnas,
EDOfun se debe especificar en un M-file.
intervalo Es un vector que representa el intervalo de integracin. Se debe dar la
condicin inicial en intervalo(1) y se resuelve desde intervalo(1) a
intervalo(2)
y0 Vector de valores inciales para el PVI
opciones Es una estructura con parmetros adicionales que cambia las propiedades
predeterminadas de la funcin, se usa para problemas especficos
Parmetro Especificacin
t Representa el vector tiempo
y Representa una matriz solucin, donde cada fila de y es la solucin de
la correspondiente fila del vector t
En la ventana de comandos
Especificamos el rango de integracin y condiciones iniciales
>> tspan=[0,0.5]';
>> y0=[100,400]';
La solucin
>> [t,y]=ode45('dp1',tspan,y0);
Graficamos x, y con respecto al tiempo t
>> plot(t,y)
>> grid on
2500
y1
y2
2000
1500
1000
500
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
450
400
350
y(t)
300
250
200
0 500 1000 1500 2000 2500
x(t)
4.5
3.5
2.5
1.5
0.5
0 2 4 6 8 10 12 14 16 18 20
3.5
2.5
y(t)
1.5
0.5
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x(t)
la funcin rhs2
function dy=rhs2(t,y)
dy=[y(1)*(4-0.0003*y(1)-0.0004*y(2));y(2)*(2-0.0002*y(1)-
0.0001*y(2))];
Resultados grficos
4
x 10 Ecuacion de especies en competencia
2
1.5
Y(1 )y Y(2)
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo, segundos
4
x 10 Diagrama de fase,especies en competencia
2
1.5
Y(2)
0.5
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Y(1)
Analizamos el caso de una EDO de segundo orden con condiciones de inicio, en la que
y(x) y y(x) aparecen en forma explicita
G( x, y ,y , y) = 0: y(x0) = y0 , y(x0) = y0
Mediante la sustitucin: z = y
Se tiene
G( x, y ,z , z) = 0
Se puede escribir como in sistema de dos ecuaciones diferenciales de primer orden
Siguiendo la notacin anterior
y = f(x,y,z) = z
z = g(x,y,z) expresin que se obtiene al despejar z de G
Con las condiciones iniciales
y(x0) = y0 , z(x0) = y0 = z0
Ejemplo 2:
Consideremos el problema de valor inicial de segundo orden
x(t) + 4x(t) + 5x(t) = 0; x(0) = 3 , x(0) = -5
a) encuentre la solucin exacta de la ecuacin de segundo orden
b) transforme la ecuacin de segundo orden en un sistema de primer orden equivalente
c) use la formula (7) y (8) para hallar una solucin aproximada en [0,5], N = 50 y h =
0.1
Solucin
a) una solucin analtica, por el mtodo tradicional es
x (t ) 3e 2t cos(t ) e 2t sen(t )
b) sustituyendo x' (t ) y (t ) x ' ' (t ) y ' (t )
Tenemos
dx
y
dt x (0) 3
Con
dy y (0) 5
5 x 4 y
dt
Aplicando el RK4 (Runge Kutta de cuarto orden) para h= 0.1, N = 50 en [0,5]
Se muestran algunos de los resultados en la tabla No1
k tk xk xk(t)
0 0.0 3.000000 3.000000
1 0.1 2.525645 2.525658
2 0.2 2.104027 2.104046
3 0.3 1.735062 1.735084
4 0.4 1.416533 1.416555
Tabla No1: 5 0.5 1.144885 1.144904 resultados de
aplicar RK4, son 10 1.0 0.333243 0.333246 comparados
xk(aprox.) y xk(t) 20 2.0 -0.006206 -0.006211 (exacta)
30 3.0 -0.007010 -0.007012
Los valores de la 48 4.8 -0.000049 -0.000049 columna tres,
denotan los 49 4.9 -0.000023 -0.000023 valores
50 5.0 -0.00000493 -0.00000490
aproximados y en la cuarta columna los valores exactos, los valores de y k no se
muestran ya que no son transcendentes por que?
IMPLEMENTACION
Podemos implementar el mtodo de RK4, para este ejercicio, usando el archivo
RK4siste.m
% archivo de RK4(runge kutta de 4to orden), para
% sistema de ecuaciones diferenciales lineales
h=0.1
% se crea la funcin dentro del programa, sin necesidad de
% definirla mediante un archivo
xx=inline('y','t','x','y');
yy=inline('-5*x-4*y','t','x','y');
t0=0;
tf=5;
x=3;
y=-5;
t=t0;
g=[t,x,y];
tab1=[t,x,y];
while (t<tf)
t=t+h;
u1=h*eval('xx(t,x,y)');
v1=h*eval('yy(t,x,y)');
u2=h*eval('xx(t+h/2,x+u1/2,y+v1/2)');
v2=h*eval('yy(t+h/2,x+u1/2,y+v1/2)');
u3=h*eval('xx(t+h/2,x+u2/2,y+v2/2)');
v3=h*eval('yy(t+h/2,x+u2/2,y+v2/2)');
u4=h*eval('xx(t+h,x+u3,y+v3)');
v4=h*eval('yy(t+h,x+u3,y+v3)');
x=x+(1/6)*(u1+2*u2+2*u3+u4);
y=y+(1/6)*(v1+2*v2+2*v3+v4);
p=[t,x,y];
g=[g;p];
tab2=[t,x,y];
tab1=[tab1;tab2];
end
% tab1
% para graficar la solucin
u=0:h:tf;
plot(u,'g')
En la ventana de comandos
>> RK4siste
Resultados
tab1 =
0 3.0000 -5.0000
0.1000 2.5256 -4.4819
0.2000 2.1040 -3.9506
0.3000 1.7351 -3.4324
0.4000 1.4165 -2.9441
0.5000 1.1449 -2.4960
0.6000 0.9158 -2.0932
0.7000 0.7247 -1.7373
0.8000 0.5668 -1.4274
0.9000 0.4377 -1.1611
1.0000 0.3332 -0.9350
1.1000 0.2495 -0.7450
1.2000 0.1832 -0.5871
1.3000 0.1312 -0.4572
1.4000 0.0909 -0.3513
1.5000 0.0602 -0.2659
1.6000 0.0372 -0.1978
1.7000 0.0202 -0.1440
1.8000 0.0080 -0.1020
1.9000 -0.0005 -0.0697
2.0000 -0.0062 -0.0452
2.1000 -0.0098 -0.0269
2.2000 -0.0117 -0.0135
2.3000 -0.0126 -0.0040
2.4000 -0.0126 0.0025
2.5000 -0.0122 0.0068
2.6000 -0.0113 0.0094
2.7000 -0.0103 0.0108
2.8000 -0.0092 0.0112
2.9000 -0.0081 0.0111
3.0000 -0.0070 0.0105
3.1000 -0.0060 0.0097
3.2000 -0.0051 0.0088
3.3000 -0.0042 0.0078
3.4000 -0.0035 0.0068
3.5000 -0.0029 0.0059
3.6000 -0.0023 0.0050
3.7000 -0.0019 0.0042
3.8000 -0.0015 0.0035
3.9000 -0.0012 0.0029
4.0000 -0.0009 0.0024
4.1000 -0.0007 0.0019
4.2000 -0.0005 0.0015
4.3000 -0.0004 0.0012
4.4000 -0.0003 0.0009
4.5000 -0.0002 0.0007
4.6000 -0.0001 0.0006
4.7000 -0.0001 0.0004
4.8000 -0.0000 0.0003
4.9000 -0.0000 0.0002
5.0000 -0.0000 0.0002
5.1000 0.0000 0.0001
Grfica:
5
4.5
3.5
2.5
1.5
0.5
0
0 10 20 30 40 50 60
y1' y 2
y 2' (1 y12 ) y 2 y1
El sistema anterior genera el PVI
y1' y 2 ; y1 (0) 2
y 2' (1 y12 ) y 2 y1 ; y 2 (0) 0 para t [0,20]
function z=funejerc1(t,y)
z=[y(2);(1-y(1).^2).*y(2)-y(1)];
Notar que la variable t no aparece en la definicin de la funcin funejerc1 y = 1, la
variable funejerc1 es un vector columna
b) para las opciones tenemos la instruccin
Opciones = odeset (RelTol,1e-6)
c) por la condicin del PVI, el intervalo es [0,20] y el vector columna de valores
inciales ser [2;0], as tenemos
[t,y]=ode45('funejerc1',[0,20],[2;0],opciones);
Tambin se puede escribir
[t,y]=ode45('funejerc1',[0,20],[2,0],opciones) o [t,y]=ode45('funejerc1',[0,20],[2;0]);
e) resultados
Solucion de la EDO,mu=1
3
y1
y2
2
1
solucion y
-1
-2
-3
0 2 4 6 8 10 12 14 16 18 20
tiempo t
y1' y 2 ; y1 (0) 2
y (1 y ) y 2 y1 ; y 2 (0) 0 para t [0,3000]
'
2
2
1
Solucin
Seguimos las mismas instrucciones anteriores, con las modificaciones:
El M-file ser funejerc2, el intervalo ahora es [0,3000] (por razones de escala), = 1000
Y usamos ode15s
function z=funejerc2(t,y)
z=[y(2);1000*(1-y(1).^2).*y(2)-y(1)];
En la ventana de comandos
opciones=odeset('RelTol',1e-6);
[t,y]=ode15s('funejerc2',[0,3000],[2;0],opciones);
plot(t,y(:,1),'r--')
title('Solucion de la EDO,mu=1000');
xlabel('tiempo t');
ylabel('solucion y');
legend('y1')
Resultados
Solucion de la EDO,mu=1000
2.5
y1
2
1.5
0.5
solucion y
-0.5
-1
-1.5
-2
-2.5
0 500 1000 1500 2000 2500 3000
tiempo t
Figura 2: grafica de una solucin del PVI rgido, con ode15s, para = 1000
EJERCICIOS
1.- grafique el campo de direcciones para la ecuacin diferencial y luego grafique tres
curvas solucin
a) y = 1 + y ; b) y = x2 y2
2.- grafique el campo de direcciones de la EDO, despus utilcelo para graficar una
curva solucin que pase por el punto indicado
a) y = y 2x ; (1,0)
b) y = y + xy ; (0,1)
c) y = 1- xy ; (0,0)
d) y = x xy ; (1,0)
3.- Resuelva las siguientes EDO usando el mtodo de Euler, heun y RK4
i) Tome h = 0.1 y de 20 pasos. Luego tome h = 0.05 y de 40 pasos
ii) Compare la solucin exacta y (2) con las aproximaciones obtenidas en la parte (a)
iii) dibuje las aproximaciones y la solucin exacta en una misma grafica
a) y = t2 y ; y(0) = 1 ; y(t) = - e-t + t2 - 2t + 2
4 3t 1
b) y = 3y + 3t ; y(0) = 1 , y (t ) e t
3 3
2/2
c) y = -ty ; y(0) = 1 , y (t ) e t
1 2t
d) y = e-2t -2y ; y(0) = 1/10 ; y (t ) e te 2 t
10
1
e) y = 2ty2 ; y(0) = 1 ; y (t )
(1 t 2 )