TP 6 - RK4
TP 6 - RK4
TP 6 - RK4
(Équations différentielles)
Travail demandé :
( ) = ( ), ∈ [ , ]
( )= ,
( )= .
Programme de la méthode de Runge-Kutta d’ordre 4
clear all
clc
%m\'ethode de Runge-Kutta d'ordre 4
% déclaration de la fonction f
f=inline('2*t*y','t','y')
%déclaration des bornes de l'intervalle [a, b]
a = 1 ;
b = 2 ;
%déclaration de la valeur de h
h=0.1;
% les points de discrétisation
n=(b-a)/h;
%initialisation de t
t(1)=a;
% déclaration de la valeur initiale de y0
y(1)=1;
%calcul de la solution
for i = 1:n
%calcul des constantes k_i
k1(i)=h*f(t(i),y(i));
k2(i)=h*f(t(i)+h/2,y(i)+k1(i)/2);
k3(i)=h*f(t(i)+h/2,y(i)+k2(i)/2);
k4(i)=h*f(t(i)+h,y(i)+k3(i));
%calcul des y_{n+1}
y(i+1)=y(i)+(1/6)*(k1(i)+2*k2(i)+2*k3(i)+k4(i));
t(i+1)=t(i)+h;
end
%affichage de la solution
disp('la solution est :')
y
% afficahge du temps (les points qui correspondent à la solution y)
t
%déclaration de la solution exacte (objectif: comparaison avec la solution
trouvée)
t = a:h:b;
ye=exp(t.^2-1);
%graphe de la solution de RK4 et la solutionexacte
fs=15;
hold on
plot(t,ye,'r','linewidth',2)
plot(t,y,'o','linewidth',2)
box on
xlabel ('t','fontsize',fs)
ylabel('y(t)','fontsize',fs)
legend('solution exacte','solution RK4')
y=
1.0000 1.2337 1.5527 1.9937 2.6116 3.4902 4.7586 6.6188 9.3923 13.5969 20.0813
t=
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000