Vous êtes sur la page 1sur 1

%Comparaison de différentes méthodes numériques, Euler explicite, Runge Kuta

2, Runge
%kuta 4,implicite.
clear all
clc
%Les données de problème
C0=1; % ug/L
kd=1; %mois-1
dt=0.2; %pas de temps
n=[0:dt:2];
% analytique
t=[0:0.01:6];
C=C0*exp(-kd*t)

%Euler explicite
Cr(1)=C0;
for i=1:length(n)-1
Cr(i+1)=Cr(i)*(1-kd*dt)
end
%Runge Kuta 2
Ck2(1)=C0
for k=1:length(n)-1
Ck2(k+1)=Ck2(k)-kd*dt*(1-dt*kd/2)*Ck2(k)
end
%Runge Kutta 4
Ck4(1)=C0
for k=1:length(n)-1
Ck4(k+1)=Ck4(k)-kd*dt*(1-dt*kd/2+(kd*dt)^2/6-(kd*dt)^3/24)*Ck4(k)
end
%implicite
Ci(1)=C0;
for i=1:length(n)-1
Ci(i+1)=Ci(i)/(1+kd*dt)
end
% t=[0:0.01:6];
% Ci=C0*exp(-kd*t)
hold on
plot(n,Cr,'r*',n,Ck2,'bo',n,Ck4,'g*',n,Ci,'b*');
plot(n,C,'c*');
grid
xlabel('temps (mois)')
ylabel('concentration ug/l')
legend('annalytique','Euler Explicite','Runge K2','Runge K4','implicite')

Vous aimerez peut-être aussi