Métodos Numéricos
Ejercicios Tema 4: Resolución aproximada de EDO's Prof: Francisco Palacios
EPSEM-UPC
Marzo 2008,
Versión 1.3Ejercicio 2
Resolución con Maple de las EDO's del Ejercicio 1 Ejercicio 1.1
Este ejercicio es muy simple de resolver manualmente, sin embargo, la resolución con Maple puede complicarse.
Si calculas la integral de sin(5x), obtendrás
> f:=int(sin(5*x),x);
:=
f −1 5cos 5 x( ) Si optas por resolver la ecuación con dsolve, resulta
> edo:=diff(y(x),x)=sin(5*x);
s:=dsolve(edo,y(x));
:=
edo =
∂
∂
xy x( ) sin 5 x( )
:=
s y x( ) = −16 + − + 5 cos x( )5 4cos x( )3 cos x( ) _C1
Las dos soluciones son equivalentes, aunque no lo parezca a simple vista. Una forma de verificarlo es demostrar que difieren en una constante, para ello las restamos y derivamos respecto de x.
> g:=rhs(s)-f;
:=
g −16 + − + +
5 cos x( )5 4cos x( )3 cos x( ) _C1 1 5cos 5 x( )
> g1:=diff(g,x);
:=
g1 16sin x( )cos x( )4 − 12sin x( )cos x( )2 + sin x( ) − sin 5 x( ) El resultado aún no es evidente, simplificamos
> simplify(g1);
0 Ejercicio 1.2
Para resolver con Maple, tenemos que escribir la ecuación de forma que aparezca y', por ejemplo y'=-exp(-3x) o bien 1+exp(3x)y'=0. Usaremos esta última en la resolución.
> edo:=1+exp(3*x)*diff(y(x),x)=0;
:=
edo 1 + e(3 x)⎛ =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) 0
> dsolve(edo,y(x));
= ( )
y x 1 +
3e(−3 x) _C1 Ejercicio 1.3
> edo:=(x+1)*diff(y(x),x)=x+6;
:=
edo (x + 1)⎛ =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) x + 6
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = x + 5ln(x + 1) + _C1 Ejercicio 1.4
> edo:=x*diff(y(x),x)=4*y(x);
:=
edo x⎛ =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) 4 ( )y x
> dsolve(edo,y(x));
= ( )
y x x4_C1 Ejercicio 1.5
> edo:=diff(y(x),x)=y(x)^3/x^2;
:=
edo =
∂
∂
xy x( ) y x( )3 x2
> dsolve(edo,y(x));
Page 1
1 = ( ) y x 2
+ 2 _C1 x
x Usamos la opción explicit=true para obtener una solución explícita.
> dsolve(edo,y(x),explicit=true);
= , ( )
y x (2 + _C1 x x) +
2 _C1 x y x( ) = − (2 + _C1 x x) + 2 _C1 x
Hemos obtenido dos soluciones. Observa que la solución no corresponde exactamente con la solución manual porque Maple ha racionalizado el denominador.
Ejercicio 3
Resolución del problema de valor inicial.
> edo:=(exp(-y(x))+1)*sin(x)=(1+cos(x))*diff(y(x),x);
:=
edo (e(− ( )y x ) + 1)sin x( ) = (1 + cos x( ))⎛
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂ xy x( )
> sol:=dsolve({edo,y(0)=0},y(x));
:=
sol y x( ) = ⎛
⎝⎜⎜ ⎞
⎠⎟⎟
ln − −eln 4( ) + + 1 cos x( ) +
1 cos x( )
> sol:=simplify(sol);
:=
sol y x( ) = ⎛
⎝⎜⎜ ⎞
⎠⎟⎟
ln − − + 3 cos x( ) + 1 cos x( ) Definimos la función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → ⎛
⎝⎜⎜ ⎞
⎠⎟⎟
ln −− + 3 cos x( ) + 1 cos x( ) Representación gráfica en el intervalo [0,2]
> plot(f(x),x=0..2);
x 1.5 2
1 0.5
1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0
Ejercicio 4
Resolución del problema de valor inicial.
> edo:=y(x)*diff(y(x),x)=4*x*sqrt(y(x)^2+1);
:=
edo y x( )⎛ =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) 4 x y x( )2 + 1
> sol:=dsolve({edo,y(0)=1},y(x));
:=
sol y x( ) = 1 + 4 x4 + 4 x2 2
Verifica manualmente que esta solución coincide con la presentada en la resolución manual de los ejercicios.
Definimos la función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → 1 + 4 x4 + 4 x2 2 Representación gráfica en el intervalo [0,2]
> plot(f(x),x=0..2,y=0..10);
Page 2
x 1.5 2 1
0.5 y
10
8
6
4
2
0
Ejercicio 5
Resolución del problema de valor inicial.
> edo:=x^2*diff(y(x),x)=y(x)-x*y(x);
:=
edo x2⎛ =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) y x( ) − x ( )y x
> sol:=dsolve({edo,y(-1)=-1},y(x));
:=
sol y x( ) = e
⎛
⎝⎜⎜ ⎞
⎠⎟⎟
−1 x
x e
> sol:=simplify(sol);
:=
sol y x( ) = e
⎛
⎝⎜⎜ ⎞
⎠⎟⎟
−x + 1 x
x Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → e
⎛
⎝⎜⎜ ⎞
⎠⎟⎟
−x + 1 x
x Representación gráfica en el intervalo [-1,-0.5].
> plot(f(x),x=-1..-0.5,y=-6..0);
x -0.7 -0.6 -0.5
-0.8 -0.9
-1
y 0
-1
-2
-3
-4
-5
-6
Ejercicio 6
Resolución del problema de valor inicial.
> edo:=diff(y(x),x)=(2*x+1)/(2*y(x));
:=
edo =
∂
∂
xy x( ) 1 2
+ 2 x 1
( ) y x
> sol:=dsolve({edo,y(-2)=-1},y(x));
:=
sol y x( ) = − x2 + − x 1
Ejercicio 8
Resolución de las EDO's del ejercicio 7.
Ejercicio 7.1
> edo:=diff(y(x),x)=5*y;
Page 3
:=
edo =
∂
∂
xy x( ) 5 y
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = e(5 x)_C1 Ejercicio 7.2
> edo:=diff(y(x),x)+y(x)=exp(3*x);
:=
edo ⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) y x( ) e(3 x)
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = ⎛
⎝⎜⎜ ⎞
⎠⎟⎟
1 +
4 e(−4 x)_C1 e(3 x)
Intentamos obtener una solución más parecida a la que aparece en la resolución manual. Para ello aplicamos el comando simplify.
> sol:=simplify(sol);
:=
sol y x( ) = 1
4(1 + 4 e(−4 x)_C1 e) (3 x) El resultado no es del todo bueno, usamos expand para que se efectuen los productos.
> sol:=expand(sol);
:=
sol y x( ) = 1 + 4(ex)
3 _C1
ex Ejercicio 7.3
> edo:=diff(y(x),x)+3*x^2*y(x)=x^2;
:=
edo ⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) 3 x2y x( ) x2
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = 1 +
3 e(−x3)_C1 Ejercicio 7.4
> edo:=x^2*diff(y(x),x)+x*y(x)=1;
:=
edo x2⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) x ( )y x 1
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = ln x( ) + _C1 x Ejercicio 7.5
> edo:=x*diff(y(x),x)-y(x)=x^2*sin(x);
:=
edo x⎛ − =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) y x( ) x2sin x( )
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = −xcos x( ) + _C1 x Ejercicio 7.6
> edo:=x*diff(y(x),x)+4*y(x)=x^3-x;
:=
edo x⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) 4 ( )y x x3 − x
> sol:=dsolve(edo,y(x));
:=
sol y x( ) = 1 35
− + 5 x7 7 x5 35 _C1
x4 Efectuamos los productos con expand.
> sol:=expand(sol);
:=
sol y x( ) = 1 − + 7x3 1
5x _C1 x4 Ejercicio 7.7
> edo:=x^2*diff(y(x),x)+x*(x+2)*y(x)=exp(x);
:=
edo x2⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) x (x + 2)y x( ) ex
> sol:=dsolve(edo,y(x));
Page 4
:=
sol y x( ) =
⎛
⎝⎜⎜ ⎞
⎠⎟⎟
1 +
2e(2 x) _C1 e(−x) x2
Efectuamos los productos con expand.
> sol:=expand(sol);
:=
sol y x( ) = 1 + 2
ex x2
_C1 exx2
Ejercicio 9
Resolución del problema de valor inicial.
> edo:=x*diff(y(x),x)+y(x)=exp(x);
:=
edo x⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) y x( ) ex
> sol:=dsolve({edo,y(1)=2},y(x));
:=
sol y x( ) = ex − + e 2 x Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → ex − + e 2 x Representación gráfica en el intervalo [1,3].
> plot(f(x),x=1..3,y=0..8);
x 2.5 3
2 1.5
1 y
8
6
4
2
0
Ejercicio 10
Resolución del problema de valor inicial.
> edo:=(x+1)*diff(y(x),x)+y(x)=ln(x);
:=
edo (x + 1)⎛ + =
⎝⎜⎜ ⎞
⎠⎟⎟
∂
∂
xy x( ) y x( ) ln x( )
> sol:=dsolve({edo,y(1)=10},y(x));
:=
sol y x( ) = xln x( ) − + x 21 + x 1 Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → xln x( ) − + x 21 + x 1 Representación gráfica en el intervalo [1,3]
> plot(f(x),x=1..3,y=0..10);
Page 5
x 2.5 3 2
1.5 1
y 10
8
6
4
2
0
Ejercicio 11
Resolución del problema de valor inicial.
> edo:=diff(y(x),x)=x^2-y(x);
:=
edo =
∂
∂
xy x( ) x2 − y x( )
> sol:=dsolve({edo,y(0)=1},y(x));
:=
sol y x( ) = exx2 − 2 x ex + 2 ex − 1 ex
> sol:=expand(sol);
:=
sol y x( ) = x2 − + − 2 x 2 1 ex Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → x2 − + − 2 x 2 1 ex Representación gráfica en el intervalo [1,3].
> plot(f(x),x=0..1,y=0..2);
x 0.6 0.8 1
0.4 0.2
y 2
1.5
1
0.5
0
• Método de Euler
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y).
> F:=(x,y)->x^2-y;
yb0:=1.;#valor inicial a:=0;
b:=1.;
n:=4;
h:=(b-a)/n;
x0:=a;
for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j);
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
F (x y, ) → x2 − y :=
yb0 1.
:=
a 0 Page 6
:=
b 1.
:=
n 4 :=
h .2500000000 :=
x0 0 , ,
***** Fase 0 ******
:=
yb1 .7500000000 :=
x1 .2500000000 :=
e1 .0336992171 , ,
***** Fase 1 ******
:=
yb2 .5781250000 :=
x2 .5000000000 :=
e2 .0653443404 , ,
***** Fase 2 ******
:=
yb3 .4960937500 :=
x3 .7500000000 :=
e3 .0940396973 , ,
***** Fase 3 ******
:=
yb4 .5126953125 :=
x4 1.000000000 :=
e4 .1194252463 Resolución con dsolve.
> solnum:=dsolve({edo,y(0)=1},y(x),type=numeric,method=classical,stepsize=0.25);
:=
solnum proc(x_classical) ... end
> solnum(0.75);
[x = .75,y x( ) = .4960937500000000]
> solnum(1);
[x = 1,y x( ) = .5126953125000000]
Ejercicio 12
Resolución exacta del problema de valor inicial y definición de la función solución.
> edo:=diff(y(x),x)=x^2-y(x);
sol:=dsolve({edo,y(0)=1},y(x));
f:=unapply(rhs(sol),x);
:=
edo =
∂
∂
xy x( ) x2 − y x( ) :=
sol y x( ) = x2ex − 2 x ex + 2 ex − 1 ex
:=
f x → x2ex − 2 x ex + 2 ex − 1 ex
• Método de Euler modificado.
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y) .
> F:=(x,y)->x^2-y;
yb0:=1.;#valor inicial a:=0;
b:=1.;
n:=4;
h:=(b-a)/n;
x0:=a;
for j from 0 to n-1 do
`***** Fase`,j,`******`;
k1:=F(x.j,yb.j);
x.(j+1):=x.j+h;
k2:=F(x.(j+1),yb.j+h*k1);
yb.(j+1):=yb.j+h/2*(k1+k2);
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
Page 7
:=
F (x y, ) → x2 − y :=
yb0 1.
:=
a 0 :=
b 1.
:=
n 4 :=
h .2500000000 :=
x0 0 , ,
***** Fase 0 ******
:=
k1 -1.
:=
x1 .2500000000 :=
k2 -.6875000000 :=
yb1 .7890625000 :=
e1 .0053632829 , ,
***** Fase 1 ******
:=
k1 -.7265625000 :=
x2 .5000000000 :=
k2 -.3574218750 :=
yb2 .6535644531 :=
e2 .0100951126 , ,
***** Fase 2 ******
:=
k1 -.4035644531 :=
x3 .7500000000 :=
k2 .0098266602 :=
yb3 .6043472290 :=
e3 .0142137817 , ,
***** Fase 3 ******
:=
k1 -.0418472290 :=
x4 1.000000000 :=
k2 .4061145782 :=
yb4 .6498806477 :=
e4 .0177600889
Puedes obtener un programa para aplicar el método de Euler modificado usando dsolve con las opciones:
- type=numeric
- method=classical[heunform]
- usa la opción stepsize para fijar el paso.
> nsol:=dsolve({edo,y(0)=1},y(x),type=numeric,method=classical[heunform],stepsize=0.25);
:=
nsol proc(x_classical) ... end
> nsol(1.);
[x = 1.,y x( ) = .6498806476593018]
Ejercicio 13
Resolución del problema de valor inicial y definición de la función solución.
> edo:=diff(y(x),x)=x^2-y(x);
sol:=dsolve({edo,y(0)=1},y(x));
f:=unapply(rhs(sol),x);
:=
edo =
∂
∂
xy x( ) x2 − y x( ) :=
sol y x( ) = x2ex − 2 x ex + 2 ex − 1 ex
:=
f x → x2ex − 2 x ex + 2 ex − 1 ex
• Método de Taylor de orden 2. Page 8
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y) .
> F:=(x,y)->x^2-y;
Fx:=unapply(diff(F(x,y),x),x,y);# función derivada parcial respecto de x Fy:=unapply(diff(F(x,y),y),x,y);# función derivada parcial respecto de y yb0:=1.;#valor inicial
a:=0;
b:=1.;
n:=4;
h:=(b-a)/n;
x0:=a;
for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j)+h^2/2*(Fx(x.j,yb.j)+Fy(x.j,yb.j)*F(x.j,yb.j));
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
F (x y, ) → x2 − y :=
Fx (x y, ) → 2 x :=
Fy -1 :=
yb0 1.
:=
a 0 :=
b 1.
:=
n 4 :=
h .2500000000 :=
x0 0 , ,
***** Fase 0 ******
:=
yb1 .7812500000 :=
x1 .2500000000 :=
e1 .0024492171 , ,
***** Fase 1 ******
:=
yb2 .6396484375 :=
x2 .5000000000 :=
e2 .0038209030 , ,
***** Fase 2 ******
:=
yb3 .5856628418 :=
x3 .7500000000 :=
e3 .0044706055 , ,
***** Fase 3 ******
:=
yb4 .6274709702 :=
x4 1.000000000 :=
e4 .0046495886
Ejercicio 14
Ejercicio 14.1
Resolución del problema de valor inicial.
> edo:=diff(y(x),x)=3*y(x)+3*x;
:=
edo =
∂
∂
xy x( ) 3 ( )y x + 3 x
> sol:=dsolve({edo,y(0)=1},y(x));
:=
sol y x( ) = − − + x 1 3
4 3e(3 x) Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → − − + x 1 3
4 3e(3 x) Representación gráfica en el intervalo [0,0.2].
Page 9
> plot(f(x),x=0..0.2,y=0..2.5);
x 0.15 0.2
0.1 0.05
y 2.5
2
1.5
1
0.5
0
14.2 Método de Euler.
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y).
> F:=(x,y)->3*y+3*x;
yb0:=1.;#valor inicial a:=0;
b:=0.2;
n:=5;
h:=(b-a)/n;
x0:=a;
for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j);
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
F (x y, ) → 3 y + 3 x :=
yb0 1.
:=
a 0 :=
b .2 :=
n 5 :=
h .04000000000 :=
x0 0 , ,
***** Fase 0 ******
:=
yb1 1.120000000 :=
x1 .04000000000 :=
e1 .009995803 , ,
***** Fase 1 ******
:=
yb2 1.259200000 :=
x2 .08000000000 :=
e2 .022465533 , ,
***** Fase 2 ******
:=
yb3 1.419904000 :=
x3 .1200000000 :=
e3 .037868553 , ,
***** Fase 3 ******
:=
yb4 1.604692480 :=
x4 .1600000000 :=
e4 .056740056 , ,
***** Fase 4 ******
:=
yb5 1.816455578 :=
x5 .2000000000 :=
e5 .079702822 14.3 Método de Euler modificado.
> for j from 0 to n-1 do
`***** Fase`,j,`******`;
Page 10
k1:=F(x.j,yb.j);
x.(j+1):=x.j+h;
k2:=F(x.(j+1),yb.j+h*k1);
yb.(j+1):=yb.j+h/2*(k1+k2);
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
, ,
***** Fase 0 ******
:=
k1 3.
:=
x1 .04000000000 :=
k2 3.480000000 :=
yb1 1.129600000 :=
e1 .000395803 , ,
***** Fase 1 ******
:=
k1 3.508800000 :=
x2 .08000000000 :=
k2 4.049856000 :=
yb2 1.280773120 :=
e2 .000892413 , ,
***** Fase 2 ******
:=
k1 4.082319360 :=
x3 .1200000000 :=
k2 4.692197682 :=
yb3 1.456263461 :=
e3 .001509092 , ,
***** Fase 3 ******
:=
k1 4.728790383 :=
x4 .1600000000 :=
k2 5.416245228 :=
yb4 1.659164173 :=
e4 .002268363 , ,
***** Fase 4 ******
:=
k1 5.457492519 :=
x5 .2000000000 :=
k2 6.232391622 :=
yb5 1.892961856 :=
e5 .003196544 14.4 Método de Taylor de orden 2.
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y)
> Fx:=unapply(diff(F(x,y),x),x,y);# función derivada parcial respecto de x Fy:=unapply(diff(F(x,y),y),x,y);# función derivada parcial respecto de y for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j)+h^2/2*(Fx(x.j,yb.j)+Fy(x.j,yb.j)*F(x.j,yb.j));
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
Fx 3 :=
Fy 3 , ,
***** Fase 0 ******
:=
yb1 1.129600000 :=
x1 .04000000000 :=
e1 .000395803 , ,
***** Fase 1 ******
:=
yb2 1.280773120 :=
x2 .08000000000Page 11
:=
e2 .000892413 , ,
***** Fase 2 ******
:=
yb3 1.456263460 :=
x3 .1200000000 :=
e3 .001509093 , ,
***** Fase 3 ******
:=
yb4 1.659164172 :=
x4 .1600000000 :=
e4 .002268364 , ,
***** Fase 4 ******
:=
yb5 1.892961855 :=
x5 .2000000000 :=
e5 .003196545
Ejercicio 15
Ejercicio 15.1
Resolución del problema de valor inicial.
> edo:=diff(y(x),x)=exp(-2*x)-2*y(x);
:=
edo =
∂
∂
xy x( ) e(−2 x) − 2 ( )y x
> sol:=dsolve({edo,y(0)=1},y(x));
:=
sol y x( ) = e(−2 x)x + e(−2 x) Definimos función f(x) con la solución.
> f:=unapply(rhs(sol),x);
:=
f x → e(−2 x)x + e(−2 x) Representación gráfica en el intervalo [0,0.5].
> plot(f(x),x=0..0.5,y=0..1.5);
x 0.3 0.4 0.5
0.2 0.1
y 1.4 1.2 1 0.8 0.6 0.4 0.2
0
14.2 Método de Euler.
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y) .
> F:=(x,y)->exp(-2*x)-2*y;
yb0:=1.;#valor inicial a:=0;
b:=0.5;
n:=5;
h:=(b-a)/n;
x0:=a;
for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j);
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
F (x y, ) → e(−2 x) − 2 y :=
yb0 1.
:=
a 0 :=
b .5 :=
n 5 Page 12
:=
h .1000000000 :=
x0 0 , ,
***** Fase 0 ******
:=
yb1 .9000000000 :=
x1 .1000000000 :=
e1 .0006038284 , ,
***** Fase 1 ******
:=
yb2 .8018730753 :=
x2 .2000000000 :=
e2 .0025109799 , ,
***** Fase 2 ******
:=
yb3 .7085304648 :=
x3 .3000000000 :=
e3 .0049246621 , ,
***** Fase 3 ******
:=
yb4 .6217055354 :=
x4 .4000000000 :=
e4 .0073550143 , ,
***** Fase 4 ******
:=
yb5 .5422973247 :=
x5 .5000000000 :=
e5 .0095218371 14.3 Método de Euler modificado .
> for j from 0 to n-1 do
`***** Fase`,j,`******`;
k1:=F(x.j,yb.j);
x.(j+1):=x.j+h;
k2:=F(x.(j+1),yb.j+h*k1);
yb.(j+1):=yb.j+h/2*(k1+k2);
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
, ,
***** Fase 0 ******
:=
k1 -1.
:=
x1 .1000000000 :=
k2 -.9812692469 :=
yb1 .9009365377 :=
e1 .0003327093 , ,
***** Fase 1 ******
:=
k1 -.9831423219 :=
x2 .2000000000 :=
k2 -.9349245650 :=
yb2 .8050331934 :=
e2 .0006491382 , ,
***** Fase 2 ******
:=
k1 -.9397463410 :=
x3 .3000000000 :=
k2 -.8733054829 :=
yb3 .7143806022 :=
e3 .0009254753 , ,
***** Fase 3 ******
:=
k1 -.8799495679 :=
x4 .4000000000 :=
k2 -.8034423269 Page 13
:=
yb4 .6302110075 :=
e4 .0011504578 , ,
***** Fase 4 ******
:=
k1 -.8110930509 :=
x5 .5000000000 :=
k2 -.7303239638 :=
yb5 .5531401568 :=
e5 .0013209950 14.4 Método de Taylor de orden 2 .
Usamos F(x,y) para la función de la ecuación en forma normal y'=F(x,y).
> Fx:=unapply(diff(F(x,y),x),x,y);# función derivada parcial respecto de x Fy:=unapply(diff(F(x,y),y),x,y);# función derivada parcial respecto de y for j from 0 to n-1 do
`***** Fase`,j,`******`;
yb.(j+1):=yb.j+h*F(x.j,yb.j)+h^2/2*(Fx(x.j,yb.j)+Fy(x.j,yb.j)*F(x.j,yb.j));
x.(j+1):=x.j+h;
e.(j+1):=abs(yb.(j+1)-f(x.(j+1)));# Errores de truncamiento od;
:=
Fx (x y, ) → −2 e(−2 x) :=
Fy -2 , ,
***** Fase 0 ******
:=
yb1 .9000000000 :=
x1 .1000000000 :=
e1 .0006038284 , ,
***** Fase 1 ******
:=
yb2 .8034984602 :=
x2 .2000000000 :=
e2 .0008855950 , ,
***** Fase 2 ******
:=
yb3 .7124943411 :=
x3 .3000000000 :=
e3 .0009607858 , ,
***** Fase 3 ******
:=
yb4 .6281502906 :=
x4 .4000000000 :=
e4 .0009102591 , ,
***** Fase 4 ******
:=
yb5 .5510295554 :=
x5 .5000000000 :=
e5 .0007896064
>
Page 14