Université A.
Mira de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
TD n°2
Résolution Numérique des Equations Différentielles
Exercice 1
Trouver par les méthodes (Euler, point milieu, Euler modifié et Runge-kutta d’ordre 4) la solution de l’équation
suivante:
y (t ) = − y (t ) + t + 1
on prend h = 0.1
y (0) = 1
• Sur un tableau, écrire les résultats obtenus pour chaque méthode (6 itérations) en calculant l’erreur relative
sachant que la solution analytique est : y(t ) = e−t + t .
• Donner l’algorithme de chaque méthode.
Exercice 2
• Trouver la solution de l’équation différentielle suivante :
y (t ) = 2ty (t ) + 2 y (t )
y (0) = 1, y (0) = 0
• Proposer l’algorithme de résolution.
Exercice 3
Soit le système électrique schématisé par la figure (fig.1).
Fig.1
• Proposer la procédure qui permet de trouver le courant électrique aux instants 0.1s et 0.2s et 0.3s,
sachant que la condition initiale au problème est i(o)=0A.
Mme ABDELLI.R Page 1
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
RAPPEL
( t0 , y0 ) donné
• Méthode d’Euler :
yn +1 = yn + hf (tn , yn )
( t0 , y0 ) donné
h
Méthode du point milieu : yn +1 = yn + 2 f ( tn , yn )
*
•
h
yn +1 = yn + hf tn + , yn* +1
2
( t0 , y0 ) donné
yn +1 = yn + hf ( tn , yn )
*
• Méthode d’Euler-Cauchy (Euler modifié):
h
(
yn +1 = yn + 2 f (tn , yn ) + f (tn +1 , yn +1 )
*
)
k1 = hf (tn , yn )
k
h
k2 = hf (tn + , yn + 1 )
2 2
h k
k3 = hf (tn + , yn + 2 )
• Méthode de Runge-Kutta d’ordre4: 2 2
k4 = hf (tn + h, yn + k3 )
y = y + 1 ( k + 2k + 2k + k )
n +1 n
6
1 2 3 4
tn +1 = tn + h
Solution
Exo 1
L’objectif de cet exercice est de comparer entre les différentes méthodes de résolution des équations différentielles
les plus utilisées commençant par la méthode d’Euler qui est une méthode classique est basique mais qui reste
moins précise par rapport aux deux autres méthodes d’Euler avancées à savoir la méthode du point milieu et
d’Euler modifié. Ces méthodes sont précises mais leur principal inconvénient est la dépendance vis-à-vis le pas du
calcul, à l’inverse de la méthode de Runge Kutta qui est moins sensible au choix du pas puisqu’elle est d’ordre
supérieur de précision, ce qui nous permettra de choisir un pas assez grand pour R-K-4 par rapport aux 2 autres
méthodes d’Euler.
Méthode d’Euler
y(0.1) y(0) + 0.1(− y(0) + 0 + 1) 1
y(0.2) y(0.1) + 0.1(− y(0.1) + 0.1 + 1) 1.01
Méthode d’Euler modifié
Mme ABDELLI.R Page 2
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
y* (0.1) y (0) + 0.1(− y (0) + 0 + 1) 1
0.1
y (0.1) y (0) + (− y (0) + 0 + 1) + (− y* (0.1) + 0.1 + 1 1.005
2
y* (0.2) y (0.1) + 0.1(− y (0.1) + 0.1 + 1) 1.0145
0.1
y (0.2) = y (0.1) + (− y (0.1) + 0.1 + 1) + (− y* (0.2) + 0.2 + 1 1.019025
2
Méthode du point milieu
y* (0.1) y (0) + 0.05(− y (0) + 0 + 1) 1
* 0.1
y (0.1) y (0) + 0.1 − y (0.1) + 2 + 1 1.005
y (0.2) y (0.1) + 0.05(− y (0.1) + 0.1 + 1) 1.00975
*
*
y (0.2) y (0.1) + 0.1 − y (0.2) + 0.15 + 1 1.019025
Méthode de Runge Kutta d’ordre 4
Pour y(0.1)
k1 = 0.1(− y (0) + 0 + 1) = 0
k 2 = 0.1 −( y (0) + 0 ) + 0.05 + 1 = 0.005
2
0.005
k 3 = 0.1 −( y (0) + ) + 0.05 + 1 = 0.00475
2
k 4 = 0.1 −( y (0) + 0.00475) + 0.1 + 1 = 0.009525
1
y (0.1) y (0) + 0 + 2(0.005 + 0.00475) + 0.009525 = 1.0048375
6
Pour y(0.2)
k1 = 0.1(− y (0.1) + 0.1 + 1) = 0.00951625
k 2 = 0.1 −( y (0.1) + k1) + 0.15 + 1 = 0.014040437
2
k2
k 3 = 0.1 −( y (0.1) + ) + 0.15 + 1 = 0.013814228
2
k 4 = 0.1 −( y (0.1) + k 3) + 0.2 + 1 = 0.018134827
1
y (0.2) y (0.1) + 0 + 2(k 2 + k 3) + k 4 = 1.018730901
6
On continue les calculs et on trace le tableau :
Euler Euler modifié Point milieu R-K-4 Solution analytique
Y(0.1) 1 1.005 1.005 1.0048375 1.004837418036
Y(0.2) 1.01 1.019025 1.019025 1.018730901406 1.018730753078
Y(0.3) 1.029 1.041217625 1.041217625 1.040818422001 1.040818220681
Mme ABDELLI.R Page 3
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
Y(0.4) 1.0561 1.070801950625 1.070801950625 1.070320288917 1.070320046035
Y(0.5) 1.09049 1.107075765316 1.107075765316 1.106530934423 1.106530659712
Y(0.6) 1.131441 1.149403567611 1.149403567611 1.148811934376 1.148811636094
On peut remarquer que la méthode de R-K-4 est la plus précise (méthode d’ordre 4) , les deux
méthodes d’Euler modifié et du point milieu donnent des résultats très satisfaisants (méthodes
d’ordre 2) mais la méthode d’Euler n’est pas du tout précise (méthode seulement d’ordre 1).
Les algorithmes
On déclare une fonction f dans un script à part (le script doit être
appelé f) :
function a=f(t,y)
a=-y+t+1;
end
Les scripts principaux correspondant à chaque méthode :
• Méthode d’Euler
a=input('donner a=') %On donne les bornes de l’intervalle de temps
b=input('donner b=')
n=input('donner n=') %on précise le nombre de points
h=(b-a)/n; % on calcule le pas
y(1)=input('donner la condition initiale')
t(1)=a;
for i=2:n+1 %la boucle de remplissage des vecteurs
t(i)=t(i-1)+h;
y(i)=y(i-1)+h*f(t(i-1),y(i-1));
end
plot(t,y)
fprintf(' %6.12f',y)
• Méthode d’Euler modifié
a=input('donner a=')
b=input('donner b=')
n=input('donner n=')
h=(b-a)/n;
y(1)=input('donner la condition initiale')
t=a:h:b;
for i=2:n+1
y0=y(i-1)+h*f(t(i-1),y(i-1));
y(i)=y(i-1)+(h/2)*(f(t(i-1),y(i-1))+f(t(i),y0));
end
plot(t,y)
fprintf(' %6.12f',y)
• Méthode du point milieu
a=input('donner a=')
b=input('donner b=')
n=input('donner n=')
h=(b-a)/n;
y(1)=input('donner la condition initiale')
t=a:h:b;
for i=2:n+1
y0=y(i-1)+(h/2)*f(t(i-1),y(i-1));
Mme ABDELLI.R Page 4
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
y(i)=y(i-1)+h*(f(t(i-1)+(h/2),y0));
end
plot(t,y)
fprintf(' %6.12f',y)
• Méthode de Runge-Kutta
a=input('donner a=')
b=input('donner b=')
n=input('donner n=')
h=(b-a)/n;
y(1)=input('donner la condition initiale')
t=a:h:b;
for i=2:n+1
k1=h*f(t(i-1),y(i-1));
k2=h*f((t(i-1)+h/2),(y(i-1)+k1/2));
k3=h*f((t(i-1)+h/2),(y(i-1)+k2/2));
k4=h*f(t(i),(y(i-1)+k3));
y(i)=y(i-1)+(k1+2*k2+2*k3+k4)/6;
end
plot(t,y)
fprintf(' %6.12f',y)
Exo3
Dans cet exercice, on étudiera un simple circuit électrique dont la recherche du courant
électrique est demandée.
L’écriture de l’équation régissant le fonctionnement de ce circuit nous donne le problème
différentiel de Cauchy suivant :
di (t )
= 100 − 10i (t )
dt
i (0) = 0
Calculer la valeur du courant à l’instant t=0.1s donc i(0.1) ne dit pas automatiquement que le
pas à choisir est 0.1s, la première étape de résolution est le choix d’une précision du calcul
(eps).
On sait bien qu’on ne possède pas la formule donnant la précision en fonction du pas, mais on
sait aussi que :
eps = fonction(hordre )
C’est-à-dire, la précision choisie est une fonction du pas à la puissance de l’ordre de la méthode
choisie, voici un exemple :
On choisit par exemple : eps = 10−16 , il nous reste à déterminer le pas ! mais le choix du pas
dépendra de la méthode choisie !
• Si on choisit la méthode d’Euler modifié ou point milieu, l’ordre=2 donc on prend un
pas : h 10−8 pour garantir une précision avoisinant la précision choisie
• Si on choisit la méthode de Runge Kutta, l’ordre=4 donc on prend un pas : h 10−4 pour
garantir une précision avoisinant la précision choisie
Mme ABDELLI.R Page 5
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
Un autre critère aussi important et nécessaire à prendre en considération est les périodes des
signaux à calculer. Lorsqu’il s’agit par exemple d’un courant alternatif de fréquence 50Hz (la
période est 0.02s), on ne peut, en aucun cas, prendre le pas de calcul égal à 0.02s ou 0.01s, il
faut au moins diviser cette période sur 10 ou 20 comme valeur maximale du pas à choisir.
Conclusion : dans un système en ELT, on choisit toujours des pas de calcul très petits par
rapport à la plus petite période du système (donc la plus grande fréquence dans le système
comme la fréquence de la poteuse dans le cas de la commande MLI) en tenant compte toujours
de la précision imposée comme déjà mentionné.
Exo 2
Le problème à résoudre est :
y ''(t ) = 2ty '(t ) + 2 y (t )
y (0) = 1, y '(0) = 0
u1 (t ) = y (t ) u1 '(t ) = y '(t ) = u2 (t )
On prend :
u2 (t ) = y '(t )
Donc le nouveau problème à résoudre est donné par :
u1 '(t ) = u2 (t )
u2 '(t ) = 2t.u2 (t ) + 2u1 (t )
u (0) = 1, u (0) = 0
1 2
On utilise bien sur la méthode de Runge-Kutta avec un pas h quelconque :
Pour calculer y(h), on aura deux étapes :
u2 ( h ) = ?
k1 = h. ( 2*0* u2 (0) + 2u1 (0) )
u1 (h) = ?
k2 = h. 2* 0 + * u2 (0) + 1 + 2u1 (0)
h k
k1 = h.u2 (0) = 0
2 2
k2 = h.u2 (0) = 0
h k2
k3 = h.u2 (0) = 0 k3 = h. 2* 0 + * u2 (0) + + 2u1 (0)
k = h.u (0) = 0 2 2
4 2 k = h. ( 2* ( 0 + h ) * ( u (0) + k ) + 2u (0) )
u1 (h) = u1 (0) + hu2 (0) = 1 4 2 3 1
1
u2 (h) = u2 (0) + ( k1 + 2k2 + 2k3 + k4 )
6
L’algorithme avec la méthode de Runge-Kutta d’ordre 4 est donc :
• Méthode de Runge-Kutta
On déclare une fonction f dans un script à part :
function a=f(t,u1,u2)
a=2*t*u2+2*u1 ;
end
Mme ABDELLI.R Page 6
Université [Link] de BEJAIA
Faculté de Technologie, Département GE
Module UEF 1122
Année 2025/2026
Script principal :
a=input('donner a=')
b=input('donner b=')
n=input('donner n=')
h=(b-a)/n;
u1(1)=input('donner la condition initiale de la fonction y')
u2(1)=input('donner la condition initiale de la dérivée de la fonction y')
t=a:h:b;
for i=2:n+1
u1(i)=u1(i-1)+h*u2(i-1);
k1=h*f(t(i-1),u1(i-1),u2(i-1));
k2=h*f((t(i-1)+h/2),u1(i-1),(u2(i-1)+k1/2));
k3= h*f((t(i-1)+h/2),u1(i-1),(u2(i-1)+k2/2));
k4= h*f((t(i-1)+h),u1(i-1),(u2(i-1)+k3));
u2(i)=u2(i-1)+(k1+2*k2+2*k3+k4)/6;
end
plot(t,u1)
fprintf(' %6.12f',u1)
Mme ABDELLI.R Page 7