Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Método de Euler
Ecuación a trabajar:
Condiciones iniciales:
ecu_dif(x) =
cod= y(0)==1
cod =
Sol_analitica=dsolve(ecu_dif,cod)
Sol_analitica =
f =
Inline function:
f(x,y) = 2*x*y
y0=1;
x0=0;
h=0.2;
%Iteración 1
y1=y0+h*f(x0,y0);
1
x1=x0+h;
%Iteración 2
y2=y1+h*f(x1,y1);
x2=x1+h;
%Iteración 3
y3=y2+h*f(x2,y2);
x3=x2+h;
%Iteración 4
y4=y3+h*f(x3,y3);
x4=x3+h;
%Iteración 5
y5=y4+h*f(x4,y4);
x5=x4+h;
Eux=[x1 x2 x3 x4 x5]
Eux = 1×5
0.2000 0.4000 0.6000 0.8000 1.0000
Euy=[y1 y2 y3 y4 y5]
Euy = 1×5
1.0000 1.0800 1.2528 1.5535 2.0506
hold on
plot(Eux,Euy,'m-')
%error
Valor_real=subs(Sol_analitica,x5)
Valor_real =
Valor_aprox=Euy(end)
Valor_aprox = 2.0506
error_abs=abs(Valor_real-Valor_aprox);
error_abs =
error_rel=error_abs/Valor_real;
error=vpa(error_rel,4)
error =
%Iteración 1
2
k1=y0+h*f(x0,y0);
y1=y0+h/2*(f(x0,y0)+f(x0+h,k1));
x1=x0+h;
%iteración 2
k1=y1+h*f(x1,y1);
y2=y1+h/2*(f(x1,y1)+f(x1+h,k1));
x2=x1+h;
%Iteración 3
k1=y2+h*f(x2,y2);
y3=y2+h/2*(f(x2,y2)+f(x2+h,k1));
x3=x2+h;
%Iteracion 4
k1=y3+h*f(x3,y3);
y4=y3+h/2*(f(x3,y3)+f(x3+h,k1));
x4=x3+h;
%Iteración 5
k1=y4+h*f(x4,y4);
y5=y4+h/2*(f(x4,y4)+f(x4+h,k1));
x5=x4+h;
Euxm=[x1 x2 x3 x4 x5]
Euxm = 1×5
0.2000 0.4000 0.6000 0.8000 1.0000
Euym=[y1 y2 y3 y4 y5]
Euym = 1×5
1.0400 1.1715 1.4282 1.8830 2.6814
hold on
plot(Euxm,Euym,'r-')
legend('Solución analítica', 'Metodo de Euler','Metodo de Euler modificado')
Valor_real=subs(Sol_analitica,x5);
Valor_aprox=Euym(end);
3
error_abs=abs(Valor_real-Valor_aprox);
error_rel=error_abs/Valor_real;
error=vpa(error_rel,4)
error =
x1 = 0
y1(1)=1
y1 = 1
xf=1;
h=0.2;
n=(xf-x1(1))/h
n = 5
for i=1:1:n
k1=y1(i)+h*f(x1(i),y1(i));
y1(i+1)=y1(i)+h/2*(f(x1(i),y1(i))+f(x1(i)+h,k1))
x1(i+1)=x1(i)+h
end
y1 = 1×2
1.0000 1.0400
x1 = 1×2
0 0.2000
y1 = 1×3
1.0000 1.0400 1.1715
x1 = 1×3
0 0.2000 0.4000
y1 = 1×4
1.0000 1.0400 1.1715 1.4282
x1 = 1×4
0 0.2000 0.4000 0.6000
y1 = 1×5
1.0000 1.0400 1.1715 1.4282 1.8830
x1 = 1×5
0 0.2000 0.4000 0.6000 0.8000
y1 = 1×6
1.0000 1.0400 1.1715 1.4282 1.8830 2.6814
x1 = 1×6
0 0.2000 0.4000 0.6000 0.8000 1.0000
Valor_real=subs(Sol_analitica,x1(end));
Valor_aprox=y1(end);
error_abs=abs(Valor_real-Valor_aprox);
error_rel=error_abs/Valor_real;
error=vpa(error_rel,4)
error =