Partie 2 math
Partie 2 math
Partie 2 math
Modélisation Mathématique
Première année
2019-2020
Imad EL MAHI
Table des matières
2
Chapitre 2
On a par dénition :
∂u u(x + ∆x, y, z, t) − u(x, y, z, t)
(x, y, z, t) = lim ←− Cette relation est exacte.
∂x ∆x→0 ∆x
∂u
Donnons maintenant une approximation de (x, y, z, t).
∂x
3
Faisons un DL de u(x + ∆x, y, z, t) au voisinage de (x, y, z, t) avec ∆x → 0.
∂u (∆x)2 ∂ 2 u
u(x + ∆x, y, z, t) = u(x, y, z, t) + ∆x (x, y, z, t) + (x, y, z, t)
∂x 2! ∂x2
(∆x)n ∂ n u
(x, y, z, t) + O (∆x)n+1 )
+......... + n
n! ∂x
Si on tronque ce DL à l'ordre 1 en ∆x, on aura :
∂u
u(x + ∆x, y, z, t) = u(x, y, z, t) + ∆x (x, y, z, t) + O((∆x)2 )
∂x
On obtient alors :
∂u u(x + ∆x, y, z, t) − u(x, y, z, t)
(x, y, z, t) = + O(∆x)
∂x ∆x
∂u
Nous venons en fait de donner une une approximation diérences nies de qui est :
∂x
∂u u(x + ∆x, y, z, t) − u(x, y, z, t)
(x, y, z, t) '
∂x ∆x
avec une précision d'ordre 1 (puissance de ∆x dans l'erreur de troncature).
Et on a la dénition :
Dénition 2.2.1 On appelle ordre d'une méthode, la puissance de ∆x avec laquelle l'erreur de
troncature tend vers 0.
a = x1 x2 x3 xi−1 xi xi+1 xN = b
b−a
On note par ∆x = le pas du maillage (ici a = 0 et b = 2).
N −1
Les n÷uds du maillage sont :
x1 = a ; x2 = a + ∆x ; . . . ; xi = a + (i − 1)∆x
4
Le problème continue (2.1) qui consiste à chercher la fonction u(x) sur l'intervalle [a, b] de di-
mension inni se ramène alors à la recherche de N valeurs discrètes ui en chaque n÷ud xi du
maillage.
On dit qu'on a remplacé le problème continu par un problème discret.
Le problème discret s'écrit alors :
Chercher u(xi ) pour i = 2, . . . , N vériant
5
c'est-à-dire :
ui+1 − ui−1
u0i = + O (∆x)2
2∆x
Autrement dit, une approximation d'ordre 2 "centrée" de u0i est :
ui+1 − ui−1
u0i '
2∆x
Remarque 1:
1. En général, pour obtenir des ordres encore supérieurs, il faut utiliser plusieurs n÷uds
voisins de xi . Le nombre de n÷uds nécessaires pour l'écriture du schéma numérique est
appelé "stencil".
2. An de pouvoir conclure sur l'ordre d'un schéma, il est conseillé de pousser les dévelop-
pements limités susamment loin.
3. En théorie, la précision d'un schéma d'ordre supérieur est plus élevée. Mais attention, ceci
n'est vrai que dans la limite ∆x, ∆t → 0. D'ailleurs, parfois un schéma d'ordre 1, peut
s'avérer être plus précis qu'un schéma d'ordre supérieur à ∆x, ∆t nis.
Par exemple, nous avons l'inégalité :
x ≤ 10 x2 ⇐⇒ x ≥ 0.1
Exercice 1 Ecrire un schéma aux diérences nies d'ordre 3 par l'approximation de la dérivée
u0i au n÷ud xi (Indication : utiliser les valeurs de u aux n÷uds xi , xi−1 , xi+1 , et xi+2 ).
Réponse
−ui+2 + 6ui+1 − 3ui − 2ui−1
u0i = + O (∆x)3
6 ∆x
on peut aussi utiliser les valeurs de u aux n÷uds xi−2 , xi−1 , xi , xi+1 , et on obtient :
−ui−2 + 6ui−1 − 3ui − 2ui+1
u0i = + O (∆x)3
−6 ∆x
Détail corrigé
On fait le DL de ui+1 , ui+2 , ui−1 au voisinage de xi à l'ordre 3 :
ui+1 = u(xi+1 ) = u(xi + ∆x)
(∆x)2 00 (∆x)3 (3)
= ui + ∆x u0i + ui + O (∆x)4
ui +
2 3!
ui+2 = u(xi+2 ) = u(xi + 2∆x)
(2∆x)2 00 (2∆x)3 (3)
= ui + 2∆x u0i + ui + O (∆x)4
ui +
2 3!
ui−1 = u(xi−1 ) = u(xi − ∆x)
(∆x)2 00 (∆x)3 (3)
= ui − ∆x u0i + ui + O (∆x)4
ui −
2 3!
6
On fait une combinaison linéaire de ui+1 , ui+2 et ui−1 :
(∆x)2
αui+1 + βui+2 + γui−1 = (α + β + γ)ui + ∆x(α + 2β − γ)u0i + (α + 4β + γ)u00i (2.3)
2
(∆x)3 (3)
(α + 8β − γ)ui + O (∆x)4
+
3!
Pour obtenir u0i en fonction de ui , ui−1 , ui+1 et ui+2 , on annule on les coecients de u00i et u(3)
i .
On impose alors que :
α + 4β + γ = 0
α + 8β − γ = 0 ⇒ 2α + 12β = 0 ⇒ α = −6β
α + 2β − γ 6= 0
Ce qui donne :
6ui+1 − ui+2 − 2ui−1 − 3ui
u0i + O (∆x)3
=
6 ∆x
u0 + ui = xi − 1
i
u1 = 1
Si on utilise le schéma aux diérences nies décentré amont :
ui − ui−1
u0i '
∆x
alors le problème discret devient :
Trouver ui pour i = 2, . . . , N tel que :
ui − ui−1
+ ui = xi − 1
∆x
u1 = 1
c'est-à-dire :
1
ui = (ui−1 + ∆x(xi − 1)) pour i = 2, . . . , N
1 + ∆x
u =1
1
Exercice 2 Programmer cette méthode aux diérences nies sous Matlab, puis comparer la so-
lution numérique avec la solution exacte.
La solution exacte de l'équation diérentielle étant :
u(x) = 3e−x + x − 2
7
2.4 Diérences nies pour un problème elliptique 1D
2.4.1 Modèle mathématique
On considère une barre métallique de longueur 1 m chauée par une source de chaleur f et
dont les deux extrémités sont plongées dans un milieu où la température est nulle (la glace par
exemple).
On note par u(x) la température en un point x.
x1 = 0 x2 x3 xi−1 xi xi+1 xN = 1
On a :
1
xi = xi−1 + ∆x = (i − 1)∆x avec ∆x =
N −1
Le problème continue (2.4) est remplacé par le problème discret suivant :
Chercher u(xi ) pour i = 2, . . . , N − 1 vériant
soit :
ui−1 − 2ui + ui+1
u00i = + O (∆x)2
(∆x) 2
8
c'est-à-dire qu'une approximation à l'ordre 2 de u00i est :
ui−1 − 2ui + ui+1
u00i '
(∆x)2
Avec ce choix d'approximation de u00i , on peut approcher le problème (2.5) par le problème discret
suivant :
Trouver u2 , u3 , . . . , un−1 ∈ R /
ui−1 − 2ui + ui+1
− = fi pour i = 2, . . . , N − 1 (2.6)
(∆x)2
u1 = uN = 0
En i = 2, on a :
u1 − 2u2 + u3
− = f2
(∆x)2
Puisque u1 = 0 alors
1
− (−2u2 + u3 ) = f2
(∆x)2
En i = N − 1, on a :
1
− (uN −2 − 2uN −1 + uN ) = fN −1
(∆x)2
Or uN = 0, alors
1
− (uN −2 − 2uN −1 ) = fN −1
(∆x)2
Et pour 3 ≤ i ≤ N − 2, on a :
1
− (ui−1 − 2ui + ui+1 ) = fi
(∆x)2
9
−2 1 0 ··· ··· ···
0 u2 f2
1 −2 1 0 ··· ··· 0 u3 f3
0 1 −2 1 0 ··· 0 u4 f4
. . . . ... ... .. .. ..
−
1 .. .. .. .. . . = .
(∆x)2
. . .
... ... ... ...
.. 0 .. ..
0 ··· ··· 0 1 −2 1 uN −2 fN −2
0 ··· ··· ··· 0 1 −2 uN −1 fN −1
Matrice tridiagonale
| {z }
⇐⇒
AU = b
a = x1 x2 x3 xi−1 xi xi+1 xN = b
10
1
∆x = , et xi = xi−1 + ∆x = (i − 1)∆x
N −1
• Le temps t est aussi discrétisé en des intervalles ∆t (t0 , t1 , . . . , tn , . . .)
avec tn+1 = tn + ∆t ∆t étant le pas du temps.
On note par ui la température au n÷ud xi à l'instant tn = n∆t.
n
Dérivée temporelle :
Pour la discrétisation temporelle, il y a deux manières de procéder : soit utiliser un schéma
explicite, soit un schéma implicite.
∂u
Tout d'abord, une approximation à l'ordre 1 en temps de s'écrit :
∂t i
∂u un+1
i − uni
'
∂t i ∆t
11
Comme on connait u0i ( pour i = 1, . . . , N ), alors on peut calculer u1i à l'instant t1 = ∆t par le
procédé itératif (2.9), puis u2i et ainsi de suite.
En fait le schéma est dit explicite car les un+1
i à l'instant tn+1 = (n + 1)∆t se déduisent directe-
ment des ui à l'instant t = n∆t qui sont connues. Il n'y a aucun système à résoudre.
n n
Remarque 1:
Le schéma (2.9) est très simple à mettre en oeuvre, cependant on montrera par la suite que pour
être stable, il nécessite une restriction sur le pas du temps ∆t. Ce dernier doit être choisi de telle
sorte que la condition suivante soit vériée :
2D
∆t ≤1
(∆x)2
Soit
−λun+1 n+1
− λun+1 n
pour i = 2, . . . , N − 1 (2.11)
i−1 + (1 + 2λ)ui i+1 = ui
D∆t
avec λ = .
(∆x)2
Le schéma aux diérences nies implicite (2.11) peut être écrit sous la forme matricielle suivante :
un+1
−λ ··· ··· ··· un2 + λTg
1 + 2λ 0 0 2
un+1 un3
−λ 1 + 2λ −λ 0 · · · · · · 0 3
n+1
un4
0 −λ 1 + 2λ −λ 0 · · · 0 u4
.. . . .
. . . . .. .. ..
.. .. .. ..
.
. .. = .
. . . . ..
.. .. .. .. ..
0 .
. .
. . . ..
.. .. .. ..
0 0
n+1 un
0 ··· ··· 0 −λ 1 + 2λ −λ
uN −2 N −2
0 ··· ··· ··· 0 −λ 1 + 2λ n+1 n
uN −1 + λTd
u N −1
On voit donc qu'à chaque instant, c'est-à-dire qu'à chaque passage de tn à tn+1 , ce schéma
nécessite la résolution d'un système linéaire dont la matrice est tridiagonale.
12
Néanmoins, ce schéma possède l'avantage d'être inconditionnellement stable c'est-à-dire stable
quelque soit le choix du pas du temps ∆t (comme on le verra par la suite). L'un des avantages
des schémas implicites est qu'ils se permettent l'utilisation de grands pas de temps et donc sont
bien adaptés pour la simulation des problèmes longs en temps physique.
Remarque 2:
Pour la résolution du système linéaire avec matrice tridiagonale, on peut utiliser l'algorithme de
Thomas, qui eectue la factorisation LU de Gauss et qui nécessite un coût de calcul de 8N − 7
opérations (3(N − 1) opérations pour la factorisation et 5N − 4 opérations pour la substitution).
Algorithme de Thomas
a1 c1 0 · · · · · · 0
b2 a2 c2 0 · · · 0
. . .
. . . . . .
0
A=
.
. .
cn−1
0 · · · · · · 0 bn an
On décompose : A = L U avec :
1 0 ··· 0 α1 c1 · · · 0
.. ..
. .
β2
... .. . . .
L=0
. ; U =0
.. .. ..
. .
.. ..
cn−1
0 · · · 0 βn 1 0 ··· αn
On aura alors :
α1 = a1
b2 b2
β2 α1 = b2 =⇒ β2 = =
α1 a1
b2
β2 c1 + α2 = a2 =⇒ α2 = a2 − β2 c1 = a2 − c1
a1
..
.
13
où L est un opérateur diérentiel, et l'équation approchée s'écrit :
Lh (u) = 0
alors
ET = L(u) − Lh (u)
On voit que l'erreur de troncature en temps est en O(∆t) et celle en espace est en O (∆x)2 .
2.6.2 Consistance
En fait, pour une même équation diérentielle ou aux dérivées partielles, il existe une multi-
tude de schémas numériques permettant de résoudre cette équation. Il faut donc assurer que le
schéma représente bien l'équation exacte dans la limite où le pas d'espace ∆x et la pas de temps
∆t tendent vers zero, et partout dans le domaine considéré. On parle de consistance du schéma.
Dénition 2.6.2 Un schéma aux diérences nies est dit consistant si et seulement si :
lim ET = 0
∆x→0
∆t→0
Exemple 2.6.2 Le schéma (2.13) pour l'équation de la chaleur (2.12) est consistant. En eet :
lim ET = lim O(∆t) + O (∆x)2
∆t→0 ∆t→0
∆x→0 ∆x→0
or
|O(∆t)| ≤ λ1 |∆t| −→ 0 =⇒ lim O(∆t) = 0
∆t→0 ∆t→0
et
O( ∆x)2 ≤ λ2 (∆x)2 −→ 0 =⇒ lim O (∆x)2 = 0
∆x→0 ∆x→0
14
2.6.3 Stabilité d'un schéma numérique
Dénition 2.6.3 Un schéma numérique est dit stable si la solution numérique calculée par ce
schéma reste bornée dans le temps et dans l'espace.
Autrement dit, les erreurs produites par le schéma (Erreur de troncature, erreurs d'arrondi, ...)
ne doivent pas croître lors de la procédure numérique.
La stabilité du schéma numérique est parfois attachée aux valeurs du pas du temps ∆t et du pas
d'espace ∆x.
En fait, trois cas sont possibles pour un schéma numérique :
• Il peut être inconditionnellement stable, c'est-à-dire stable quelque soit le choix de ∆t et
∆x (généralement c'est le cas des schémas implicites).
• Conditionnellement stable (cas de schémas explicites).
• Il peut être instable.
2.6.4 Convergence
Dénition 2.6.4 Un schéma numérique sera dit convergent pour une norme donné (notée k.k),
si pour toute solution initiale u0 et pour tout n ∈ N, on a :
lim kunh − unex k = 0
∆x→0
∆t→0
Théorème de Lax
Pour un problème linéaire aux valeurs initiales, la solution numérique d'un schéma itératif en
temps aux diérences nies converge vers la solution exacte si le schéma est consistant et stable.
15
unj = C n eiξxj avec xj = j∆x et ξ est le nombre d'onde.
puis injecter cette solution dans le schéma numérique, et étudier le comportement de la suite de
fonction (C n )n∈N .
On obtient une relation de récurrence sur les C n . Et on a :
si la suite de fonctions (C n )n∈N est bornée pour la norme L2 alors le schéma numérique est stable,
sinon il est instable.
Exemple 2.6.3 Considérons l'équation de la chaleur :
∂u ∂2u
−D 2 =0
∂t ∂x
et soit le schéma aux diérences nies explicite suivant :
un+1
j − unj unj−1 − 2unj + unj+1
−D =0
∆t (∆x)2
16
c'est-à-dire :
ξ∆x
−1 ≤ 1 − 4λ sin2 ( )≤1 ∀ξ ∈ R
2
or on a toujours
ξ∆x ξ∆x
1 − 4λ sin2 ( )≤1 car 4λ sin2 ( ≥0
2 2
Il reste :
ξ∆x
−1 ≤ 1 − 4λ sin2 ( )
2
ξ∆x
⇔ −2 ≤ −4λ sin2 ( )
2
ξ∆x
⇔ 2λ sin2 ( ) ≤ 1 ∀ξ ∈ R
2
ξ∆x
⇔ sup(2λ sin2 ( )) ≤ 1
ξ∈R 2
2∆tD
⇔ 2λ ≤ 1 ⇐⇒ ≤1
(∆x)2
Exemple 2.6.4 Considérons cette fois-ci un schéma implicite pour l'équation de la chaleur :
un+1
j − unj un+1 n+1
j−1 − 2uj + un+1
j+1
−D =0
∆t (∆x)2
1
C n+1 = Cn
(1 + 2λ) − λ(e−iξ∆x + eiξ∆x )
1
C n+1 = Cn
ξ∆x
1 + 4λ sin2 ( )
2
= A Cn
17
or
1
∀ξ ∈ R ; |A| = ≤1
ξ∆x2
1 + 4λ sin ( )
2
Il s'en suit que le schéma implicite est stable dans L2 (R).
On dit qu'il est inconditionnellement stable (c'est-à-dire quelques soient les paramètres ∆t et
∆x).
| − λ +{zλe
−iξ∆x
C n+1 = (1 }) C
n
A
On doit avoir :
|A| ≤ 1 ∀ξ ∈ R
or
∀ξ ∈ R ; 2λ(1 − cos(ξ∆x)) ≥ 0 car λ>0
On doit donc avoir :
λ−1≤0
c'est-à-dire :
c∆t
λ= ≤1
∆x
18
Exercice 3 On reprend l'équation d'advection précédente (avec c > 0).
∂u ∂u
+c = 0 ∀x ∈ R ; ∀t > 0
∂t ∂x
u(x, 0) = u0 (x) ∀x ∈ R
Étudier l'ordre, la consistance et la stabilité de Fourier - Von Neumann des schémas suivants :
un+1
j − ujn−1 unj+1 − unj−1
+c =0
2∆t 2∆x
∂u n un+1
j − unj
=⇒ = + O(∆t)
∂t j ∆t
n
∂u
• unj+1 = u(xj + ∆x, tn ) = unj + ∆x + O((∆x)2 )
∂x j
∂u n unj+1 − unj
=⇒ = + O(∆x)
∂x j ∆x
c'est-à-dire
lim ET = 0
∆t→0
∆x→0
19
Stabilité
Le schéma (1) s'écrit :
c∆t
un+1
j = unj − λ(unj+1 − unj ) avec λ =
∆x
on pose
unj = C n eiξj∆x
on injecte cette solution dans le schéma :
C n+1 eiξj∆x = C n eiξj∆x − λ(C n eiξ(j+1)∆x − C n eiξj∆x )
C n+1 = [1 {zλe }] C
iξ∆x n
|+λ−
A
Ordre et consistance
∂u n un+1
j − unj
= + O(∆t)
∂t j ∆t
n n
∂u (∆x)2 ∂ 2 u
unj+1 = unj + ∆x + O (∆x)3 (2.14)
+
∂x j 2 ∂x2 j
n n
∂u (∆x)2 ∂ 2 u
unj−1 = unj − ∆x + O (∆x)3 (2.15)
+
∂x j 2 ∂x2 j
∂u n unj+1 − unj−1
(2.14)-(2.15) =⇒ + O (∆x)2
=
∂x j 2∆x
= O(∆t) + O (∆x)2
ET
|ET | ≤ |O(∆t)| + |O(∆x)2 | ≤ λ1 ∆t + λ2 (∆x)2 −→ 0
∆t/∆x→0
20
Stabilité
Le schéma s'écrit :
c∆t
un+1
j = unj − λ(unj+1 − unj−1 ) avec λ =
2∆x
On pose :
unj = C n eiξj∆x
On l'injecte dans le schéma
h i
C n+1 eiξj∆x = eiξj∆x − λ(eiξ(j+1)∆x − eiξ(j−1)∆x ) C n
h i
C n+1 = 1 − λ(eiξ∆x − e−iξ∆x ) C n
C n+1 = [1 − 2i sin(ξ∆x)] C n
| {z }
A
Or
|A|2 = |1 − 2iλ sin(ξ∆x)|2
= 1 + 4λ2 sin2 (ξ∆x) ≥ 1 ∀ξ ∈ R
Donc le schéma (2) est instable.
Schéma 3 (Leap-frog)
un+1
j − ujn−1 unj+1 − unj−1
+c =0
2∆t 2∆x
n n
∂u (∆t)2 ∂ 2 u
un+1 unj + O (∆t)3 (2.16)
j = + ∆t +
∂t j 2 ∂t2 j
n n
∂u (∆t)2 ∂ 2 u
un−1 = unj − ∆t + O (∆t)3 (2.17)
j +
∂t j 2 ∂t2 j
∂u n un+1 − ujn−1
(2.16)-(2.17) =⇒ j
+ O (∆t)2
=
∂t j 2∆t
De même on a :
∂u n unj+1 − unj−1
+ O (∆x)2
=
∂x j 2∆x
= O((∆t)2 ) + O (∆x)2
ET
21
Stabilité
Le schéma s'écrit :
c∆t
un+1
j = un−1
j − λ(unj+1 − unj−1 ) avec λ =
∆x
On pose :
unj = C n eiξj∆x
on l'injecte dans le schéma
C n+1 eiξj∆x = C n−1 eiξj∆x − λ(C n eiξ(j+1)∆x − C n eiξ(j−1)∆x )
c∆t
⇔ λ2 ≤ 1 ⇔ λ= ≤1
∆x
22