Vous êtes sur la page 1sur 7

TP1 : Etude de m ethodes de r esolution des equations di erentielles ordinaires ` a pas constant

Sylvie Putot 8 f evrier 2007

Dans ce TP, on va etudier plusieurs types de m ethodes dint egration ` a pas constant d equations di erentielles ordinaires. On appliquera ces m ethodes ` a lint egration dun probl` eme simple : l equation r egissant le mouvement dun pendule simple de longueur l et faisant un angle par rapport ` a la verticale : (t) = g sin( (t)). l On rappelle que g = 9.81, et on prendra pour limpl ementation l = 1. (1)

R esolution par la m ethode dEuler explicite


Ecrire une fonction matlab d ecrivant l equation du pendule (1) comme un syst` eme d equations di erentielles dordre 1. On la d enira sous la forme function thetaprime = Fpendule(t,theta) [...] On sauvera cette fonction dans un chier matlab au nom de la fonction, Fpendule.m. (dans t) = F (t, (t))). laquelle on exprime le syst` eme sous la forme g en erale ( Programmer la m ethode dEuler explicite, pour un syst` eme dordre 1 et de dimension quelconque. On d enira une fonction function [t,theta] = Euler(fct,trange,theta0,N) [...] qui prend en entr ee un pointeur fct sur la fonction que lon veut int egrer, lintervalle de temps sur lequel on veut r esoudre le syst` eme, trange = [tmin tmax], l etat theta0 du pendule ` a linstant initial tmin, et le nombre de pas ` a eectuer dans lintervalle,

qui retourne dans le tableau theta, la solution du syst` eme en N instants choisis ` a intervalle r egulier dans lintervalle trange. Ces instants sont m emoris es dans le vecteur t. 1

L evaluation de la fonction fct a ` lint erieur de la fonction Euler, avec les param` etres t et x, se fait par feval(fct,t,x). L etat initial du pendule d enit lamplitude du mouvement : si celle-ci est faible, la solution de l equation lin earis ee (t) = g (t) (2) l donne une bonne approximation du comportement du pendule. On va v erier la validit e de cette approximation pour di erents etats initiaux, en comparant pour chacun le r esultat de lint egration num erique de l equation du pendule avec la solution analytique du probl` eme lin earis e. ecrire une fonction function theta = PenduleLinearise(t,theta0) [...] qui calcule la solution analytique de ce probl` eme en chaque point du tableau de temps t, et pour theta0 l etat du pendule ` a linstant t(0). d enir un chier de script Exercice1.m qui trace sur un m eme graphique, pour lintervalle de temps [0,5], et pour l etat initial (0) = 0.1, (0) = 0 : la solution (t) du pendule, calcul ee par la m ethode dEuler avec 5000 points dint egration, la solution du pendule donn ee par la m ethode pr ed enie de Matlab ode45, la solution analytique de l equation lin earis ee. Recommencer pour (0) = 1, (0) = 0. Notes : On peut appeller la fonction impl ementant le sch ema dEuler appliqu e au pendule par : [tE,thetaE] = Euler(@Fpendule,trange,thetazero,N); La commande ode45, qui impl emente un sch ema de Runge-Kutta dordre 5 avec pas de temps adaptatif pour contr oler lerreur sappelle par [tref,thetaref] = ode45(@Fpendule,trange,thetazero); (pour plus de d etail sur les options de ode45, voir laide en ligne Matlab).

2
2.1

Int egration g eom etrique


M ethode dEuler symplectique

On va comparer le comportement des m ethodes dEuler explicite, implicite et symplectique sur l equation lin earis ee (2) du mouvement du pendule.
q H H Exprimer cette EDO sous la forme dun syst` eme hamiltonien ( p t = q (q ), t = p (p)). Ecrire le syst` eme d equations (3) traduisant le sch ema dEuler symplectique pour ce probl` eme, pn+1 = pn h H q (qn ) (3) q H n+1 = qn + h p (pn+1 )

sous la forme yn+1 = Byn , avec yn = qn pn .

Ecrire une fonction qui impl emente ce sch ema, par exemple : function theta = PL_EulerSymplectique(trange,theta0,N) [...] Tester la fonction en comparant la courbe (t) ainsi obtenue avec la solution analytique, de la m eme fa con quen 1. Remarque : on obtiendrait un autre sch ema symplectique en faisant avancer le sch ema dabord sur la composante q puis sur p au lieu du contraire, cest-` a-dire pn+1 = pn h H q (qn+1 ) q H n+1 = qn + h p (pn ) Ecrire les equations traduisant la m ethode dEuler implicite pour r esoudre ce probl` eme sous la forme dun syst` eme yn+1 = Ayn . Impl ementer ce sch ema dans la fonction : function theta = PL_EulerImplicite(trange,theta0,N) [...] 0 ) = (0.4, 0), les courbes (t, (t)) obtenus avec les m Comparer, pour (0 , ethodes dEuler explicite, implicite et symplectique, pour t dans lintervalle [0, 15], et avec 1000 pas de temps. (t)). Observer ` a pr esent les courbes ( (t), Montrer quen eet, la solution num erique (pn , qn ) de la m ethode symplectique reste sur g g 2 2 a-dire une quantit e proche de l energie lellipse p + l q h l pq = Const pour tout n. Cest-` H (p, q ) du syst` eme reste constante. Observer graphiquement l evolution de l energie en fonction du temps pour les 3 m ethodes. En utilisant la solution analytique, tracer les courbes derreur sur (t) avec t [0, 250] pour les trois m ethodes. Utiliser par exemple 10000 pas de temps. Faire varier le pas de temps et la dur ee dint egration.

2.2

M ethodes dordre sup erieur

Pour information, des programmes matlab impl ementant des m ethodes dint egration num erique dordre sup erieur sont disponibles sur la page de Ernst Hairer, ` a lurl http://www.unige.ch/ hairer/software.html. Ces m ethodes permettent par exemple lint egration ` a long terme du probl` eme ` a N corps (astronomie, biologie mol eculaire).

