Está en la página 1de 3

Euler implicito y explicito

Aqui en la sgte lista de comandos se ve como usar el metodo de euler(explicito e implicito), en la forma que
sale en las diapositivas de MdP semana 4:

close all;
clear all;
clc

%euler explicito , este el metodo de euler que vimos en nuemerico


h = 1;
tk = 0:h:20; % discretizacion del tiempo
% Notar que supusieron que t0 = 0
%Consideramos que el vector x1 y x2 estan en memoria
x1(1) = 4; % condicion inicial, la primera compoenete de mi vector de salida
x2(1) = 4;
lambda = -0.2;
% euler explicito
for k=1:length(tk)-1
x1(k*h+h) = x1(k*h)*(1+lambda*h);
end

% euler implicito
for k=1:length(tk)-1
x2(k*h+h) = x2(k*h)/(1-lambda*h);
end

plot(tk,x1,'--b',tk,x2,'--r')
hold on ;
fplot(@(t)4*exp(lambda*t),[0,20])% solucion exacta
grid on
xlabel('t')
ylabel('x')
legend('euler explicito','euler implicito','sol. exacta')

1
La otra manera equivalente de hacerlo es como se dijo en numerico, dicho codigo es:

close all;
clear all;
clc

%euler explicito , este el metodo de euler que vimos en nuemerico


h = 1;
x = 0:h:20;
y(1) = 4; % condicion inicial, la primera compoenete de mi vector de salida
u(1) = 4;
lambda = -0.2;
for i = 2:length(x)
y(i) = y(i-1) + h*lambda*y(i-1);
end
for i=2:length(x)
u(i) = u(i-1)/(1-h*lambda) ;
end

plot(x,y,'b-')
y1 = 4*exp(lambda*x);
hold on ;
plot(x,y1,'r')
plot(x,u,'c')
hold off;

grid on

2
xlabel('x')
ylabel('y')
legend('eueler explicito','y(x)','euler implicito')

También podría gustarte