EXEMPLES DE RESOLUTION NUMERIQUE D’EQUATIONS DIFFERENTIELLES Au cours de la modélisation de la trajectoire d'un obus, nous avons été en présence d'équations différentielles. Nous avons donc réalisé cette page annexe qui présente les principales méthodes de résolution possibles de telles équations. Nous allons ici étudier successivement : - la méthode d'Euler - la méthode d'Euler améliorée - la méthode de Runge Kutta d'ordre 4 1 - La méthode d'Euler La méthode d'Euler est la plus simple des méthodes de résolution d'équations différentielles. Sa simplicité est malheureusement proportionnelle à son imprécision. Cependant, les méthodes plus avancées de résolutions d'équations différentielles s'appuient généralement sur la méthode d'Euler, aussi allons nous décrire-celle-ci. Principe de la méthode : Soit une fonction y(x) et y'(x)=f(x;y) sa dérivée; avec (x0; y0) un point du domaine de l'équation. La méthode d'Euler consiste à approcher la fonction y(x) par une fonction définie par segments. Application : On étudie f sur un intervalle I=[a; b] avec a et b des nombres réels tels que : a=x b=x+n*h ; avec n un entier naturel, et h le pas de temps de l'étude. On subdivise I en n intervalles : [x0; x0+h]; [x0+h; x0+2h]; [x0+2h; x0+3h]; ... ; [x0+(n-1)h; x0+nh] On prend k un entier naturel quelconque compris entre 0 et n. On note : xk=x0+kh yk=y(xk) Ak le point de coordonnées (xk;yk) dans un repère orthonormé C la courbe représentative de y dans le même repère Tk la tangente à C en Ak On veut déterminer les valeurs de xk et yk pour n'importe quel k. Par définition, la tangente à C en A0 a pour équation: T0 : y=y(x0)+(x-x0)y'(x0)=y0+(x-x0)f'(x0;y0) pour x=x1, on a alors: y1=y0+(x1-x0)f(x0;y0) y1=y0+(x0+h-x0)f(x0;y0) y1=y0+h.f(x0;y0) Par un raisonnement analogue, on obtient : T1 : y=y(x1)+(x-x1)y'(x1)=y1+(x-x1)f'(x1;y1) et : y2=y1+h.f(x1;y1) On généralise la relation à tous les k : xk=x0+kh yk=yk-1+h.f(xk-1;yk-1) Etant donné qu'on connaît y0, on peut déterminer par récurrence la valeur de chaque yk On peut ainsi déterminer les coordonnées de chaque points Ak. Exemple : Pour accompagner notre propos, nous avons réalisé un programme (dont vous pouvez voir la source ici) qui résout l'équation différentielle y'=y et y(0)=1 (dont la solution est l'exponentielle) sur les valeurs y(1), y(2) et y(3) pour des pas de temps décroissants. Les résultats vous sont présentés sous la forme d'un tableau ci-dessous. pas de temps : 1 0.5 0.25 0.125 valeur analytique : exp(1) 2 2.25 2.44140625 2.56578451395 2.718281828 exp(2) 4 5.0625 5.96046447754 6.58325017203 7.389056099 exp(2) 8 11.390625 14.5519152284 16.8912013428 20.08553692 Courbes représentatives de l'exponentielle : On note que plus le pas de temps est faible, plus la courbe "numérique" est proche de la courbe analytique. La précision des résultats dépend donc, en grande partie, de la valeur du pas de temps choisi. Vous pouvez voir la source du programme ici Nous vous présentons les captures d'écran du programme ici Enfin, nous avons réalisé un autre programme qui vous permet d'obtenir les solutions d'une équation différentielle selon différents paramètres. Vous pouvez l'utiliser ici. Conclusion * Plus le pas de temps est faible, plus le calcul est précis et plus les calculs sont longs. Il faut donc déterminer un pas de temps qui allie rapidité et précision, ce que nous allons faire dans la partie modélisation. * la méthode d'Euler est relativement simple, mais souffre d'une certaine imprécision. Pour y remédier, nous allons travailler sur une amélioration de cette méthode et sur la méthode de Runge-Kutta d'ordre 4. 2 - La méthode d'Euler améliorée la méthode d'Euler améliorée est une méthode qui allie la rapidité et une relative simplicité. Nous allons donc l'utiliser au cours de la partie modélisation. Principe de la méthode : On étudie le développement en série de Taylor au voisinage de x0 de la fonction y(x). Il nous est donné par la formule y(x0+h)=y(x0)+h.y'(x0)+1/2.h2.y''(x0)+... . On note ainsi que la méthode d'Euler donne elle une approximation de y(x0+h) : y(x0+h)=y(x0)+h.y'(x0) ; et tronque donc le développement en série de Taylor au deuxième terme. De cette troncature, il résulte une erreur d'arrondi de l'ordre de h. Le principe de l'amélioration de la méthode d'Euler consiste a obtenir une erreur d'arrondi plus faible, de l'ordre de h2. Application : On admet, comme pour la méthode d'Euler simple, qu'il existe une fonction F telle que : yk+1=yk+h.F(xk,yk) On veut déterminer la fonction F. On prend k un entier naturel quelconque compris entre 0 et n. On note : xk=x0+kh yk=y(xk) Ak le point de coordonnées (xk;yk) dans un repère orthonormé C la courbe représentative de y dans le même repère Tk la tangente à C en Ak Ek le point d'abscissexk, obtenu par la méthode d'Euler. Connaissant yk, on calcule yk+1 comme étant l'ordonnée du point d'intersection de la droite (Ek Ek+2) et de la droite d'équation x=xk+1 La fonction F a pour valeur en xk : F(xk)=a ; avec (Ak Ak+1):y=ax+b , a est la pente de cette droite. Ak et Ak+2appartienent à (Ak Ak+2), on a donc : yk+2=a.xk+2+b (1) yk=a.xk+b (2) On soustrait (2) de (1) : yk+2-yk=a.xk+2-a.xk yk+2-yk=a(xk+2-xk) yk+2-yk=a(xk+2h-xk) yk+2-yk=a.2h soit : a=1/(2h)*(yk+2-yk) On calcule yk+2 avec la méthode d'Euler : yk+2=yk+1+h.f(xk+1;yk+1) yk+2=yk+hf(xk;yk)+h.f[xk+h;yk+hf(xk;yk)] On introduit la formule de yk+2 dans a : a=1/(2h)*( yk+2=yk+hf(xk;yk)+h.f[xk+h;yk+hf(xk;yk)]-yk ) a=1/(2h)*h[f(xk;yk)+f[xk+h;yk+hf(xk;yk)] a=1/2.f(xk;yk)+1/2.f[xk+h;yk+hf(xk;yk)] soit F(xk;yk)=1/2.f(xk;yk)+1/2.f[xk+h;yk+hf(xk;yk)] On en déduit la relation par récurrence : xk=x0+k.h yk+1=yk+1/2.f(xk;yk)+1/2.f[xk+h;yk+hf(xk;yk)] Conclusion Cette amélioration de la méthode d'Euler permet d'obtenir dans des délais relativement courts ; nous l'utiliserons donc dans certains programmes de modélisations. Cependant, pour des programmes nécessitant d'importantes ressources, nous lui préfèrerons la méthode de Runge-Kutta. 3 - La méthode de Runge-Kutta d’ordre 4 La méthode de Runge-Kutta d’ordre 4 est la méthode de résolution numérique d'une équation différentielle la plus couramment utilisée. Son efficacité compense sa relative complexité. Runge Principe de la méthode : Le principe de la méthode de Runge-Kutta ordre 4 est sensiblement le même que celui de la méthode d'Euler améliorée. En revanche, l'ordre de la méthode de Runge-Kutta d'ordre 4 est supérieur à celui de la méthode d'Euler améliorée, ce qui laisse entrevoir des temps de calcul plus faibles. Application : Comme pour la méthode d'Euler améliorée, on approche la pente de la tangente à la courbe; c'est à dire, qu'on cherche une fonction F telle que : yk+1=yk+h.F(xk;yk) On introduit alors trois points auxiliaires, Bn, Cn et Dn Les points Bn, Cn et Dn sont définis par : yn0=yn Bn : yn1=yn+1/2.h.f(xn+1/2.h; yn0) Cn : yn2=yn+1/2.h.f(xn+1/2.h; yn1) Dn : yn3=yn+1/2.h.f(xn+1/2.h; yn2) On approche alors la valeur de la pente f(xn,yn) par la moyenne coefficientée de cette pente avec les trois valeurs corrigées yn1, yn2 et yn3 yn+1=yn+1/6.h.f(xn+h,yn)+1/3.h.f(xn+1/2.h,yn1)+1/3.h.f(xn+1/2.h,yn2)+1/6.h.f(xn+h,yn3) Que l'on peut écrire plus simplement : yn+1=yn+h/6 * (yn1+2.yn2+2.yn3+yn4) Conclusion Comme on peut le constater, la méthode de Runge-Kutta (d'ordre 4) est assez ardue; cependant, le gain de rapidité est important. Pour ces deux raisons, nous allons principalement employer cette méthode dans les programmes qui nécessitent le plus de ressources ; pour d'autres, nous lui préfèrerons la méthode d'Euler améliorée. Kutta