1. ESCUELA SUPERIOR POLITÉCNICA
DE CHIMBORAZO
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA
CARRERA DE ELECTRÓNICA Y AUTOMATIZACIÓN
TEMA 23:
Método de Euler
Ing. Andrés Morocho Caiza
2. Método de Euler
Conocido también como método de la recta tangente. Se dedica a la solución de ecuaciones diferenciales
ordinarias EDO, de la forma:
𝑑𝑦
𝑑𝑥
= 𝑓 𝑥, 𝑦
Donde la estimación de la solución a la EDO está determinada por:
𝑦𝑖+1 = 𝑦𝑖 + 𝑓 𝑥𝑖, 𝑦𝑖 ℎ
3. Programación método de Euler
%% Método de Euler para resolver una EDO
clc; clear; format long; close all;
h = 0.1; x = 0:h:1.5; yr = exp(x.^2);
y = zeros(size(x)); y(1)=1;
f = @(x,y) 2*x*y;
N = length(x);
for k = 1:N-1
Dy = f(x(k),y(k));
y(k+1) = y(k) + h*Dy;
end
plot(x,yr,'-r',x,y,'-b');
legend('Y-real','Y-Euler'); grid on;
4. Método de Euler Mejorado (Modificado)
Conocido también como método de Heun. Se dedica a la solución de ecuaciones diferenciales ordinarias
EDO, de la forma:
𝑑𝑦
𝑑𝑥
= 𝑓 𝑥, 𝑦
Donde la estimación de la solución a la EDO parte del método de Euler:
𝑦𝑖+1 = 𝑦𝑖 + 𝑓 𝑥𝑖, 𝑦𝑖 ℎ
Mejorando el resultado con:
𝑦𝑖+1 = 𝑦𝑖 +
ℎ
2
𝑓 𝑥𝑖, 𝑦𝑖 + 𝑓(𝑥𝑖+1, 𝑦𝑖+1)
𝑦𝑖+1 = 𝑦𝑖 +
ℎ
2
𝑓 𝑥𝑖, 𝑦𝑖 + 𝑓 𝑥𝑖 + ℎ, 𝑦𝑖 + ℎ𝑓 𝑥𝑖, 𝑦𝑖
En resumen:
𝑦𝑒 = 𝑦𝑖 +𝑓 𝑥𝑖, 𝑦𝑖 ℎ
𝑦𝑒𝑚 = 𝑦𝑖 +
ℎ
2
𝑓 𝑥𝑖, 𝑦𝑖 + 𝑦𝑒
5. Programación método de Euler Mejorado
%% Metodo de Euler Mejorado para resolver una EDO
clc; clear; format long; close all;
h = 0.1; x = 0:h:1.5; yr = exp(x.^2);
y = zeros(size(x)); y(1)=1;
f = @(x,y) 2*x*y; N = length(x);
for k = 1:N-1
Dy = f(x(k),y(k));
ye = y(k) + h*Dy;
y(k+1) = y(k)+h/2*( Dy + f(x(k)+h,ye) );
end
plot(x,yr,'-r',x,y,'-b’);
legend('Y-real','Y-EuMej'); grid on;
6. Método de Runge-Kutta tercer orden
La versión común que se obtiene es:
𝑦𝑖+1 = 𝑦𝑖 +
ℎ
6
𝑘1 + 4𝑘2 + 𝑘3
Donde:
𝑘1 = 𝑓 𝑥𝑖, 𝑦𝑖
𝑘2 = 𝑓 𝑥𝑖 +
ℎ
2
, 𝑦𝑖 +
ℎ
2
𝑘1
𝑘3 = 𝑓 𝑥𝑖 + ℎ, 𝑦𝑖 − ℎ𝑘1 + 2ℎ𝑘2
7. Programación método de Runge-Kutta orden 3
%% Método de Runge-Kutta orden 3 para resolver una EDO
clc; clear; format long; close all;
h = 0.1; x = 0:h:1.5; yr = exp(x.^2);
y = zeros(size(x)); y(1)=1;
f = @(x,y) 2*x*y;
N = length(x);
for k = 1:N-1
k1 = f(x(k),y(k));
k2 = f(x(k)+h/2,y(k)+h/2*k1);
k3 = f(x(k)+h,y(k)-h*k1+2*h*k2);
y(k+1) = y(k) + h/6*(k1+4*k2+k3);
end
plot(x,yr,'-r',x,y,'-b');
legend('Y-real',’Y-RK3'); grid on;
8. Método de Runge-Kutta cuarto orden
La versión común que se obtiene es:
𝑦𝑖+1 = 𝑦𝑖 +
ℎ
6
𝑘1 + 2𝑘2 + 2𝑘3 + 𝑘4
Donde:
𝑘1 = 𝑓 𝑥𝑖, 𝑦𝑖
𝑘2 = 𝑓 𝑥𝑖 +
ℎ
2
, 𝑦𝑖 +
ℎ
2
𝑘1
𝑘3 = 𝑓 𝑥𝑖 +
ℎ
2
, 𝑦𝑖 +
ℎ
2
𝑘2
𝑘4 = 𝑓 𝑥𝑖 + ℎ, 𝑦𝑖 + ℎ𝑘3
9. Programación método de Runge-Kutta orden 4
%% Método de Runge-Kutta orden 4 para resolver una EDO
clc; clear; format long; close all;
h = 0.1; x = 0:h:1.5; yr = exp(x.^2);
y = zeros(size(x)); y(1)=1;
f = @(x,y) 2*x*y;
N = length(x);
for k = 1:N-1
k1 = f(x(k),y(k));
k2 = f(x(k)+h/2,y(k)+h/2*k1);
k3 = f(x(k)+h/2,y(k)+h/2*k2);
k4 = f(x(k)+h,y(k)+h*k3);
y(k+1) = y(k) + h/6*(k1+2*k2+2*k3+k4);
end
plot(x,yr,'-r',x,y,'-b');
legend('Y-real','Y-RK4'); grid on;