Beruflich Dokumente
Kultur Dokumente
7.2
ICM ESPOL
Los mtodos numricos desarrollados para una ecuacin diferencial ordinaria de primer orden
pueden extenderse directamente a sistemas de ecuaciones diferenciales de primer orden.
Analizamos el caso de dos ecuaciones diferenciales ordinarias de primer orden con
condiciones en el inicio
F(x, y, z, y) = 0, y(x0) = y0
G(x, y, z, z) = 0, z(x0) = z0
Se deben escribir en la notacin adecuada para usar los mtodos numricos
y = f(x, y, z), y(x0) = y0
z = g(x, y, z), z(x0) = z0
Ejemplo. Obtenga dos puntos de la solucin del siguiente sistema de ecuaciones diferenciales
con la frmula de Heun. Use h = 0.1
y x y z = 0, y(0) = 1
z + x y + z = 0, z(0) = 2
Ecuaciones diferenciales
y = f(x, y, z) = x + y + z, x0 = 0, y0 = 1
z = g(x, y, z) = -x + y - z, x0 = 0, z0 = 2
Clculo de dos puntos de la solucin
i=0:
K1,y = hf(x0, y0, z0) = 0.1 f(0, 1, 2) = 0.1 (0 +1 + 2) = 0.3
K1,z = hg(x0, y0, z0) = 0.1 g(0, 1, 2) = 0.1 (-0 +1 - 2) = -0.1
K2,y = hf(x0+h, y0+K1,y, z0+K1,z) = 0.1 f(0.1, 1.3, 1.9) = 0.1 (0.1 + 1.3 + 1.9) = 0.33
K2,z = hg(x0+h, y0+K1,y, z0+K1,z) = 0.1 f(0.1, 1.3, 1.9) = 0.1 (-0.1 + 1.3 - 1.9) = -0.07
1
y1 = y0 + (K1,y + K2,y) = 1 + 0.5(0.3 + 0.33) = 1.3150
2
1
z1 = z0 + (K1,z + K2,z) = 2 + 0.5(-0.1 + (-0.07)) = 1.9150
2
x1 = x0 + h = 0 + 0.1 = 0.1
ANLISIS NUMRICO
i=1:
ICM ESPOL
Instrumentacin en MATLAB
Una funcin para calcular la solucin de un sistema de dos ecuaciones diferenciales ordinarias
de primer orden con condiciones en el inicio con la frmula de Heun. En cada llamada, la
funcin entrega el siguiente punto de la solucin.
function [x,y,z]=heun2(f, g, x, y, z, h)
k1y=h*f(x,y,z)
k1z=h*g(x,y,z)
k2y=h*f(x+h,y+k1y,z+k1z)
k2z=h*g(x+h,y+k1y,z+k1z)
y=y+0.5*(k1y+k2y);
z=z+0.5*(k1z+k2z);
x=x+h;
Un programa en MATLAB para calcular 20 puntos espaciados en una distancia 0.1 del ejercicio
anterior usando la frmula de Heun
f=inline('x+y+z');
g=inline('-x+y-z');
x=0;
y=1;
z=2;
h=0.1;
for i=1:20
[x,y,z]=heun2(f, g, x, y, z, h);
u(i)=x;
v(i)=y;
w(i)=z;
end
Suponga que el programa se almacen con el nombre edo. Los siguientes comandos permiten
visualizar la solucin y compararla con la solucin analtica exacta
>> edo
>> hold on;
>> plot(u, v, 'o');
% u, v, w contienen los puntos calculados
>> plot(u, w, 'o');
>> [y, z]=dsolve('Dy-x-y-z=0,Dz+x-y+z=0','y(0)=1,z(0)=2','x') % Solucin analtica
ANLISIS NUMRICO
ICM ESPOL
y=
3/4*exp(2^(1/2)*x)-3/4*2^(1/2)*exp(-2^(1/2)*x)+3/4*2^(1/2)*exp(2^(1/2)*x)+3/4*exp(2^(1/2)*x)-1/2
z=
3/4*exp(2^(1/2)*x)+3/4*exp(-2^(1/2)*x)-x+1/2
>> ezplot(y, [0,2]);
>> ezplot(z, [0,2]);
ANLISIS NUMRICO
ICM ESPOL
1
(K1,y + 2K2,y + 2K3,y + K4,y)
6
1
zi+1 = zi + (K1,z + 2K2,z + 2K3,z + K4,z)
6
xi+1 = xi + h,
i = 0, 1, 2, ...
E = O(h5), xi z xi+1
(Error de truncamiento en cada paso)
yi+1 = yi +
function [x,y,z]=rk42(f,g,x,y,z,h)
k1y=h*f(x,y,z);
k1z=h*g(x,y,z);
k2y=h*f(x+h/2,y+k1y/2,z+k1z/2);
k2z=h*g(x+h/2,y+k1y/2,z+k1z/2);
k3y=h*f(x+h/2,y+k2y/2,z+k2z/2);
k3z=h*g(x+h/2,y+k2y/2,z+k2z/2);
k4y=h*f(x+h,y+k3y,z+k3z);
k4z=h*g(x+h,y+k3y,z+k3z);
y=y+1/6*(k1y+2*k2y+2*k3y+k4y);
z=z+1/6*(k1z+2*k2z+2*k3z+k4z);
x=x+h;
Un programa en MATLAB para calcular 20 puntos espaciados en una distancia h = 0.1 del
ejercicio anterior usando la frmula de Runge-Kutta de cuarto orden
f=inline('x+y+z');
g=inline('-x+y-z');
x=0;
y=1;
z=2;
h=0.1;
for i=1:20
[x,y,z]=rk42(f, g, x, y, z, h);
u(i)=x;
v(i)=y;
w(i)=z;
end
Suponga que el programa se almacen con el nombre edo. Los siguientes comandos permiten
visualizar la solucin y compararla con la solucin analtica exacta
>> edo
>> hold on;
>> plot(u, v, 'o');
% u, v, w contienen los puntos calculados
>> plot(u, w, 'o');
>> [y, z]=dsolve('Dy-x-y-z=0,Dz+x-y+z=0','y(0)=1,z(0)=2','x') % Solucin analtica
y=
3/4*exp(2^(1/2)*x)-3/4*2^(1/2)*exp(-2^(1/2)*x)+3/4*2^(1/2)*exp(2^(1/2)*x)+3/4*exp(2^(1/2)*x)-1/2
z=
3/4*exp(2^(1/2)*x)+3/4*exp(-2^(1/2)*x)-x+1/2
>> ezplot(y, [0,2]);
% Superponer la solucin analtica
>> ezplot(z, [0,2]);
ANLISIS NUMRICO
ICM ESPOL
7.3
ANLISIS NUMRICO
ICM ESPOL
Solucin
Mediante la sustitucin z = y se obtiene
z z x + y + 1 = 0
Constituyen un sistema de dos ecuaciones diferenciales de primer orden que se puede escribir
y = f(x,y,z) = z,
y(0) = 1
z = g(x,y,z) = x y + z 1,
z(0) = 2
Clculo de los puntos de la solucin
i=0:
x0 = 0, y0 = 1, z0 = 2
K1,y = hf(x0, y0, z0) = 0.1 f(0, 1, 2) = 0.1 (2) = 0.2
K1,z = hg(x0, y0, z0) = 0.1 g(0, 1, 2) = 0.1 (0 1 + 2 1) = 0
K2,y = hf(x0 + h/2, y0 + K1,y/2, z0+ K1,z/2) = 0.1f(0.05, 1.1, 2) = 0.1( 2) = 0.2
K2,z = hgx0 + h/2, y0 + K1,y/2, z0+ K1,z/2) = 0.1g(0.05, 1.1, 2) =0.1(0.05-1.1+2-1) = -0.005
K3,y = hf(x0 + h/2, y0 + K2,y/2, z0+ K2,z/2) = 0.1 f( 0.05, 1.1, 1.9975) = 0.1998
K3,z = hg(x0 + h/2, y0 + K2,y/2, z0+ K2,z/2) = 0.1 g( 0.05, 1.1, 1.9975) = -0.0052
K4,y = hf(x0 + h, y0 + K3,y, z0 + K3,z) = 0.1 f(0.1, 1.1998, 1.9948) = 0.1995
K4,z = hgx0 + h, y0 + K3,y, z0 + K3,z) = 0.1 g0.1, 1.1998, 1.9948) = -0.0105
1
(K1,y + 2K2,y + 2K3,y + K4,y) = 1 +
6
1
z1 = z0 + (K1,z + 2K2,z + 2K3,z + K4,z) = 2 +
6
x1 = x0 + h = 0 + 0.1 = 0.1
y1 = y0 +
1
[0.2+2(0.2)+2(0.1998)+0.1995] = 1.1998
6
1
[0+2(-0.005)+2(-0.0052)-0.0105]=1.9948
6
Instrumentacin en MATLAB
Procedemos a usar la misma funcin rk42 para resolver el ejemplo anterior de la ecuacin
diferencial de segundo orden, transformndola a un sistema de dos ecuaciones diferenciales
de primer orden.
Un programa en MATLAB para calcular 20 puntos de la solucin, espaciados en una distancia
0.1 para el ejercicio anterior usando la frmula de Runge-Kutta de cuarto orden
f=inline('0*x + 0*y + z');
g=inline('x - y + z - 1');
x=0;
y=1;
z=2;
h=0.1;
for i=1:20
[x,y,z]=rk42(f, g, x, y, z, h);
u(i)=x;
v(i)=y;
end
Suponga que el programa se almacen con el nombre edo. Los siguientes comandos permiten
visualizar la solucin y compararla con la solucin analtica exacta
>> edo
>> hold on;
>> plot(u, v, 'o');
% u, v contienen los puntos calculados
>> y = dsolve('D2y-Dy-x+y+1=0','y(0)=1,Dy(0)=2','x') % Solucin analtica
y=
x+1/3*3^(1/2)*exp(1/2*x)*sin(1/2*3^(1/2)*x)+exp(1/2*x)*cos(1/2*3^(1/2)*x)
>> ezplot(y, [0,2]);
% Superponer la solucin analtica
ANLISIS NUMRICO
ICM ESPOL
7.4
Los mtodos numricos pueden aplicarse igualmente para calcular la solucin aproximada de
ecuaciones diferenciales ordinarias no lineales, para las cuales no es posible o pudiese ser
muy laborioso obtener la solucin analtica
ANLISIS NUMRICO
ICM ESPOL
Suponga que el programa se almacen con el nombre edo. Los siguientes comandos permiten
visualizar la solucin y compararla con la solucin analtica exacta
>> edo
>> hold on;
>> plot(u, v, 'o');
% u, v contienen los puntos calculados
>> y = dsolve('D2y+y*Dy-x+y-3','y(0)=1','Dy(0)=2','x')
Warning: Explicit solution could not be found
% MATLAB no pudo encontrar
% la solucin analtica