Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Metodos Numericos2222
Metodos Numericos2222
% explicitos
% condiciones de integracion
% inicial y final
tspan=[0 3];
yo = 2;
h = 0.5;
% la solucion exacta
Te = tspan(1):h:tspan(2);
Ye = yex(Te);
[Tnum1,Ynum1] = euler_simple(@yprima,tspan,h,yo);
er(1)=erms(Ynum1,Ye);
%% resolver EDO mediante metodo de Euler mejorado
[Tnum2,Ynum2] = euler_mejorado(@yprima,tspan,h,yo);
er(2)=erms(Ynum2,Ye);
[Tnum3,Ynum3] = RK4(@yprima,tspan,h,yo);
er(3)=erms(Ynum3,Ye);
%% graficar
figure(1)
plot(Te,Ye,'.-k','LineWidth',1.5,'MarkerSize',10)
hold on
plot(Tnum1,Ynum1,'*--b','LineWidth',1.5)
plot(Tnum2,Ynum2,'o--r','LineWidth',1.5)
plot(Tnum3,Ynum3,'s--m','LineWidth',1.5)
grid on
xlabel('t'); ylabel('y');
set(gca,'FontSize',20)
%% FUNCIONES
function er = erms(Ynum,Yex)
er = (sum((Ynum-Yex).^2)/length(Yex))^0.5;
end
function yp = yprima(t,y)
yp = t^2-y+2;
end
y = t.^2-2*t-2*exp(-t)+4;
end
function[Tnum,Ynum] = euler_simple(yprima,tspan,h,yo)
% INPUTS
% h = delta t;
% OUTPUTS
Tnum = tspan(1):h:tspan(2);
% numero de iteraciones
nmax = length(Tnum);
% inicializar Ynum
Ynum = NaN(1,nmax);
Ynum(1) = yo;
for n=1:nmax-1
cambio = yprima(Tnum(n),Ynum(n))*h;
Ynum(n+1)=Ynum(n)+cambio;
end
end
% funcion Euler mejorado
function[Tnum,Ynum] = euler_mejorado(yprima,tspan,h,yo)
% INPUTS
% h = delta t;
% OUTPUTS
Tnum = tspan(1):h:tspan(2);
% numero de iteraciones
nmax = length(Tnum);
% inicializar Ynum
Ynum = NaN(1,nmax);
Ynum(1) = yo;
for n=1:nmax-1
cambio = (k1+k2)*h/2;
Ynum(n+1)=Ynum(n)+cambio;
end
end
% INPUTS
% h = delta t;
% OUTPUTS
Tnum = tspan(1):h:tspan(2);
% numero de iteraciones
nmax = length(Tnum);
% inicializar Ynum
Ynum = NaN(1,nmax);
Ynum(1) = yo;
for n=1:nmax-1
k3 = yprima(Tnum(n)+h/2,Ynum(n)+k2*h/2);
k4 = yprima(Tnum(n)+h,Ynum(n)+k3*h);
cambio = (k1+2*k2+2*k3+k4)*h/6;
Ynum(n+1)=Ynum(n)+cambio;
End
end