Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Wenping BI
Laboratoire d’Acoustique de l’Université du Maine,
UMR CNRS 6613
Av. O Messiaen, 72085 LE MANS Cedex 9,
France
1
Table des Matières
1. Introduction
• Résolution numérique de problémes
• Complexité d’un algorithme
• Convergence d’un algorithme
• Sensibilité aux erreur de données
• Erreur absolue et relative
• (Représentation des nombre en virgule flottante)
2. Résolution d’équations non linéaires
• Méthode de bisection
Exposé de la méthode et convergence de la méthode
• Méthode de Newton-Raphson
Exposé de la méthode et convergence de la méthode
3. Résolution de systeme d’équations
• Méthode Gaussian elimination
• Méthode LU décomposition
4. Equations différentielles ordinaires
• Méthode de Taylor
• Méthode d’Euler explcite
• Méthode d’Euler implicite
• Méthodes de Runge-Kutta
• Systemes d’équations différentielles ordinaires
Examen
1. Un examen écrit à la fin du semestre. Il contient algorithmes, programmes en
Python
2. 3 TPs
2
Références
3
1 Introduction
1.1 Complexité d’un algorithme
1.2 Convergence d’un algorithme
• Erreurs de troncature
Example : Le développement en série de Taylor de la fonction exp(x) est
∞
x2 x3 X xn
ex = 1 + x + + + ··· = , (1)
2! 3! n=0
n!
4
• Erreurs d’arrondi
Example : Calculer Z 1
In = xn ex dx, (2)
0
pour n = 20. En intégrant par partis, on obtient la relation récurrence
Z 1
In = e − n xn−1 ex dx, In = e − nIn−1 , I0 = e − 1, I1 = 1, (3)
0
n In calculé In exact
17 0.1043 0.1434
18 0.8417 0.1362
19 -13.2742 0.1297
20 268.2026 0.1238
(Le calcul se fait avec une précision de 16 décimale, machine epsilon est eps =
2.22 × 10−16 . In,calcule = In + en , en = n!eps)
5
Figure 2: Convergence Bisection.
6
Figure 3: Expliquation de N-R
avons
0 (x − xn )2 00
f (x) = f (xn ) + (x − xn )f (xn ) + f (xn ) + · · · (5)
2
Si nous approximons f uniquement par les deux premiers termes de cette série, nous
obtenons f (x) = f (xn ) + (x − xn )f 0 (xn ). Une approximation d’une racine de cette
fonction est donc
f (xn )
x = xn − 0 . (6)
f (xn )
L’algorithme de Newton-Raphson consiste à considérer cette approximation comme
itéré suivant. Nous aurons donc
f (xn )
xn+1 = xn − 0 . (7)
f (xn )
L’interprétation géométrique de la méthode est indiquée sur la Figure 3. A partir
du point (xn ,f (xn )), on trace la tangente à f et recherchons l’intersection de cette
tangente avec l’axe des abscisses. Cela donne l’itéré suivant.
car f 0 (x̄) 6= 0 par hypothèse et dès lors, on peut prouver que f 00 (ξn )/f 0 (x̄) est borné
dans un voisinage de x̄.
Lorsque l’on se trouve proche de la racine, la méthode de Newton-Raphson con-
verge extrêmement vite. Malheureusement, cette convergence n’est pas globale. Pour
certains points de départ, en effet, il peut arriver que la méthode diverge ou cycle,
elle aussi. Cela peut être aisément illustré. La Fig. 4 indique quelques mauvais
cas qui peuvent se produire. Dans le cas de plusieurs racines pour f , il n’est, en
général, pas évident de savoir a priori quels points de départ convergeront vers quelles
racines. C’est la raison pour laquelle la méthode de Newton sera souvent utilisée pour
améliorer rapidement une approximation obtenue par une autre méthode plus robuste
(comme par exemple la bisection). Enfin, il y a un cas particulier important pour
lequel la méthode n’admet pas une convergence quadratique. Nous avons vu, en effet,
que la convergence quadratique n’est obtenue dans le Théorème que pour f 0 (x̄) 6= 0.
Dans le cas d’une racine multiple, et donc avec f 0 (x̄) = 0, la méthode converge
néanmoins mais seulement linéairement.
Théorème Soit x̄ une racine de f . Si f 0 (x̄) = 0, l’itérè de la méthode de Newton-
Raphson converge linéairement vers x̄ dans un voisinage de x̄.
Démonstration: On a xn = xn−1 − ff0(x n−1 )
(xn−1 )
. On peut donc écrire l’erreur
f (xn−1 )
|xn − x̄| = xn−1 − x̄ − (12)
f 0 (xn−1 )
8
Nous pouvons maintenant rééecrire (12) comme
f 0 (ξn )
|xn − x̄| = |xn−1 − x̄ + (xn−1 − x̄)| (14)
f 0 (xn−1 )
f 0 (ξn )
= |(1 + 0 )(xn−1 − x̄)|.
f (xn−1 )
Cette fois, nous pouvons borner l’expression f 0 (ξn )/f 0 (xn ) car ξn est compris entre x̄
et xn . Dans un voisinage de x̄, on a dès lors que |f 0 (x̄)| ≤ |f 0 (ξn )| ≤ |f 0 (xn )|. On
peut donc déduire de (14) que
avec C > 0.
Si on sait à l’avance que l’on cherche une racine double, il est possible de retrouver
un ordre quadratique de convergence. Pour une racine de multiplicité m, les itérations
f (xn )
xn+1 = xn − m . (16)
f 0 (xn )
Ax = b, (17)
9
3.1 Résolution des systèmes triangulaires
Un cas facile à traiter est celui des systèmes triangulaires. Lorsque A est une matrice
triangulaire inférieure, c’est-à-dire que aij = 0 pour tout j > i, il est très facile de
voir que
b1
x1 = ,
a11
i−1
! (18)
1 X
x i = a bi − aij xj , i = 2, · · · , n
ii j=1
10
Algorithm 1 Algorithme d’élimination de Gauss
1: Entrées : A, b
2: pour k = 1, · · · , n − 1 faire
3: //On teste si le pivot est null
4: si |akk | < alors
5: Afficher un message d’erreur
6: sinon
7: // Calcul de A(k)
8: pour i = k + 1, · · · , n faire
9: c ← aakk
ik
10: bi ← bi − c × bk
11: aik ← 0
12: pour j = k + 1, · · · , n faire
13: aij ← aij − c × akj
14: fin pour
15: fin pour
16: fin si
17: fin pour
3.3 Factorisation LU
Supposons que l’on dispose d’une factorisation telle que A = LU ou L est une matrice
triangulaire inférieure et U supérieure. Alors le système général (17) s’écrit
LUx = b, (22)
11
Algorithm 2 Algorithme de Factorisation LU
Entrées : A
L ← Inn
U ← 0nn
pour i = 1, · · · , n − 1 faire
pour j = i, · · ·P, n faire
uij ← uij − i−1 k=1 lik ukj
fin pour
pour j = i + 1, · P · · , n faire
lij ← uii (aji − i−1
1
k=1 ljk uki
fin pour
fin pour P
unn ← aij − n−1 k=1 lnk ukn
: LU
12
4 Résolutions des équations Différentielles Ordi-
naires
4.1 TP3 : Résolutions des équations Différentielles Ordi-
naires
1. On considère, pour t ∈ [0, 2], le problème suivant :
y 0 (t) + 4y = x2 , y(0) = 1,
x000 + x002 − 3x03 + cos2 x = e−t sin(t), x(1) = 1, x0 (1) = 1, x00 (1) = 0,
13
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
1 Introduction 6
Résolution numérique des 1.4 Unicité et problème bien posé : conditions suffisantes . . . . . . . . . 9
MNCS 1 2018-2019
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
2.2.2 Méthode d’Euler modifiée . . . . . . . . . . . . . . . . . . . 21 3.1.1 Adams Bashforth : explicite, pas de terme en f (ti+1 , ui+1 ) . 36
2.2.3 Méthode de Heun . . . . . . . . . . . . . . . . . . . . . . . 24 3.1.2 Adams Moulton : implicite, terme en f (ti+1 , ui+1 ) . . . . . . 37
2.3 Méthodes de Runge Kutta . . . . . . . . . . . . . . . . . . . . . . 25 3.1.3 Comparaison méthodes à un pas et Adams explicite . . . . . . 39
2.5.3 Comparaison des erreurs maximales simple/double précision . 34 4 Les EDO du premier ordre en pratique 47
7 Implémentation vectorielle 67
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
EDO 1 Introduction EDO 1 Introduction 1.2 Deux types de problèmes différentiels à résoudre
1 Introduction
1.2 Deux types de problèmes différentiels à résoudre
1.1 Problème différentiel — Conditions initiales données pour une seule valeur t0 de t, par exemple
(n−1)
— équation différentielle scalaire d’ordre n y(t0 ) = y0 , y 0 (t0 ) = y00 , . . . , y (n−1) (t0 ) = y0
dn y dy dn−1 y Problème de conditions initiales ou de Cauchy
=f t, y, , ...,
dtn dt dt n−1
— Conditions données pour des valeurs distinctes de la variable indépendante t,
par exemple :
où f est la fonction second membre donnée
⇒ famille de solutions y(t) à n paramètres y(t0 ) = y0 , y(t1 ) = y1 , . . . , y(tn−1 ) = yn−1
— ensemble de n conditions imposées
Problème de conditions aux limites (non traité, sauf problème de tir).
⇒ choix d’ une solution dans la famille
Les EDO d’ordre supérieur se ramènent à des systèmes différentiels couplés du Problème bien posé si : le problème faiblement perturbé (second membre ou
premier ordre (EDO vectorielles du premier ordre). condition initiale) possède une solution proche de celle du problème original.
La condition de Lipschitz assure que le problème est bien posé.
EDO 1 Introduction 1.5 Méthodes de résolution numérique et notations EDO 1 Introduction 1.5 Méthodes de résolution numérique et notations
2 Méthodes à un pas
Constituent l’algorithme de base qui permet d’estimer la valeur de la solution à
l’instant ti+1 = ti + h, connaissant seulement ui , celle à ti .
La valeur à estimer peut être approchée par un développement limité de Taylor :
dy h2 d2 y
y(ti + h) = y(ti ) + h (ti ) + (ti ) + · · · (1) 2.1 Méthodes du premier ordre
dt 2 dt2
Ordre n de la méthode = plus grande puissance de h prise en compte dans 2.1.1 Méthode d’Euler progressive (explicite)
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
y Méthode d’Euler
Exemple : stabilité
2.1.2 Méthode d’Euler rétrograde (implicite) Mise en œuvre de la méthode d’Euler rétrograde : résolution de l’équation
implicite par itération
ui+1 = ui + hf (ti+1 , ui+1 ) (3)
ui+1 = ui + hf (ti+1 , ui+1 )
Méthode implicite : résolution itérative , plus difficile à mettre en œuvre, sauf si la
forme de f (t, u) permet le calcul analytique de ui+1 à partir de l’équation (3). Itérer l’application g pour rechercher son point fixe
Avantage : meilleure stabilité que la méthode progressive explicite. v20 = g(v2 ) = ui + hf (t2 , v2 )
Exemple : stabilité Ce point fixe est la solution de l’équation implicite.
dy y — Utilise plusieurs évaluations du second membre, sans calcul de ses dérivées.
=− ⇒ solution analytique y = y0 e−t/τ ⇒ yn = y0 (e−h/τ )n
dt τ
— Très peu d’itérations nécessaires
h ui
ui+1 = ui − ui+1 ⇒ solution numérique ui+1 = Initialisation par le prédicteur avec Euler progressif
τ 1 + h/τ
y0 t2 = ti + h
un = n
(1 + h/τ ) k1 = f (ti , ui )
Si τ > 0, y(∞) = 0, et aussi un → 0 ∀τ > 0, ∀h > 0 solution stable v2 = ui + hk1
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
arrêt si |δv2 |2 6 α2 |v2 |2 Centrer l’évaluation de la dérivée au point milieu tm = (ti + ti+1 )/2.
v2 = v20 h dy 1 h2 d2 y
y(ti + h) = y(tm ) + (tm ) + (tm ) + O(h3 ) (7a)
2 dt 2 4 dt2
∂f
La fonction g est contractante si g 0 (v2 ) = h ∂v 61 h dy 1 h2 d2 y
2
y(ti ) = y(tm ) − (tm ) + (tm ) + O(h3 ) (7b)
ce qui est vérifié si le pas est assez faible.
2 dt 2 4 dt2
∂f
Rappel : la condition de Lipschitz est ∂v 6 K Par différence, (approximation locale parabolique, voir aussi dérivée centrée à 2 termes)
2
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
EDO 2 Méthodes à un pas 2.3 Méthodes de Runge Kutta EDO 2 Méthodes à un pas 2.3 Méthodes de Runge Kutta
k1 = f (ti , ui ) (12a)
k1 = f (ti , ui ) (11a) h h
k2 = f (ti + , ui + k1 ) (12b)
h h 2 2
k2 = f (ti + , u i + k1 ) (11b) h h
2 2 k3 = f (ti + , ui + k2 ) (12c)
k3 = f (ti + h, ui + (2k2 − k1 )h) (11c) 2 2
h k4 = f (ti + h, ui + k3 h) (12d)
ui+1 = ui + (k1 + 4k2 + k3 ) (11d)
6 h
ui+1 = ui + (k1 + 2k2 + 2k3 + k4 ) (12e)
6
dy
2.5 Exemple de l’équation logistique = y(1 − y/2)
dt
2.4 Erreur absolue en fonction du pas et de l’ordre
sol_exacte_logistique
2.0 [ 0.0e+00 , 2.0e+01] h= 2.00e-02 y0=1.00e-01 n= 1001
logistique
Euler explicite 1 ∝ h2 ∝h 1.0
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
fichier rk4.dat ordre 4 erreur max 0.954E−06 position de l’err max 0.190E+01
fichier euler.dat ordre 1 erreur max 0.830E−02 position de l’err max 0.296E+01
1e−06
0.001
8e−07
0.000
6e−07
Erreur = Exact −Estimé
−0.001
4e−07
Erreur = Estimé − Exact
−0.002
2e−07
−0.003
0e+00
−0.004
−2e−07
−0.005
−4e−07
−0.006
−6e−07
−0.007
−8e−07
−0.008
−1e−06
0 2 4 6 8 10 12 14 16 18 20
−0.009 exact − estimé
0 2 4 6 8 10 12 14 16 18 20 temps
estimé − exact
temps
F IGURE 2 – Erreur dans l’intégration de l’équation logistique avec la méthode d’Euler F IGURE 3 – Erreur dans l’intégration de l’équation logistique avec Runge Kutta
pour h = 0, 02. L’allure régulière montre que l’erreur de troncature domine. d’ordre 4 pour h = 0, 02. L’allure bruitée est caractéristique de l’erreur d’arrondi
Erreur de troncature locale liée à la courbure de la solution et on retrouve les niveaux de quantification des réels sur 32 bits.
2.5.1 Exemple d’erreur totale maximale en simple précision (32 bits) 2.5.2 Exemple d’erreur totale maximale en double précision (64 bits)
Valeur absolue de l’erreur absolue pour y’= y(1−y/2) sur [0,20] y(0)=0.1 simple précision Erreur absolue y’= y(1−y/2) sur [0,20] y(0)=0.1 double précision
100 100
euler sp
milieu sp
rk3 sp
−1 rk4 sp pente +1 10−2 pente +1
10
−4
10
10−2
pente +2
10−6
erreur maximale
erreur maximale
pente +2
10−3
pente −1
10−8
−4
pente +3
10 pente +3
10−10
10−5
10−12 pente +4
pente +4
−6
10
10−14 euler dp
milieu dp
rk3 dp
rk4 dp
10−7 −4 10−16 −4
10 10−3 10−2 10−1 100 10 10−3 10−2 10−1 100
pas pas
MNCS 32 2018-2019 MNCS 33 2018-2019
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique EDO 3 Méthodes à plusieurs pas
2.5.3 Comparaison des erreurs maximales simple/double précision 3 Méthodes à plusieurs pas
Erreur absolue y’= y(1−y/2) sur [0,20] y(0)=0.1 simple/double précision
100
3.1 Méthodes d’Adams
10−2
Principe : les erreurs augmentent avec l’intégration, les points les plus proches de
10−4 la valeur initiale ont tendance à être plus fiables. Pour calculer ui+1 , on peut
s’appuyer non seulement sur la dernière valeur estimée ui , mais sur les m précédentes.
10−6
erreur maximale
euler sp Dans les deux cas, il faut initialiser le calcul par une méthode à un pas sur les m
10−12 milieu sp
rk3 sp premiers points.
rk4 sp
10−14 euler dp
milieu dp Le calcul réutilise les évaluations antérieures du second membre.
rk3 dp
rk4 dp
10
−16 =⇒ stocker ces valeurs pour économiser les calculs
−4 −3 −2 −1 0
10 10 10 10 10
pas
MNCS 34 2018-2019 MNCS 35 2018-2019
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
3.1.1 Adams Bashforth : explicite, pas de terme en f (ti+1 , ui+1 ) Exemple : Adams-Bashforth à deux pas
h
Adams-Bashforth utilise m points à gauche de ti+1 : ui+1 = ui + [3f (ti , ui ) − f (ti−1 , ui−1 )]
2
m
X m
X y Adams-Bashforth à
ui+1 = ui + βh αj f (ti−j+1 , ui−j+1 ) avec β αj = 1
j=1 j=1 deux pas
ui+1
méthode d’ordre m, mais une seule nouvelle évaluation du second membre à −k−1 h/2
Méthode explicite
chaque pas 3k0 h/2
h/2 d’ordre deux mais
m β α1 α2 α3 α4 k0 seulement une éva-
ui luation nouvelle du
1 1 1
2 1/2 3 −1 k−1 second membre à
ui−1 chaque pas
3 1/12 23 −16 5 3h/2 ⇒ mémoriser les
4 1/24 55 −59 37 −9
ti−1 ti ti+1 t seconds membres.
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
3.1.2 Adams Moulton : implicite, terme en f (ti+1 , ui+1 ) 3.1.3 Comparaison méthodes à un pas et Adams explicite
m β α0 α1 α2 α3 10−3
0 1 1
−4
10
1 1/2 1 1
2 1/12 5 8 −1 10−5
3 1/24 9 19 −5 1
10−6
Éviter les difficultés de l’implicite en utilisant un prédicteur explicite de ui+1 ,
injecté ensuite dans l’expression d’Adams-Moulton vue comme correcteur . 10
−7
−4 −3 −2 −1 0
10 10 10 10 10
pas
MNCS 38 2018-2019 MNCS 39 2018-2019
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams EDO 3 Méthodes à plusieurs pas 3.2 Méthodes adaptatives
Principe : bénéficier des qualités d’une méthode implicite mais l’appliquer à une Estimer l’erreur de troncature par l’écart entre deux solutions numériques :
estimation obtenue par une méthode explicite du même ordre (voir Euler modifiée). y(ti+1 ) − ui+1
ui , d’ordre n ηi = ∝ hn (13a)
— prédiction de ui+1 par une méthode explicite h
y(ti+1 ) − u?i+1
— correction de ui+1 par une formule implicite où f (ti+1 , y(ti+1 )) a été u?i , d’ordre n + 1 ηi? = ∝ hn+1 (13b)
h
approximé par la prédiction f (ti+1 , ui+1 ). u?
− ui+1
or h 1 donc ηi ≈ i+1 ∝ hn (13c)
Exemple : méthode d’Euler modifiée h
Une itération de la partie correction est possible. Modification du pas d’un facteur q
EDO 3 Méthodes à plusieurs pas 3.2 Méthodes adaptatives EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg
EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg EDO 4 Les EDO du premier ordre en pratique
10−3
au plus petit de ces temps propres.
10
−4 Cette analyse impose donc une valeur maximale pour le pas.
4.2 Validation des résultats 4.3 Structure des programmes de résolution d’EDO du 1er ordre
Validation via une solution analytique d’un problème simplifié 1. un algorithme de base (appliquant une méthode d’ordre 1, 2, 3 ou 4 à la
fonction second membre f passée en argument) permettant d’avancer d’un
Lorsqu’une solution analytique est disponible (par exemple pour certaines valeurs
pas dans l’intégration de l’équation différentielle
de paramètres qui permettent de simplifier l’EDO), sa comparaison avec la solution
numérique permet de tester la méthode. Le calcul de l’erreur dans le domaine où la 2. éventuellement une procédure qui choisit le pas le plus grand possible
troncature domine permet d’extrapoler l’effet d’un changement de pas connaissant compatible avec la précision attendue et contrôle la progression de l’intégration
l’ordre de la méthode. (elle pourrait comporter un algorithme adaptatif)
3. un programme d’interface avec l’utilisateur qui choisit la méthode, le second
Validation sans solution analytique membre, lit les paramètres (conditions initiales par ex.), déclenche et arrête la
Dans le cas où aucune solution analytique de référence n’est disponible, la boucle d’intégration et stocke les résultats.
validation s’appuie sur les mêmes outils que les méthodes adaptatives : 4. un module comportant les fonctions seconds membres de l’équation
— diminution du pas (division par 2) différentielle et les éventuelles solutions analytiques exactes ou approchées
— augmentation de l’ordre de la méthode 5. un module d’utilitaires notamment pour écrire les résultats dans un fichier pour
— extrapolation de Gragg visualisation ultérieure.
— calcul d’invariants (énergie par exemple)
MNCS 48 2018-2019 MNCS 49 2018-2019
EDO 5 Systèmes d’EDO du 1er ordre EDO 5 Systèmes d’EDO du 1er ordre 5.1 Méthodes scalaires explicites
EDO 5 Systèmes d’EDO du 1er ordre 5.2 Équations de Lotka-Volterra EDO 5 Systèmes d’EDO du 1er ordre 5.2 Équations de Lotka-Volterra
k1 = k2 = 1, a1 = 1, a2 = 0, 2
Populations
Populations
5.0 5.0
prédateurs
prédateurs
4.0 4.0 0 0
0 20 40 60 80 100 0 20 40 60 80 100
3.0 3.0 temps temps
2.0 2.0
1.0 1.0
Méthode d’Euler progressive : Méthode de Runge Kutta d’ordre 4 :
0.0
0 5 10 15 20
0.0
0 5 10 15 20 Les solutions divergent Cycle stable
proies proies
Populations
−4
10 10−4
du premier ordre couplées en posant :
−6
10 10−6
10−8 10−8
y1 y y0 y2
−10 −10 1
10
0 20 40 60 80 100
10
0 20 40 60 80 100 y y0 y0 y3
2 2
temps temps
= =⇒ =
Méthode d’Euler progressive : divergente Méthode de Runge Kutta d’ordre 4 : stable
. . . . . . . . . ...
d ln y2 yn y (n−1) yn0
f (t, y1 , y2 , . . . , yn )
Pente avec peu de proies : ≈ −1/τ2 d’où facteur e−4 ≈ 1/54 sur une durée de 20 = 4τ2 .
dt
d ln y1
Pente avec peu de prédateurs : ≈ 1/τ1 d’où facteur 100 sur durée de 4, 6 = 4, 6τ1
dt
MNCS 56 2018-2019 MNCS 57 2018-2019
EDO 6 Équations différentielles d’ordre supérieur 6.1 Exemple EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
Exprimer cette EDO non linéaire du second ordre sous la forme d’un système
Condition initiale vectorielle : position y(t0 ) et vitesse y 0 (t0 )
différentiel couplé de dimension 2 mais du premier ordre.
Remarque Système différentiel d’ordre p de dimension n y y y0 y2
1 = =⇒ 1 =
⇒ système différentiel couplé du premier ordre à np dimensions. y2 y0 y20 −k 2 sin(y1 )
Résolution système non-linéaire, avec le vecteur des valeurs initiales : Comparaisons non-linéaire (Runge-Kutta 4)–analytique linéarisé : y(t)
pendule + sol. linéarisée: méth. ordre 4 vitesse ang. init=0.2 pendule + sol. linéarisée: méth. ordre 4 vitesse ang. init=1
0.25
méthode d’ordre 4
de 0.000000 à 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 2.0000000e−01
1.5
méthode d’ordre 4
de 0.000000 à 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 1.0000000e+00
= dy = 0.15
1.0
dt 0.05
theta
theta
0.00 0.0
−0.05
−0.05
−0.15
−0.15
−1.0
−1.0
2 −0.20
−0.20
1 dy −0.25
−0.25 −1.5
−1.5
+ k 2 (1 − cos y) = constante
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
estimé estimé
linéaire temps linéaire temps
2 2 3
valeurs initiales 0.0000000e+00 1.9800000e+00
50
valeurs initiales 0.0000000e+00 2.0200000e+00
1 dy 1 dy
+ k 2 (1 − cos y) = (0) 2 40
2 dt 2 dt 1 30
theta
0 20
dy −1
−1 10
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
Comparaisons non-linéaire (RK 4)–analytique linéarisé : plan de phase y 0 (y) Comparaisons non-linéaire (Euler)–analytique linéarisé y(t)
plan de phase pendule: méth. ordre 4 vitesse ang. init.=0.2 plan de phase pendule: méth. ordre 4 vitesse ang. init.=1 pendule + sol. linéarisée: méth. ordre 1 vitesse ang. init=0.2 pendule + sol. linéarisée: méth. ordre 1 vitesse ang. init=1
méthode d’ordre 4 méthode d’ordre 4 méthode d’ordre 1 méthode d’ordre 1
de 0.000000 à 50.000000 avec un pas de 0.01 de 0.000000 à 50.000000 avec un pas de 0.01 de 0.000000 à 50.000000 avec un pas de 0.01 de 0.000000 à 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 2.0000000e−01 valeurs initiales 0.0000000e+00 1.0000000e+00 valeurs initiales 0.0000000e+00 2.0000000e−01 valeurs initiales 0.0000000e+00 1.0000000e+00
0.25 1.0 0.3 1.5
0.20 0.8
0.2 1.0
0.15 0.6
0.10 0.4
0.1 0.5
0.05 0.2
dtheta/dt
dtheta/dt
theta
theta
0.00 0.0 0.0 0.0
−0.05 −0.2
−0.1
−0.1 −0.5
−0.5
−0.10 −0.4
−0.15 −0.6
−0.2
−0.2 −1.0
−1.0
−0.20 −0.8
dtheta/dt
theta
theta
−20
−20
0.0 0.0
20
−25
−25
−0.5
−0.5
−30
−30
10
−1.0
−1.0
−35
−35
−1.5
0
−1.5 −40
−40
−2.0
−45
−45 −10
−10
−2.0 −2.5 0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
−3 −2 −1 0 1 2 3 −10 0 10 20 30 40 50 estimé estimé
estimé estimé linéaire temps linéaire temps
linéarisé theta linéarisé theta
MNCS
a = 1.98 périodique non sinusoïdal 62
a = 2.02 apériodique 2018-2019 MNCS
a = 1.98 apériodique selon Euler ! 63
a = 2.02 2018-2019
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
0.2 1.0 Pendule linéarisé sans frottement représenté dans l’espace des phases :
0.1 0.5 comportement à long terme d’un système non dissipatif
dtheta/dt
dtheta/dt
0.0 0.0
−0.1 −0.5
Même méthode sur les 2 composantes (position et vitesse) h = 0.025
−0.2 −1.0
vitesse
vitesse
2.0
0 0
1.5
1.5
1.0
0.5
1.0 1 1
0.5
0.0
dtheta/dt
dtheta/dt
0.0
−0.5 2 2
−0.5
−1.0 3 2 1 0 1 2 3 3 2 1 0 1 2 3
−1.0
position position
−1.5
−1.5
−2.0 −2.0
−2.5 −2.5
−45 −40
estimé
−35
linéarisé
−30 −25 −20
theta
−15 −10 −5 0 5 −10 0
estimé
linéarisé
10 20
theta
30 40 50 60
F IGURE 4 – Euler progressive : in- F IGURE 5 – Euler rétrograde : stable,
MNCS
a = 1.98 apériodique selon Euler ! 64
a = 2.02 2018-2019 MNCS
stable, amplification 65
contraction 2018-2019
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule EDO 7 Implémentation vectorielle
Alternance des méthodes progressive et rétrograde entre position et vitesse 7 Mise en œuvre vectorielle des méthodes à un pas
pendulelin-EulerForBack-esp-phases pendulelin-EulerBackFor-esp-phases
[ 0.0e+00 , 5.0e+01] h= 2.50e-02 y0[0]=0.00e+00 y0[1]=1.00e+00 n= 2001 [ 0.0e+00 , 5.0e+01] h= 2.50e-02 y0[0]=0.00e+00 y0[1]=1.00e+00 n= 2001
1.5 1.5
7.1 Introduction
1.0 1.0
0.5 0.5
— Les méthodes d’intégration doivent fonctionner quelle que soit la taille p des
vecteurs qui représentent la solution
#– et le second membre #–
y f de l’EDO.
vitesse
vitesse
0.0 0.0
0.5 0.5 — Il en est de même pour l’interface formelle de la fonction second membre en
1.0 1.0 fortran ou le pointeur de fonction second membre en C.
1.5
2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0
1.5
2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0
— C’est le programme principal qui fixera cette taille.
position position
Il devra donc choisir un second membre de la même dimension.
— Les tailles des tableaux des seconds membres effectifs seront héritées du
F IGURE 6 – Euler mixte F IGURE 7 – Euler mixte
programme principal et non déclarées explicitement.
— progressive sur position, — rétrograde sur position, #–
Mais seules les p composantes effectives de f (2 pour le pendule : dérivée et
— rétrograde sur vitesse. — progressive sur vitesse. #–.
dérivée seconde) seront calculées à partir des p composantes de y
7.2 En fortran (norme 2003) 2. chacune des méthodes à un pas (Euler, point milieu et Runge Kutta) :
#–
Utiliser des fonctions à argument tableau de rang 1
#–
y les pentes locales ki seront des tableaux locaux, par exemple automatiques.
EDO 7 Implémentation vectorielle 7.2 En fortran (norme 2003) EDO 7 Implémentation vectorielle 7.3 En C89 avec des tableaux dynamiques
2. pour chacune des méthodes à un pas (Euler, point milieu et Runge Kutta) les
#–
pentes locales ki seront des tableaux alloués et libérés localement, car leur
3. Dans le programme principal (et dans la procédure d’écriture sur fichier), les
nombre dépend de la méthode ; en revanche, le résultat
#–
u i+1 qui est aussi solutions vectorielles (analytique et par intégration) sont représentées par des
vectoriel sera passé en argument (sous forme pointeur plus nombre
tableaux 2D. Mais la dimension temporelle n’est pas « vue » par les méthodes :
d’éléments), son allocation et libération prises en charge par l’appelant.
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela
void u2_milieu(int p, float *u1, float t1, float h, impose que les composantes des vecteurs soient contigües en mémoire, donc
float* (* ptr_f) (float, float*, int), le deuxième indice est celui des composantes, le premier celui du temps.
float * u2){
/* permettant d’avancer d’un pas en temps*/
float *k1 = NULL; /* vecteur pente */
float *k2 = NULL; /* vecteur pente */
/* allocation dans le main des tableaux 2D */
float *u12 = NULL; /* vecteur intermédiaire */ u = float2d(n, p); /* n instants et p equations */
k1 = (*ptr_f)(t1, u1, p); /* allocation par la fct IInd membre */ /* appel de la méthode du point milieu par exemple */
u12 = float1d (p); /* allocation locale */ u2_milieu(p, u[i], t[i], h, &pendule, u[i+1]);
/* ... */
/* donc u[i] est un tableau 1D = vecteur des composantes de u_i *
float1d_libere(k1); /* libération des vecteurs des pentes */
/* ... */
EDO 7 Implémentation vectorielle 7.4 En C99 avec des tableaux automatiques EDO 7 Implémentation vectorielle 7.4 En C99 avec des tableaux automatiques
7.4 En C99 avec des tableaux automatiques 2. pour chacune des méthodes à un pas (Euler, point milieu et Runge Kutta) les
#– #–
Fonctions à « argument tableau 1D » y de taille p déterminée à l’exécution pentes locales ki seront des tableaux locaux automatiques, car leur nombre
dépend de la méthode ; en revanche, le résultat
#–
Déclaration tardive des tableaux automatiques ⇒ éviter les tableaux dynamiques u i+1 qui est aussi vectoriel
Mais une fonction ne peut pas rendre un tableau ⇒ fonctions à résultat void sera passé en argument, sa déclaration étant prise en charge par l’appelant.
⇒ déclaration du tableau argument par l’appelant
et remplissage par la fonction appelée // C99 avec tableaux automatiques
void u2_milieu(int p, float u1[p], float t1, float h,
1. la fonction second membre de l’équation différentielle remplit le tableau void (* ptr_f) (float, int, float[], float[]),
#– #–
second_mb de taille p représentant f ( y , t) float u2[p]) {
qui a été déclaré par l’appelant (la méthode) avec la taille fixée par le main // methode permettant d’avancer d’un pas en temps
float k1[p] ; // vecteur pente à gauche
// version C99 avec tableaux automatiques float k2[p] ; // vecteur pente au milieu
void pendule(float t, int p, float u[p], float second_mb[p]){ float u12[p]; // vecteur intermédiaire
(*ptr_f)(t1, p, u1, k1); // évaluation du second membre en u1
// p = 2 ici = dimension des vecteurs u et second_membre
// résultat dans le vecteur local k1
second_mb[0] = u[1];
...
second_mb[1] = -sin(u[0]); // tableau u2[p] déclaré dans l’appelant et rempli ici (boucle)
return;
}
MNCS 74 2018-2019 MNCS 75 2018-2019
EDO 7 Implémentation vectorielle 7.4 En C99 avec des tableaux automatiques EDO RÉFÉRENCES RÉFÉRENCES
3. Dans le programme principal (et dans la procédure d’écriture sur fichier), les Références
solutions vectorielles (analytique et par intégration) sont représentées par des
tableaux 2D. Mais la dimension temporelle n’est pas « vue » par les méthodes : A KAI , T ERRENCE J., Applied Numerical Methods for Engineers, 410 pages (Wiley,
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela 1994), ISBN 0-471-57523-2.
impose que les composantes des vecteurs soient contigües en mémoire, donc
B URDEN , R ICHARD L. et J. D OUGLAS FAIRES, Numerical Analysis, 847 pages
le deuxième indice est celui des composantes, le premier celui du temps.
(Thompson, Brooks/Cole, 2005), huitième édition, ISBN 0-534-40499-5.