resolution equadiff

Telechargé par Yasser Dib
Résolution d’équations différentielles avec
Matlab
Olivier Gauthé
1 Rappel sur les équations différentielles
1.1 Définition et généralités
Une équation différentielle ordinaire (ODE, ordinary differential equation)
est une équation reliant une fonction d’une variable réelle et ses dérivées, c’est
à dire de la forme
y0=f(t, y)(1)
yest la fonction inconnue, y0sa dérivée et tla variable réelle. On ne s’in-
téressera pas ici aux équations différentielles partielles et on dira simplement
équation différentielle pour désigner une équation différentielle ordinaire. On
peut en fait définir une famille plus générale d’équations différentielles, de la
forme g(t, y, y0)=0. On se limitera dans ce cours aux équations explicites,
avec le terme y0en dehors de la fonction f.
1.2 Conditions initiales et théorème de Cauchy-Lipschitz
Une équation différentielle admet généralement une infinité de solution,
mais un problème physique, par exemple la chute d’une pierre, n’a qu’une seule
solution : celle qu’on mesure. Pour trouver la solution physique du problème
considéré, il faut fixer une condition initiale, c’est à dire un couple (t0, y0)
tel que y(t0) = y0.
On appelle problème de Cauchy la donnée d’une équation différentielle et
d’une condition initiale. Le théorème de Cauchy-Lipschitz assure alors
que si la fonction fest suffisamment régulière, il existe une unique solution
au problème de Cauchy. On considèrera que cette condition de régularité est
toujours respectée par la suite.
Exemple : le problème de Cauchy y0=y, y(0) = 1 admet une unique
solution, la fonction exponentielle.
1.3 Résolution d’une équation différentielle
Dans la grande majorité des cas, on ne connaît pas de solution exacte à une
équation différentielle : les solutions analytiques sont des exceptions. On sait
qu’une solution exacte existe, mais on ne peut pas en dire plus. À défaut d’une
1
solution exacte, on peut résoudre numériquement une équation différentielle,
c’est à dire obtenir une valeur numérique approchée y(t)pour un ensemble de
temps discrets. L’objectif est que lorsque le pas de temps diminue, la solution
approchée converge vers la solution exacte.
2 Méthodes numériques
Nous allons détailler quelques méthodes numériques permettant de ré-
soudre l’équation différentielle
dy
dt =f(t, y), y(t0) = y0(2)
2.1 Méthode d’Euler
La méthode d’Euler est la méthode numérique la plus simple pour résoudre
une équation différentielle. Elle n’est jamais utilisée en condition réelle car peu
performante, mais elle a l’avantage de la simplicité. Elle consiste à partir du
point y0àt0et à intégrer la dérivée y0, qu’on obtient en utilisant l’équation
différentielle. On part du développement limité
y(t+ ∆t) = y(t)+∆tdy
dt +O(∆t2)(3)
On insère l’équation différentielle (2) dans cette équation et on obtient y(t+
t) = y(t) + f(y, t). On fixe un pas de temps fini tet une grille de temps
{ti}={t0+it}, et on note yi=y(ti). L’équation (3) donne alors le schéma
numérique :
yi+1 =yi+ ∆t·f(ti, yi)(4)
En fait, rien n’impose d’utiliser un pas de temps tconstant. Au contraire,
on obtient une meilleure précision en prenant un pas de temps variable bien
choisi.
L’erreur est cumulative : à chaque étape, on utilise le résultat de l’étape
précédente et on accroît l’erreur. À chaque étape, l’erreur commise est en
O(∆t2), l’erreur totale sur le résultat final est donc contrôlée comme O(∆t)
(méthode d’ordre 1), ce qui est assez lent : il faut un pas de temps très petit
pour obtenir un résultat proche de la valeur exacte.
Une implémentation de la méthode d’Euler pour résoudre l’équation (2)
sur l’intervalle [t0, tf]avec un pas de temps dt est donc, en code Matlab :
t = t0:dt:tf; % on fixe la grille de temps
n = length(t);
y = zeros(1,n); % on fixe la taille du tableau y
y(1) = y0; % on fixe la condition initiale
for i=1:n-1 % i+1 ne doit donc pas dépasser n
y(i+1) = y(i) + dt*f(t(i),y(i)); % schéma numérique
end
2
2.2 Autres méthodes numériques
La méthode d’Euler converge très lentement, l’erreur est mal contrôlée. On
cherche donc des algorithmes plus efficaces. On ne détaillera pas le déroulé des
méthodes, le lecteur intéressé est renvoyé à la littérature sur le sujet.
Méthode du point du milieu. La méthode du point du milieu consiste
à prendre la valeur de la dérivée au point situé au milieu de chaque intervalle
de temps. C’est une méthode d’ordre 2, c’est à dire que l’erreur est contrôlée
en O(∆t2). Le schéma numérique s’écrit
yi+1 =yi+ ∆t·f(tmid, ymid)(5)
avec tmid =ti+ ∆t/2et ymid =yi+ ∆t/2·f(ti, yi).
Méthode de Heun. La méthode de Heun, ou méthode d’Euler améliorée
ou encore méthode de Runge-Kutta d’ordre 2 est une autre méthode d’ordre
2. Son schéma numérique est :
yi+1 =yi+t
2f(ti+1,˜y) + f(ti, yi)(6)
avec ˜y=yi+ ∆t·f(ti, yi).
Méthode de Runge-Kutta d’ordre 4. la méthode de Runge-Kutta est
une méthode générale utilisable à n’importe quel ordre. Le schéma numérique
de l’ordre 4 s’écrit
tmid =ti+ ∆t/2
k1= ∆t·f(ti, yi)
k2= ∆t·f(tmid, yi+k1/2)
k3= ∆t·f(tmid, yi+k2/2)
k4= ∆t·f(ti+1, yi+k3)
yi+1 =yi+ (k1+ 2k2+ 2k3+k4)/6
2.3 Application
Implémenter la méthode du point du milieu et la méthode de Runge-Kutta
pour résoudre le problème de Cauchy y(t) = 2y,y(0) = 1 sur l’intervalle
de temps [0,4]. Tracer les courbe des résultats obtenus par cette méthode,
par la méthode d’Euler ainsi que la solution exacte. Faire varier le pas de
temps et regarder comment les solutions évoluent. Tracer la courbe de l’erreur
exp(8) y(4) en fonction du pas de temps pour différentes méthodes.
2.4 Utilisation de la fonction ode45
Matlab propose sa propre méthode de résolution d’équation différentielle
avec la fonction ode45. Aller lire l’aide en ligne de cette fonction. On lit que
3
la syntaxe est [t,y] = ode45(odefun,tspan,y0). Pour résoudre le problème
précédent, il faut donc rentrer
[t45,y45] = ode45(@(t,y) 2*y,[0,4],1)
Ici, on définit une fonction sans nom qui renvoie 2yet on passe une référence à
cette fonction comme argument à ode45. On aurait aussi pu définir cette fonc-
tion dans un fichier annexe fct_ode1.m et l’appeler avec ode45(@fct_ode1,
[0,4],1).
Matlab détermine tout seul sa grille de temps, on ne lui passe donc que les
bornes comme argument.
3 Équations différentielles d’ordres supérieurs
Nous avons jusqu’ici traité uniquement des fonctions différentielles d’ordre
1. En physique, on rencontre également des équations différentielles d’ordre
supérieur, comme l’équation du ressort ¨x+ω2x= 0. Le principe pour les
résoudre consiste à se ramener à une équation différentielle d’ordre 1. Pour
cela, on pose v= ˙x. On a alors les équations
˙x=v
˙v=ω2x(7)
On pose alors une variable vectorielle Y:
Y= x
v!(8)
et on cherche à quelle équation différentille obéit le vecteur Y. On calcule donc
sa dérivée ˙
Y:
˙
Y= ˙x
˙v!= v
ω2x!= Y2
ω2Y1!(9)
où on a utilisé l’équation (7). On observe qu’on peut écrire chacun des coeffi-
cients de ˙
Yen fonction de ceux de Y: on s’est donc ramené à une équation
différentielle d’ordre 1 en la variable Y:
˙
Y=f(t, Y )(10)
avec la fonction fdéfinie par :
A= 0 1
ω20!, f : (t, X)7→ A·X(11)
Ici, l’équation initiale est linéaire ce qui permet de ramener la fonction f
à un simple produit matriciel, de plus elle ne dépend pas de t. Dans le cas
général, fest quelconque.
4
Plus généralement, une équation différentielle scalaire d’ordre n
peut toujours se ramener à une équation vectorielle d’ordre 1 de
dimension n. Les conditions initiales s’écrivent alors Y(0) = Y0, c’est à dire
qu’on fixe le vecteur initial, soit n scalaires. On peut ensuite appliquer les
méthodes numériques du chapitre précédent.
En pratique, la fonction ode45 ne résout que des équations différentielles
d’ordre 1, mais de dimension quelconque. Il faut donc ramener une équation
différentielle à une équation d’ordre 1 avant d’appeler ode45. Dans le cas du
ressort, on commence par construire la matrice A. On résout ensuite l’équation
différentielle sur l’intervalle [0,2π]avec les conditions initiales x(0) = 1, v(0) =
0en rentrant :
[t45,y45] = ode45(@(t,y) A*y,[0,2*pi],[1,0])
Noter que y45 est alors un tableau de taille (length(t45),2) : la première
colonne y45(:,1) contient la valeur de la position à chaque instant tiet la
deuxième colonne y45(:,2) contient la vitesse au même instant.
Dans le cas général, le plus simple est d’écrire la fonction dY/dt dans un
fichier annexe et d’appeler cette fonction comme argument de ode45, plutôt
que de la définir dans la ligne d’appel de la fonction (se référer à l’aide en ligne).
Application : modifier les méthodes précédentes pour résoudre des équa-
tions différentielles d’ordre 2. Résoudre l’équation du ressort, tracer la vitesse
et la position en fonction du temps et observer comment la solution évolue en
fonction du pas de temps.
5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !