El documento describe el método de Euler hacia adelante y el método predictor-corrector para resolver ecuaciones diferenciales. El método de Euler calcula iterativamente cada paso agregando el cambio estimado, mientras que el método predictor-corrector mejora la estimación usando dos derivadas, una al inicio y otra al final del intervalo. El documento presenta un ejemplo numérico resolviendo una ecuación diferencial específica y comparando los resultados de los métodos con la solución exacta.
1. TEMA:
MÉTODO DE EULER HACIA ADELANTE
MÉTODO DE DIFERENCIAS FINITAS
M.C. RAÚL DEL ÁNGEL SANTOS SERENA
2. Método de Euler hacia adelante:
El método de Euler hacia adelante para la ecuación y’=f(y,t) se obtiene reescribiendo la
aproximación por diferencias hacia adelante.
𝑦 𝑛+1 − 𝑦 𝑛
ℎ
≃ 𝑦 𝑛
′
𝐸𝑐. 1
como
𝑦 𝑛+1 = 𝑦 𝑛 + ℎ𝑓(𝑦 𝑛, 𝑡 𝑛) 𝐸𝑐. 2
Donde se usa 𝑦 𝑛
′
= 𝑓( 𝑦 𝑛, 𝑡 𝑛). Mediante la Ec. 2, se calcula 𝑦 𝑛 en forma recursiva como
𝑦1 = 𝑦0 + ℎ𝑦0
′
= 𝑦0 + ℎ𝑓(𝑦0, 𝑡0)
𝑦2 = 𝑦1 + ℎ𝑓(𝑦1, 𝑡1)
𝑦3 = 𝑦2 + ℎ𝑓(𝑦2, 𝑡2)
.
.
.
𝑦 𝑛 = 𝑦 𝑛−1 + ℎ𝑓(𝑦 𝑛−1, 𝑡 𝑛−1)
Problema 1:
a) Resuelva el siguiente problema en 0 ≤ t ≤ mediante el método predictor-corrector o
Euler modificado con h=0.01 y h=0.01 (escriba su propio script ya sea en OCTAVE
o EXCEL). Evalúe los errores resultantes (en forma gráfica y tabulada) usando la
solución exacta proporcionada en la tabla mostrada abajo:
𝑦′′
− 0.01( 𝑦′)2
+ 2𝑦 = 𝑠𝑒𝑛( 𝑡), 𝑦(0) = 0, 𝑦′(0) = 1
Tabla 1.- Datos Solución Exacta
Datos solución exacta
t y
0 0.0000
1 0.8450
2 0.9135
3 0.1412
4 -0.7540
5 -0.9589
3. SOLUCIÓN 1:
𝑑2
𝑦
𝑑𝑡2
− 0.01 (
𝑑𝑦
𝑑𝑡
)
2
+ 2𝑦 = 𝑠𝑒𝑛( 𝑡)
Según el método de Euler y’=f(y,t)
𝑦′
= 𝑓(𝑡, 𝑦)
𝑑𝑦
𝑑𝑡
= 𝑣
Por lo que:
𝑑2
𝑦
𝑑𝑡2
− 0.01 (
𝑑𝑦
𝑑𝑡
)
2
+ 2𝑦 = 𝑠𝑒𝑛( 𝑡)
𝑑𝑣
𝑑𝑡
( 𝑣)2
Tenemos:
𝑑𝑣
𝑑𝑡
− 0.01( 𝑣)2
+ 2𝑦 = 𝑠𝑒𝑛( 𝑡)
𝑑𝑣
𝑑𝑡
= 𝑠𝑒𝑛( 𝑡) + 0.01( 𝑣)2
− 2𝑦
𝒚 𝒏+𝟏 = 𝒚 𝒏 + 𝒉𝒇(𝒚 𝒏, 𝒕 𝒏) 𝑬𝒄. 𝟐
Sustituyendo:
𝑦𝑖+1 = 𝑦𝑖 + ℎ𝑓(𝑡𝑖, 𝑦𝑖, 𝑣𝑖)
𝑣𝑖+1 = 𝑣𝑖 + ℎ𝑔(𝑡𝑖, 𝑦𝑖, 𝑣𝑖)
para y(0)=0 ; y’(0)=1 ;
para condiciones cambiaremos la variable y por v
y(0)=0 , Vo = 1 , to = 0
para h=0.1
i=0
𝑦1 = 𝑦0 + ℎ𝑓( 𝑡0, 𝑦0, 𝑣0)
7. A continuación se utiliza el método de Heun para mejorar la estimación de la pendiente
emplea la determinación de dos derivadas en el intervalo (una en el punto inicial y otra en
el final). Las dos derivadas se promedian después con la finalidad de obtener una mejor
estimación de la pendiente en todo el intervalo.
El método de Euler, la pendiente al inicio de un intervalo:
𝑦𝑖
′
= 𝑓( 𝑥𝑖, 𝑦𝑖)
Se utiliza para extrapolar linealmente a 𝑦𝑖+1
𝑦𝑖
0
= 𝑦𝑖 + 𝑓( 𝑥𝑖, 𝑦𝑖)ℎ
En el método estándar de Euler se debería para aquí. Sin embargo, en el método de Heun
la y0
i+1
calculada en la ecuación para extrapolar, no es la respuesta final, sino una
predicción intermedia. Por consiguiente, la distinguimos con un superíndice 0. La ecuación
se llama predictora o simplemente predictor. Da una estimación de yi+1 que permite el
calculo de una estimación de la pendiente al final del intervalo:
𝑦𝑖
′
= 𝑓( 𝑥𝑖, 𝑦𝑖+1
0 )
Asi, se combinan las dos pendientes para obtener una pendiente promedio en el intervalo:
𝑦̅′
=
𝑦𝑖
′
+ 𝑦𝑖+1
′
2
=
𝑓( 𝑥𝑖, 𝑦𝑖) + 𝑓( 𝑥𝑖, 𝑦𝑖+1
0 )
2
Está pendiente promedio se utiliza después para extrapolar linealmente de yi hasta yi+1 con
el método de Euler:
𝑦𝑖+1 = 𝑦𝑖 +
𝑓( 𝑥𝑖, 𝑦𝑖) + 𝑓( 𝑥𝑖, 𝑦𝑖+1
0 )
2
ℎ
Que se conoce como ecuación correctora o simplemente corrector.
El método de Heun es un procedimiento predictor- corrector y es el único método predictor-
corrector de un solo paso.
8. Tabla 3.- Resultados del método predictor corrector:
h= 0.1
n=0 y0 0 v0 1 t0 0
n=10 y10 0.845584364 v10 0.54209364 t10 1
n=20 y20 0.910073442 v20 -
0.42445065
t20 2
n=30 y30 0.135423922 v30 -
0.98803585
t30 3
n=40 y40 -0.753308862 v40 -
0.63772151
t40 4
n=50 y50 -0.945314989 v50 0.28510349 t50 5
Una vez que tenemos los resultados estos se comparan con la solución analítica y se
calcula el error para cada uno:
Tabla 4.- comparativa en h=0.01
Solución Analítica Método de Euler Método Predictor-Corrector
t y y %error y %error
0 0 0 0
1 0.845 0.884059694 4.622448994 0.845584364 0.06915556
2 0.9135 0.97894759 7.164487137 0.910073442 0.37510218
3 0.1412 0.087125912 38.29609632 0.135423922 4.090706776
4 -0.754 -0.933986191 23.87084761 -0.753308862 0.09166291
5 -0.9589 -1.011066363 5.440229742 -0.945314989 1.416728629
9. Grafica comparativa de Solución Analítica, Método de Euler y Método Predictor-Corrector
En esta Grafica se puede apreciar como los datos obtenidos en el cálculo del método de
Euler se alejan de los datos de solución analítica, al realizar el cálculo ahora con el método
predictor corrector o Euler modificado los datos en color rojo se aproximan a la solución
analítica lo que mejora la calidad del resultado y se puede ver como disminuye el porcentaje
de error en la tabla comparativa de h=0.1
Grafica comparativa de Error Solución Analítica VS Método de Euler, Método Predictor-Corrector
-1.5
-1
-0.5
0
0.5
1
1.5
0 1 2 3 4 5 6
Y
T
solucion analitica Met Euler Met Predictor Corrector
0
5
10
15
20
25
30
35
40
45
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
%ERROR
T
% Error Metodo Euler % Error Met Predictor-Corrector
11. Utilizando el método predictor-corrector:
Tabla 6.- Resultados para el método predictor-corrector para h=0.01:
h= 0.01
n=0 y0 0 v0 1 t0 0
n=100 y100 0.845036469 v100 0.54486419 t100 1
n=200 y200 0.913436687 v200 -0.41998637 t200 2
n=300 y300 0.141185689 v300 -0.99136684 t300 3
n=400 y400 -0.75394833 v400 -0.64866061 t400 4
n=500 y500 -0.954300033 v500 0.28098466 t500 5
Una vez que tenemos los resultados estos se comparan con la solución analítica y se
calcula el error para cada uno:
Tabla 7.- comparativa en h=0.01
Solución Analítica Método de Euler Método Predictor-Corrector
t y y %error y %error
0 0 0 0 0 0
1 0.845 0.848907175 0.462387575 0.845036469 0.004315818
2 0.9135 0.919050251 0.607580829 0.913436687 0.006930804
3 0.1412 0.135859043 3.782547115 0.141185689 0.010135405
4 -0.754 -0.768861862 1.971069283 -0.75394833 0.006852807
5 -0.9589 -0.958575583 0.033832172 -0.954300033 0.479712929
12. Gráfica comparativa de Solución Analítica, Método de Euler y Método Predictor-Corrector
En esta Grafica se puede apreciar como los datos obtenidos en el cálculo del método de
Euler a h=0.01 los datos calculados tienen una mejor aproximación a los de la solución
analítica, al realizar el cálculo ahora con el método predictor corrector o Euler modificado
los datos en color rojo se aproximan se observa una disminución en el porcentaje de error
sin embargo el método de Euler sencillo es suficientemente bueno. aun así, el método
predictor-corrector disminuye el porcentaje de error como se puede ver en la sig. Grafica:
Gráfica comparativa de Error Solución Analítica VS Método de Euler, Método Predictor-Corrector
-1.5
-1
-0.5
0
0.5
1
1.5
0 1 2 3 4 5 6
Y
T
solucion analitica Met Euler Met Predictor Corrector
0
0.5
1
1.5
2
2.5
3
3.5
4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
%ERROR
T
% Error Metodo Euler % Error Met Predictor-Corrector
13. =====================================================================
=====================================================================
Problema 2:
b) Resuelva el siguiente problema en 0≤ t ≤ 5 mediante el método de diferencias finitas
con h=0.1 y h=0.01 (escriba su propio script ya sea en OCTAVE o EXCEL). evalúe
los errores resultantes (en forma gráfica y tabulada) usando la solución exacta
proporcionada en la tabla mostrada abajo:
𝑦′′
− 2𝑡𝑦′ + 𝑡𝑦 = 0, 𝑦(0) = 1, 𝑦′(0) = 0
Tabla 8.- Datos Solución Exacta
Datos solución exacta
t y
0 1.0000
1 0.8773
2 0.5372
3 0.3042
4 0.1763
5 0.1035
Método de Diferencias Finitas:
El método de diferencias finitas reemplaza las derivadas en las ecuaciones diferenciales
con aproximaciones de diferencias finitas en cada punto en el intervalo de integración. Esto
convirtiendo las ecuaciones diferencias a un conjunto largo de ecuaciones simultaneas no
lineales. Para usar este método antes se debe tener el conjunto de dos ecuaciones
diferenciales:
𝑑𝑦1
𝑑𝑥
= 𝑓1(𝑥, 𝑦1, 𝑦2)
𝑑𝑦2
𝑑𝑥
= 𝑓2(𝑥, 𝑦1, 𝑦2)
Condiciones fronteras:
𝑦1(𝑥0) = 𝑦1,0
𝑦2(𝑥𝑓) = 𝑦2,𝑓
A Continuación, expresamos las derivadas de y en términos de diferenciales finitas hacia
adelante:
14. 𝑑𝑦1,𝑖
𝑑𝑥
=
1
ℎ
(𝑦1,𝑖+1 − 𝑦1,𝑖) + 𝑂(ℎ)
𝑑𝑦2,𝑖
𝑑𝑥
=
1
ℎ
(𝑦2,𝑖+1 − 𝑦2,𝑖) + 𝑂(ℎ)
Al combinar las ecuaciones obtenemos:
𝑦1,𝑖+1 − 𝑦1,𝑖 = ℎ𝑓1(𝑥, 𝑦1,𝑖, 𝑦2,𝑖)
𝑦2,𝑖+1 − 𝑦2,𝑖 = ℎ𝑓2(𝑥, 𝑦1,𝑖, 𝑦2,𝑖)
Se divide el intervalo de integración en n segmentos de igual longitud. Estas forman un
conjunto de 2n de ecuaciones algebraicas simultaneas no lineales in (2n+2) variables.
SOLUCIÓN 2:
𝑑2
𝑦
𝑑𝑡2
+ 2
𝑑𝑦
𝑑𝑡
+ 𝑡𝑦 = 0
𝑑𝑦
𝑑𝑡
= 𝑣
Por lo que:
𝑑2
𝑦
𝑑𝑡2
+ 2
𝑑𝑦
𝑑𝑡
+ 𝑡𝑦 = 0
𝑑𝑣
𝑑𝑡
𝑣
Tenemos:
𝑑𝑣
𝑑𝑡
+ 2𝑣 + 𝑡𝑦 = 0
𝑑𝑣
𝑑𝑡
= 2𝑣 − 𝑡𝑦
𝑦0 = 1
18. Con la finalidad de comprobar los resultados calculados en la hoja de EXCEL, se procede
a utilizar un código en MATLAB el cual se detalla a continuación:
Código en MATLAB
display ('--------------------------------------------------------------------')
display ('| MÉTODO DE DIFERENCIAS FINITAS HACIA ADELANTE |')
display ('____________________________________________________________________')
display ('--------------------------------------------------------------------')
t(1) = 0;
y(1) = 1.0;
v(1) = 0;
h = 0.1;
%Matriz b y A
b = zeros(100,1);
A = zeros(100,102);
for i=2:51
t(i) = 0.1*(i-1);
end
A(1,1) = -1.0;
A(1,2) = -0.1;
A(1,3) = 1.0;
for i=1:49
A(2*i,2*i-1) = t(i)*h;
A(2*i,2*i) = 0.2*t(i)-1;
A(2*i,2*i+2) = 1.0;
A(2*i+1,2*i+1) = -1.0;
A(2*i+1,2*i+2) = -0.1;
A(2*i+1,2*i+3) = 1.0;
end
A(100,99) = t(50)*0.1;
A(100,100) = 0.2*t(50)-1.0;
A(100,102) = 1.0;
b(1,1) = +1.0;
for i=1:100
k = 1;
for j=3:102
C(i,k) = A(i,j);
k = k + 1;
end
end
x=Cb;
fprintf('h=0.1 n')
fprintf(' RESULTADOS n')
fprintf(' ----------------------------------n');
fprintf(' t v y n');
fprintf(' ----------------------------------n');
fprintf('t %f t %f t %f n',t(1),U(1),y(1));
for i = 1:50
if i==10 || i==20 || i==30 || i==40 || i==50
fprintf('t %f t %f t %f n',t(i+1),x(2*i),x(2*i-1));
end
end
fprintf(' ----------------------------------n');
21. Con la finalidad de comprobar los resultados calculados en la hoja de EXCEL, se procede
a utilizar un código en MATLAB el cual se detalla a continuación:
Código en MATLAB
display ('____________________________________________________________________')
display ('--------------------------------------------------------------------')
display ('| MÉTODO DE DIFERENCIAS FINITAS HACIA ADELANTE |')
display ('____________________________________________________________________')
display ('--------------------------------------------------------------------')
t(1) = 0;
y(1) = 1.0;
v(1) = 0;
h = 0.01;
%Matriz b y A
b = zeros(1000,1);
A = zeros(1000,1002);
for i=2:501
t(i) = h*(i-1);
end
A(1,1) = -1.0;
A(1,2) = -0.01;
A(1,3) = 1.0;
for i=1:499
A(2*i,2*i-1) = t(i)*h;
A(2*i,2*i) = 2*h*t(i)-1;
A(2*i,2*i+2) = 1.0;
A(2*i+1,2*i+1) = -1.0;
A(2*i+1,2*i+2) = -0.01;
A(2*i+1,2*i+3) = 1.0;
end
A(1000,999) = t(500)*h;
A(1000,1000) = 2*h*t(500)-1.0;
A(1000,1002) = 1.0;
b(1,1) = +1.0;
for i=1:1000
k = 1;
for j=3:1002
C(i,k) = A(i,j);
k = k + 1;
end
end
x=Cb;
fprintf('h=0.01 n')
fprintf(' RESULTADOS n')
fprintf(' ----------------------------------n');
fprintf(' t v y n');
fprintf(' ----------------------------------n');
fprintf('t %f t %f t %f n',t(1),U(1),y(1));
for i = 1:500
if i==100 || i==200 || i==300 || i==400 || i==500
fprintf('t %f t %f t %f n',t(i+1),x(2*i),x(2*i-1));
end
end
23. CONCLUSIONES:
• El método de Euler hacia adelante es un método que nos proporciona un algoritmo
para obtener una aproximación a una solución de una ecuación la cual genera un
menor porcentaje de error al aumentar el número de intervalos.
• También se puede aplicar el método de Euler de forma lineal y aplicar un método
predictor-corrector el cual mejora la aproximación de los datos calculados.
• Las diferencias finitas hacia adelante proporcionan de igual forma una aproximación
al cálculo de solución de ecuaciones diferenciales y al aplicar en h=0.1 y h=0.01
mejora la aproximación que podemos notar en las gráficas de comparación de
resultados.
BIBLIOGRAFIA:
1. Shoichiro Nakamura . Métodos numéricos aplicados con software Ed. Pearson
2. Chapra, S. C., & Canale, R. P. (2015). Métodos numéricos para ingenieros
(Séptima edición) Ed. McGraw-Hill.
3. Antonio Nieves Hurtado, Federico C. Dominguez Sanchez. Métodos numéricos
aplicados a la ingenieria (Cuarta edición.). Ed. Patria.
4. Alkis Constantinides & Navid Mostoufi. Numerical Methods for Chemical Engineers
with MATLAB Applications. Ed. Prentice Hall