Beruflich Dokumente
Kultur Dokumente
RUNGE-KUTTA
Adolfo Foriero, ing., Ph.D.
dy ( t )
= f t , y ( t ) dans a t b, avec y ( a ) = c
dt
Algorithme de base:
1. Dfinir les valeurs initiales des variables impliques dans les calculs.
2. Calculer la solution du premier point de lintervalle.
3. Calculer subsquemment la solution aux autres points.
4. Dfinir un critre de convergence pour arrter lalgorithme.
5. Sortir un tableau de valeurs et un graphique dcrivant la solution.
Organigramme MATLAB pour la
mthode de Runge-Kutta du
quatrime ordre
Runge_Kutta4
Dfinition de
lquation rsoudre
h=(b-a)/(n-1)
t(1)=a, y(1)=y0
vocation de la
fonction Assignation
Runge_Kutta4 t t+h
y = y+(K1 + K2 + K3 + K4 )/6
Oui
Retour
function [t,y]=Runge_Kutta4(a,b,y0,n) function y_prime=func(tt,yy) function [t,y]=Runge2_Kutta4(a,b,y0,n)
% % %
t=zeros(1,n); y=zeros(1,n); % initialisation y_prime=yy-tt^2+1; t=zeros(1,n); y=zeros(1,n); % initialisation
h=(b-a)/(n-1); h=(b-a)/(n-1);
t(1)=a; y(1)=y0; t(1)=a; y(1)=y0;
% j=1;
for j=1:n-1 %
% while (j <= n-1)
k1=h*func(t(j),y(j)); %
k2=h*func(t(j)+h/2,y(j)+k1/2); k1=h*func(t(j),y(j));
k3=h*func(t(j)+h/2,y(j)+k2/2); k2=h*func(t(j)+h/2,y(j)+k1/2);
k4=h*func(t(j)+h,y(j)+k3); k3=h*func(t(j)+h/2,y(j)+k2/2);
y(j+1)=y(j)+(1/6)*(k1+2*k2+2*k3+k4); k4=h*func(t(j)+h,y(j)+k3);
t(j+1)=t(j)+h; y(j+1)=y(j)+(1/6)*(k1+2*k2+2*k3+k4);
% t(j+1)=t(j)+h;
end
j=j+1;
%
%
end
plot(t,y,'-rs');
%
title('La solution');
plot(t,y,'-rs');
xlabel('Temps');
title('La solution');
ylabel('Valeur de la fonction');
xlabel('Temps');
ylabel('Valeur de la fonction');
Erreur Totale
1.14
Erreur de troncature
Erreur d'arrondissement
1.12
Erreur totale
1.1
1.08
Erreur
1.06
1.04
1.02
1
-3 -2 -1
10 10 10
log(taille de l'incrment)