Vers des m ethodes dordre sup erieur


tn1 +t

Lid ee naturelle pour am eliorer la pr ecision de la m ethode dEuler est dapprocher lint egrale dans y (tn1 + t) = yn1 + par des formules de quadrature dordre plus elev e: Euler explicite (1768) : on utilise la tangente au point (tn1 , yn1 ) : yn = yn1 + tf (tn1 , yn1 ) Runge (1895) : on prend la formule du point milieu y (tn1 + t) yn1 + tf (tn1 + dans laquelle on approche la valeur inconnue y (tn1 + t t , y (tn1 + )) 2 2
t 2 )

f (t, y (t))dt
tn1

par la m ethode dEuler.

Heun dordre 3 (1900) : on prend une formule de quadrature dordre 3 y (tn1 + t) yn1 + 2t 2t t (f (tn1 , yn1 ) + 3f (tn1 + , y (tn1 + ))), 4 3 3
2t 3 )

et on approche la valeur inconnue y (tn1 + On demande de :

par la m ethode de Runge.

Ecrire et programmer les sch emas de Runge et Heun (fonctions Runge2 et Heun de m emes param` etres que Euler) 0 ) = (0.4, 0), comparer la solution Pour lintervalle de temps [0,5], et pour l etat initial (0 , des sch emas Euler explicite, Runge et Heun, avec un m eme pas dint egration assez large (par exemple pour 100 pas sur lintervalle de temps). Pour cela, on achera par exemple, pour l equation du pendule, les courbes (t, (t)) sur un m eme graphique. Comparer la pr ecision compar ee des sch emas Euler explicite et symplectique, Runge et Heun, en achant pour l equation lin earis ee, les erreurs respectives commises avec ces 4 m ethodes en fonction du pas de temps. Pour comparer la pr ecision des sch emas pour un co ut de calcul equivalent, on comparera plus pr ecis ement les erreurs en fonction du nombre d evaluations de la fonction Fpendule linearise.

Annexe : Mini-guide dutilisation de Matlab

Nh esitez pas ` a consulter laide en ligne (MATLAB Help dans le menu Help), tr` es bien faite, en particulier dans longlet MATLAB, la section Getting Started, et, et dans la section Mathematics, la sous-section Dierential Equations. Sinon, en ligne de commande, taper help suivi dun nom de commande matlab vous renseigne sur cette commande.

4.1

Variables

Une d eclaration typique de variable est A=1 Si une expression se termine par un point-virgule, le r esultat nest pas ach e, sinon il lest. La fonction whos liste les variables connues dans lespace de travail. On peut les eacer toutes par la commande clear, o` u choisir celles que lon eace toujours par la m eme commande.

4.2

Scripts et fonctions

Le logiciel peut sutiliser soit en mode interactif, en ecrivant les commandes en ligne, ou en utilisant des scripts (M-les), qui sont des chiers ASCII avec une extension .m que lon peut editer via linterface de Matlab, et dans lesquels on tape les instructions que lon taperait en mode interactif. Un script est ex ecut e en appelant le nom de chier sans lextension .m. Une fonction est un chier ayant une extension .m et un en-t ete sp ecial, par exemple ici le chier f.m contient function y = f(x) % incr emente x de 1 y = x+1; En invoquant la commande help f, on obtient le texte en commentaire.

4.3

Matrices

Une matrice est d eclar ee entre crochets, les el ements des colonnes sont s epar es par des espaces ou virgules, les lignes par des points-virgules. Par exemple la matrice A suivante a 3 colonnes et 2 lignes : A = [1 6 3; 2 9 5] La transpos ee se note A . On peut cr eer une matrice par concat enation, en sassurant de la compatibilit e des matrices el ementaires, par exemple B = [A A] poss` ede 6 colonnes et 2 lignes. On peut extraire certaines parties dune matrice en pr ecisant les lignes et colonnes fronti` eres, par exemple C = B(1,3:4) permet dextraire les el ements de la premi` ere ligne et des colonnes 3 et 4. On peut prendre toutes les colonnes ou toutes les lignes, par exemple D = B(:,3:4)

permet dextraire les el ements des deux lignes et des colonnes 3 et 4. La multiplication de 2 matrices A B est la multiplication matricielle classique. On peut aussi calculer la multiplication terme ` a terme par A. B . On peut g en erer un vecteur ligne contenant des nombres compris entre une valeur de d epart d et une valeur de n f , avec un incr ement dt par la commande x = [d:dt:f]

4.4

Syntaxe des structures de contr ole

Conditionnelles if expression1 instructions1 elseif expression2 instructions2 ... else instructions end Boucle for for k = vecteur instructions end Par exemple, la boucle for k = 1:n x=x+1; end incr emente x de 1, pour k entier de 1 ` a n. Boucle while while expression instructions end

4.5

Graphiques

Pour acher sur un graphique y = f (x), o` u x et y sont donn es comme des vecteurs de m eme dimension, utiliser par exemple : plot(x,y,b+-);

Dans cette commande, le b sp ecie la couleur (blue), le + la fa con de signaler les points, et le - que deux points sont reli es par un trait plein. Pour acher plusieurs courbes sur le m eme graphique, utiliser hold on suivi des commandes plot. Pour ouvrir une nouvelle fen etre, utiliser figure. Pour fermer une fen etre, close ou close all. On peut egalement ajouter un titre (title(text)), des l egendes sur les axes (xlabel(texte) et ylabel(texte)), ajouter une grille sur le graphique courant (grid), etc.