Académique Documents
Professionnel Documents
Culture Documents
Références :
http://homepage.univie.ac.at/Franz.Vesely/cp0102/dx/dx.html
De nombreux problèmes en physiques sont décrits par des équations d ’évolution
qui implique plusieurs paramètres (t et x souvent)
Equation d’onde
Equation de Shrodinger
Etc…
Comme elles impliquent plusieurs paramètres, l’équation différentielle fait intervenir
des dérivées partielles par rapport à chacun des paramètres
Equation d’onde
Equation de Shrodinger
Par exemple : Une grille à 3D pour l’espace et une grille à 1D pour le temps
Soit on travail dans l’espace de Fourrier (décomposition des fonctions sur une base
de fourrier) , et les méthodes seront appelées Spectrales. On travaille sur une base
finie (donc incomplète) sur laquelle les solutions se décomposent. On aura donc une
grille qui contiendra les termes de la décomposition.
Du
= f (r , t ) ⇔
Dt
∂u ∂u ∂x ∂u ∂y ∂u ∂z
+ + + = f (r , t ) ⇔
∂t ∂x ∂t ∂y ∂t ∂z ∂t
∂u r r
+ v ⋅ ∇u = f ( r , t )
∂t
« v scalaire gradient de u »
Si on étudie uniquement le cas à 1D
Et si la vitesse de l’eau est constante = C
∂ t u ( x, t ) + c∂ x u ( x, t ) = f ( x, t )
∂ t u ( x, t ) + c∂ x u ( x, t ) = f ( x, t )
Faisons le changement de variables suivant :
∂U ∂U
( β + cα ) + ( μ + cγ ) =0
∂X ∂T
si on prend β = -cα alors l' équation devient
∂U
=0 (tout simplement !!)
∂T
Alors U(X,T) = U(X) seulement
Donc u(x,t)=U(X)=u(αx-cαt)=u(x-ct)
an
x/
a1
a3
t=
c+
c+
c+
x/
x/
x/
t=
t=
t=
0
x
Xmin Xmax
t u e
is tiq
r
a cté
r
ca
Xmin x Xmax
xj=a+jdx et dx=(b-a)/J
tn=ndt et dt=T/N
Soit Un j l’approximation
numérique de u(xj, tn) dt
b
0 a
L’état initial du système est dx
donné par U0j pour tout j = u(xj,0)
Soyons d’accord sur les notations
temps
n
Uj
espace
∂ t u ( x, t ) + c∂ x u ( x, t ) = 0
Appliquons des méthodes d’ordre 1
∂U nj U nj +1 − U nj
≈ Opérateur différence avant explicite:
∂t dt D+ (fk)=fk+1-fk
et
∂U nj U nj − U nj−1 Opérateur différence arrière explicite:
≈ D- (fk)=fk-fk-1
∂x dx
∂U nj U nj +1 − U nj ∂U nj U nj − U nj−1
≈ ≈
∂t dt ∂x dx
n +1
U j −U n
j U −U
n
j
n
j −1
+c =0⇒
dt dx
n +1 ⎛ cdt ⎞ n
U j =U j −⎜
n
⎟ U j − U j −1
n
( )
⎝ dx ⎠
Le schéma d’intégration sera donc:
U n +1
j
⎛ cdt ⎞ n
=U −⎜
n
j (
⎟ U j − U j −1
n
)
⎝ dx ⎠
dx-cdt
p
tn
Uj-1n cdt Ujn
tn-1
ue
tiq
r is
cté
ra
ca
xj-1 xj Xj+1
dx-cdt cdt
⎛U ⎞n +1 ⎛U 0n ⎞
⎜ 0
⎟ ⎜ ⎟
⎜U1n +1 ⎟ ⎜U1n ⎟
⎜ ⎟ ⎜ ⎟
⎜ ... ⎟ ⎜ ... ⎟
⎜U n +1 ⎟ ⎜U n ⎟
⎝ J ⎠ ⎝ J⎠
⎛U 0n +1 ⎞ ⎛ CL 0 0 0 ⎛
0 ⎞⎜ 0 ⎞⎟
U n
⎜ ⎟ ⎜ ⎟ n
⎜U1n +1 ⎟ ⎜ σ 1 − σ 0 0 0 ⎟⎜U1 ⎟
⎜ ⎟ ⎜ ⎟⎜ ⎟
⎜ ... ⎟ = ⎜ 0 σ 1−σ 0 0 ⎜ ... ⎟
⎟
⎜ ... ⎟ ⎜ 0 0 σ ... ... ⎟⎜ ... ⎟
⎜ n +1 ⎟ ⎜ ⎟⎜ n⎟
⎜U J ⎟ ⎝ 0 0 0 σ 1 − σ ⎠⎜U J ⎟
⎝ ⎠ ⎝ ⎠
A est une matrice bi-diagonale
Stockage mémoire
CL ?? condition limite important
Fonction creneaux
Que se passe-t-il ?
dt=0.001
sigma)=0.02
On observe de la
« dispersion numérique »
=>
Diffusion artificielle
engendrée par le schéma
Autre exemple : crenaux
Dt=0.05
sigma=1
Dt=0.01
Sigma=0.2
Dissipation numérique… d’où viens tu ??
dx 2 ∂ U j −1
∂U j −1 2
U j = U j −1 + dx + + O ( dx 2
)
∂x 2 ∂x 2
donc
U j − U j −1 ∂U j −1
dx ∂ U j −1
2
= + + O(dx)
dx ∂x 2 ∂x 2
Terme dissipatif…
Analyse de stabilité : Méthode de Von Neuman
U =∑ f e
n
j k
n ikx j
=∑ f e k
n ik jdx
k k
K=1
Domaine : 0 < x < 1000
K=2
U =∑ f e
n
j k
n ik jdx
K=3 k
approche spectrale :
travailler sur les f plutôt
que sur les U
K=4 etc…
U nj = ∑ f kn e ik jdx
k
Schéma d’intégration
U n +1
j = (1 − σ )U nj + σ U n
j −1
⇒ On remplace U par sa TF
∑ k
f kn +1 e ikj dx = (1 − σ ) ∑ f kn e ikj dx + σ ∑ f kn e ik ( j −1) dx =
k k
n +1
fk = (1 − σ + σe −ikdx
)f k
n
g (k ) = (1 − σ + σe −ikdx
) = 1 + σ (e −ikdx
− 1)
g (k ) = 1 − 2σ (1 − σ )(1 − cos(kdx) )
2
∂U nj U nj +1 − U nj
temps =
∂t dt
∂U nj U nj − U nj−1
= si C > 0
∂x dx
Espace
∂U nj U nj+1 − U nj
= si C < 0
∂x dx
Il est stable si la condition CFL est remplie
Mais il est dispersif
Il est principalement utilisé pour propager des fonctions avec des bords nets
(ondes de choc)
Exploration d’autres schémas d’intégration
- Schémas implicites
On peu s’inspirer du développement de Taylor pour établir d’autres
schémas d’intégration
J-1 j J+1
dx ∂ ∂U nj
2 n
Uj 2
(1) U j +1 = U j + dx
n n
+ + O ( dx 2
) D.L. en XJ+dx
∂x 2! ∂x 2
∂U n
j dx 2
∂ 2 n
Uj
(2) U j −1 = U j − dx
n n
+ + O ( dx 2
) D.L. en Xj - dx
∂x 2! ∂x 2
∂U nj U nj+1 − U nj−1 1 ⎡ U n
j +1 − U n
j U n
j − U n
j −1
⎤
= = ⎢ + ⎥
∂x 2dx 2 ⎢⎣ dx dx ⎥⎦
On peut continuer l’exercice pour des ordres plus élevés
∂U nj 4 dx 2
∂ 2 n
U j 8 dx 3
∂ 2 n
Uj
(1) U j + 2 = U j + 2dx
n n
+ + + O ( dx 3
)
∂x 2! ∂x 2
3! ∂x 3
∂ U n
j dx 2
∂ 2 n
U j dx 3
∂ 2 n
Uj
(2) U j +1 = U j + dx
n n
+ + + O ( dx 3
)
∂x 2! ∂x 2
3! ∂x 3
∂ U n
j dx 2
∂ 2 n
U j dx 3
∂ 3 n
Uj
(3) U j −1 = U j − dx
n n
+ − O ( dx 3
)
∂x 2! ∂x 2
3! ∂x 3
⇒
∂U nj − U nj+ 2 + 6U nj+1 − 3U nj − 2U nj−1
= + O(dx 3 )
∂x 2dx
Etc…
Mais ces méthodes impliquent d’aller chercher l’information plus « loin »
dans le temps ou l’espace .
∂ t u ( x, t ) + c∂ x u ( x, t ) = 0
∂U nj U nj +1 − U nj −1
≈ ∂U nj U nj+1 − U nj−1
∂t 2dt =
∂x 2dx
U −U n n
1
2dt
( n +1 n −1
U j −U j + c ) 2dx
j +1 j −1
=0⇒
n +1 n −1 n
(
U j = U j − σ U j +1 − U j −1
n
)
Nouvel Algorithme d’intégration
Problème : Comment Calculer le 1ER pas de temps (N=1) car on ne connaît pas
le système à N=-1.
3. Calculer U2=AleapfrogU1+U0
Pas de temps On garde en mémoire
suivants par 4. U0=U1 et U1=U2 Un-1
leap-frog
5. Retourner en 3
Comparaison upwind Vs leap frog, sigma=0.2
U n +1
j =U n −1
j −σ U ( n
j +1 −U n
j −1 )
N+3
Il y a toujours un décalage
de 2 .
N+2 En fait on découple les temps
pairs et impairs
N+1
temps
espace
Une méthodes implicite : le Cranck-Nicholson
Elles sont inconditionnellement stables.
N+2 =
∂t dt
N+1 ⎡
∂u 1 ∂u ∂u ⎤ U (
n+1
−Un+1
1 j+1 j−1 + U)(
n
j+1 −Un
j−1 )
temps
= ⎢ + ⎥ =
∂x 2 ⎣∂x t=n+1 ∂x t=n ⎦ 2 2dx
N
∂u ∂u
+c = 0 ⇒
N-1 ∂t ∂x
σ σ
U n +1
j +
4
(U n +1
j +1 −U n +1
j −1 )=U n
j −
4
(U n
j +1 −U n
j −1 )
⇒
n +1
AU = BU n
n +1 −1
U = A BU n
σ σ
U n +1
j +
4
(U n +1
j +1 −U n +1
j −1 )=U n
j −
4
(U n
j +1 −U n
j −1 )
n +1 n +1 −1
⇒ AU = BU ⇒ Un
= A BU n
⎛ 1 σ /4 0 0 0⎞ ⎛ 1 −σ / 4 0 0 0⎞
⎜ ⎟ ⎜ ⎟
⎜−σ / 4 1 σ /4 0 0⎟ ⎜σ / 4 1 −σ / 4 0 0⎟
A=⎜ 0 −σ / 4 1 σ /4 0 ⎟; B = ⎜ 0 σ /4 1 −σ / 4 0⎟
⎜ ⎟ ⎜ ⎟
⎜ 0 0 −σ / 4 ... ... ⎟ ⎜ 0 0 σ /4 ... ... ⎟
⎜ 0 −σ / 4 1 ⎟⎠ ⎜ 0 σ /4 1 ⎟⎠
⎝ 0 0 ⎝ 0 0
1 − σ / 2i sin( dx)
g (k ) =
1 + σ / 2i sin( dx)
Donc la norme de g(k) est 1 pour tout k,donc c’est une méthode inconditionnellement
convergente.
Elle est adaptée pour les problèmes très doux, mais produit des oscillations dés
qu’il y a des discontinuités.
Evolution de la solution
………….
Reprenons la fonction gaussienne, mais, diminuons le nombre de boîtes en X
⇒
∂U nj dx 2
∂ 2 n
Uj
(1) U j +1 − U j = dx
n n
+ + O ( dx 2
)
∂x 2! ∂x 2
∂U n
j ∂ 2 n
Uj
(2) U j + 2 − U j = 2dx
n n
+ 2dx 2
+ O ( dx 2
)
∂x ∂x 2
On trouve donc :
∂ 2U nj U nj+ 2 − 2U nj+1 + U nj
≈ + o(dx) « Différence AVANT »
∂x 2 dx 2
∂ 2U nj U nj− 2 − 2U nj−1 + U nj
≈ + o(dx) « Différence ARRIERE »
∂x 2
dx 2
∂ 2U nj U nj+1 − 2U nj + U nj−1
≈ + o(dx 2 ) « Différence CENTREE »
∂x 2
dx 2
Les même formules s’appliquent pour les dérivées temporelles (remplacer x par t)
Exemple
∂ 2U nj U nj+−11 − U nj −1 − U nj−1 + U nj
≈ + o(dx) + o(dt ) « Différence ARRIERE »
∂x∂t dxdt
∂U ∂U 2
−λ 2 = 0
Exemple :
équation de la chaleur λ=diffusivité thermique
(Fourrier)
∂t ∂x
Méthode la plus simple : Explicite
∂U nj U nj +1 − U nj
Temps : différence avant ≈
∂t dt
∂ 2U nj U nj+1 − 2U nj + U nj−1
Espace : différence centrée ≈ + o(dx 2 )
∂x 2 dx 2
U n +1
j = (1 − 2σ )U + σ (U n
j
n
j −1 +U n
j +1 )
où σ = λdt / dx 2
U n +1
j = (1 − 2σ )U nj + σ (U n
j +1 +U n
j −1 )
∑ k
u
k
n + 1 ikj dx
e = (1 − 2 σ ) ∑ ke +
u n ikj dx
⎛ ⎞
σ ⎜⎜ ∑ u kn e ik ( j +1) dx + ∑ u kn e ik ( j −1) dx ⎟⎟
⎝ k k ⎠
⇒
∑ k
u
k
n + 1 ikj dx
e = (1 − 2 σ ) ∑ k
u n ikj dx
e
k
+ ( e − ikdx
+ e + ikdx
)σ ∑ ke
u n ikj dx
⎛ kdx ⎞
En regroupant terme à terme on trouve g (k ) = 1 − 4σ sin 2 ⎜ ⎟
⎝ 2 ⎠
dx 2 1
g (k )2 ≤ 1 ⇔ dt ≤ ⇔ σ <
2λ 2
On retrouve à nouveau une condition proche de la condition de courant (CFL)
En pratique : cette méthode explicite est donc STABLE si CFL est respecté, cependant
Comme elle n’est que d’ordre 1 en temps elle est très diffusive et pas très bonne
λ est le cœfficient de diffusion. On montre en théorie cinétique des gaz (cf. le cours
sur les gaz parfaits) que le temps nécessaire pour diffuser sur une distance
dx est : dx2/2λ … Donc c’est bien une quantité physique..
C’est la nouvelle condition de courant (CFL) pour la chaleur.
Ici SIGMA=0.4
Temps : idem ∂U nj U nj +1 − U nj
≈
∂t dt
− σU nj++11 + (1 + 2σ )U nj +1 − σU nj−+11 = U nj
où σ = λdt / dx 2
Pour résoudre , on adopte à nouveau une démarche matricielle
n +1 n +1
AU =U n
⇒ U =A U-1 n
Avec A :
⎛1 + 2σ −σ 0 0 ⎞ 0
⎜ ⎟
⎜ − σ 1 + 2σ −σ 0 0 ⎟
A=⎜ 0 − σ 1 + 2σ −σ 0 ⎟
⎜ ⎟
⎜ 0 0 −σ ... ... ⎟
⎜ 0 ⎟
− σ 1 + 2σ ⎠
⎝ 0 0
Temps : idem ∂U nj U nj +1 − U nj
≈
∂t dt
1 ⎛⎜ U j +1 − 2U j + U j −1 U j +1 − 2U j + U j −1 ⎞⎟
n +1 n +1 n +1
∂ 2U nj n n n
≈ + + o ( dx 2
)
∂x 2 2⎝ ⎜ dx 2
dx 2 ⎟
⎠
Ici σ=a
Stabilité : ||g(k)||2=
TESTS : ça marche bien, est c’est plus précis que les méthodes précédentes
Les équations ELLIPTIQUES (ou Problèmes à Conditions Limites)
Les équations elliptiques ne dépendent pas du temps.
Par exemple : Equation de Poisson pour le potentiel electrique
∇ 2U = − ρ ( x, y, z ) ⇔
« laplacien »
∂ 2U ∂ 2U ∂ 2U − ρ ( x, y, z )
+ 2 + 2 =
∂x 2
∂y ∂z ε0
grad ( P)
∇ v=−
2
ρη
Écoulement de Poiseuille
On voit dans tous les cas que le temps n’intervient pas .
Cela signifie que l’on calcule UN CHAMP : il faut calculer la valeur de U en tout
point de l’espace.
Ils sont en général assez complexes a résoudre. Nous les survolerons rapidement
Il existe quelques méthodes matricielles, mais les meilleures sont les méthodes
spectrale, i.e où le système est résolu dans l’espace de fourrier et ensuite converti
∂ 2U ∂ 2U − ρ
+ 2 =
∂x 2
∂y ε0
En prenant pour expression de la dérivée seconde, la différence centrés, on
Aboutit à une équation du genre
Y
Charge électrique
au nœud i,j
i
Poids
: -4
:1
Origine de la complexité des équations elliptiques
L x U = C
1 1
S-1 S+1
Mais pour décaler les colonnes ?
Réfléchissons un peu ….
On voit donc que les équations elliptiques sont très coûteuses en mémoire et
en calcul
Si on pose :
f X=M*dx
Où dx=0.157
En fait F=100*cos(x)
m
Faisons la convolution par G=[1,1,1] /3 (G est appelé « Noyau de Convolution »)
Comme
Soit C=f*g , alors chaque point de C est remplacé par la moyenne des trois
points voisins de f
[1/3,1/3,1/3]
[0.,97.6,94.0,88.0, 79.6, 69.3, 57.6, 44.3, 30.0,15.0, 0.0, 15.0, -30.0, -44.3, -57.6, -69.3, -79.6,…]
Ligne : f
Tirets : f*g
On fait parcourir une boite glissante, le nouyeau de convolution sur une grille
Laplacien
0 1 0
i 1 -4 1 * =
0 1 0
g U Laplacien de U
On fait « glisser » g sur la grille U pour obtenir le laplacien de U
Ex :
∇ f = (U * lap )( x, y ) = − ρ ( x, y )
2
Opérateur Laplacien
U*xLap*=ρ* =>
∇ U = − ρ ( x, y )
2
Mais on se souvient que le potentiel engendré par UNE charge qi à la position ri est :
q
Vi (r ) =
r − ri
Alors U peut se réécrire plus simplement
qi
U (r ) = ∑ = (ρ * p ) Convolution
i r − ri
Où ρ(r)= charge à la position r
Où P(r)=1/R
« blanc » = +1
« noir » =-1
ρ(r)
Noyau de convolution : 1/R
P(r)
Affichage code de couleurs Affichage P(x,y)
ρ P
TF TF
ρ* P*
ρ* P*
X =
U*
U* : Transformée de Fourrier du Champ U
ρ U
CONCLUSION sur les équations elliptiques
Les fonctions elliptiques (qui nécessitent de calculer un champ sur une grille)
nécessitent une résolution assez complexe car l’équation qui permet
ne les calculer n’est pas linéaire et ne s’écrit pas simplement
avec des matrices.
Les approches spectrales, qui passent par une TF, sont souvent les plus
rapides (grâce à l’algorithme FFT) .