Stabilité des schémas aux différences finies et analyse de von Neumann I- Schémas d Euler explicite/implicite pour l équation de la chaleur, étude de stabilité en " (µ > 0)
u 0 à support compact " [#R,R], L >> R Numériquement, on discrétise :
Grille de calcul : u n (x j ) " u(x j,n #t) Exemple 1 : schéma d Euler explicite
Le schéma d Euler explicite est consistant, d ordre 1 en t et d ordre 2 en x : Solution exacte de l'équation de la chaleur, restreinte à la grille de pas d'espace "x et pas de temps "t : u(j"x,n"t) = u n (j"x) En x = x j = j "x, t = n"t, on obtient avec un développement de Taylor : u n +1 (x) " u n (x) #t = $u $t = (x,n#t) + O(#t) u(x,(n +1)#t) " u(x,n#t) #t
u n (x + "x) # 2u n (x) + u n (x # "x) "x 2 = u (x + "x,n"t) + u(x # "x,n"t) # 2u(x,n"t) "x 2 = 1 "x 2 ( "x 2 $ 2 u $x 2 (x,n"t) + O("x 4 ) ) = $ 2 u $x 2 (x,n"t) + O("x 2 ) u n +1 (x) " u n (x) #t = $u $t = O(#t + #x 2 ) " µ u n (x + #x) " 2u n (x) + u n (x " #x) #x 2 (x,n#t) " µ $ 2 u $x 2 (x,n#t) + O(#t + #x 2 ) ("erreur de troncature", ou "erreur de consistance") schéma consistant, d ordre 1 en t et d ordre 2 en x
Ecriture matricielle du schéma : u n (x j ) " u(x j,n #t)
Exemple 2 : schéma d Euler implicite (ordre 1 en t, ordre 2 en x) Le schéma d Euler implicite est consistant, d ordre 1 en t et d ordre 2 en x On note la solution exacte de l'équation de la chaleur u(j"x,n"t) = u n (j"x)
u n +1 (x + "x) # 2u n +1 (x) + u n +1 (x # "x) "x 2 = $ 2 u $x 2 [x,(n +1)"t] + O("x 2 ) = $ 2 u $x 2 (x,n"t) + O("x 2 + "t) u n +1 (x) " u n (x) #t = $u $t = O(#t + #x 2 ) " µ u n +1 (x + #x) " 2u n +1 (x) + u n +1 (x " #x) #x 2 (x,n#t) " µ $ 2 u $x 2 (x,n#t) + O(#t + #x 2 ) schéma consistant, d ordre 1 en t et d ordre 2 en x
Ecriture matricielle du schéma d Euler implicite : " = µ #t #x 2 coef. CFL, V n = u n (x j ) ( ) $N +1% j%n$1
Un système linéaire à résoudre à chaque pas de temps, toujours même matrice A Exemples de méthodes numériques : LU ou Cholesky cas tridiagonal, complexité O(N)
Explicite CFL=0.49, T=1 CFL=2, T=1 Implicite Explicite "x = 0.1 Explicite CFL=0.51, T=1 CFL=0.51, T=0.5
" = µ#t /#x 2 est fixé, #t $ 0, #x $ 0 Définition de la stabilité (l " ) du schéma : #c > 0 tel que pour tous $t,$x assez petits : V n " # c V 0 " $n /0 # n%t # T Remarque : la taille des vecteurs et matrices tend vers l infini quand Δx Lemme Euler explicite stable sous condition CFL : β 1/2 Euler implicite inconditionnellement stable
Schéma explicite : V n +1 = M(")V n V n " # Mn " V 0 " $ il faut borner M n indépendamment de %t,%x pour " & = µ%t/%x 2 fixé et 0 # n %t # T Si " #1/2 alors M $ = Max i & V n $ # M $ n V 0 $ = V 0 $ % m ij =1 j & schéma stable (matrice M positive)
Schéma explicite : V n +1 = M(")V n Si " >1/2 : Valeurs propres de B " M 2N#1 (IR) : 4[sin(q k /2)] 2, q k = k$ /(2N), k =1K2N #1 [ ] i=1k2n#1 Vecteurs propres % k = sin(q k i) Valeurs propres de M " M 2N#1 (IR) : $ k =1-4%[sin(q k /2)] 2 " 2N#1 =1# 4$ + O(%x 2 ) = #(4$ #1) + O(%t), 4$ #1>1 & si n 0 = E(T /%t) ' ( alors : M n 0 ) 2N#1 ( ) 2N#1 ( = " 2N#1 n 0 = (4$ -1)n 0 exp[n 0 * O(%t)] ' ( Schéma instable
Schéma implicite : V n +1 = A(") #1 V n A(") à diagonale strictement dominante : ' * # = Min a ii $ a ij i ) &, =1> 0 ( j%i + - A $1 /. #$1 =1 - A $n /1. - V n. = A$n V 0. / V 0. schéma stable
Bilan : " = µ#t /#x 2 est fixé, #t $ 0, #x $ 0 En " : Euler explicite stable sous condition CFL : β 1/2 Euler implicite inconditionnellement stable La preuve utilise des propriétés assez fortes des matrices du schéma (positivité, valeurs propres explicites, dominance diagonale stricte) besoin d un outil plus général : analyse de von Neumann (complémentaire à la notion d équation équivalente introduite précédemment)
II- Méthode de von Neumann : II-1 Idée générale : Basée sur l analyse de Fourier (EDP à coefs constants) Stabilité L 2 Néglige les conditions aux bord du domaine, où u 0 Passage des grands vecteurs ( taille O(N) ) à des fonctions de x: V n
Exemple : équation de la chaleur, Euler explicite (application linéaire continue) On calcule ensuite u n en utilisant la transformée de Fourier / x, et on étudie si reste borné
II-2 Reformulation explicite d un schéma différences finies par transformée de Fourier, matrice d amplification u n (x) = approximation numérique de u(x,n"t) solution d'une EDP d'évolution x # IR d, u n # [L 2 (IR d )] p vecteur à p composantes Schéma différences finies discrétisant l'edp : % A j ("t,"x) u n +1 (x + j"x) = % B j ("t,"x) u n (x + j"x) j $q j $q j = (j 1,K j d ), j k entiers naturels, j = j & A j,b j # M p (IR) Exemple : équation de transport schéma implicite centré : u n +1 (x) + c"t 2"x (un +1 (x + "x) # u n +1 (x # "x)) = u n (x)
transformée de Fourier : [F(u)](") = ˆ u (")= ",x & IR d, % IR d exp(#i2$" x) u(x) dx 1 Kdx d " x = " 1 x 1 +L+ " d x d Equation définissant le schéma : # A j ($t,$x) u n +1 (x + j$x) = # B j ($t,$x) u n (x + j$x) j "q j "q Prenons la transformée de Fourier de l'équation précédente : ' ) () # A j ($t,$x)exp(i2%& j$x) j "q *, u +, ˆ ' * n +1 (&) = )# B j ($t,$x)exp(i2%& j$x), u () j "q +, ˆ n (&) H 1 ("t,"x,2#$) % M p ( ) H 2 ("t,"x,2#$) % M p ( )
Hypothèse : H 1 ("t,"x,k) inversible #k $ IR d " ˆ u n +1 (#) = H 1 ($t,$x,2%#) &1 H 2 ($t,$x,2%#) ˆ u n (#) G("t,"x,2#$) % M p ( ) Matrice d amplification (ou symbole) du schéma Reformulation «explicite» du schéma : u n +1 = F "1 [ G(#t,#x,2$%) u ˆ n (%)] = C(#t,#x) u n
u n +1 = F "1 [ G(#t,#x,2$%) u ˆ n (%)] = C(#t,#x) u n C("t,"x) : [L 2 (IR d )] p # [L 2 (IR d )] p opérateur linéaire continu? Lemme : Soit G : IR d " M p ( ) une fonction continue et bornée et P : [L 2 (IR d )] p " [L 2 (IR d )] p un opérateur linéaire défini par P u = F "1 [ G(2#$) u ˆ ] Alors P est continu et P = Sup k "IR d G(k) 2 Hypothèse : det(h 1 ("t,"x,k)) # $ > 0 %k & IR d " G(#t,#x,.) vérifie les hyp. du lemme et C(#t,#x) est continu
II-3 Définition générale de la stabilité d un schéma Schéma différences finies discrétisant une EDP d'évolution pour t " [0,T] : u n +1 = C(#t,#x) u n, u 0 condition initiale u n " X espace de fonctions de x, espace de Banach (ex. X = L 2 (IR), X = L $ (IR)) u n (x) = approximation numérique de u(x,n#t) solution de l'edp d'évolution, u(.,0) = u 0 C(#t,#x) : X % X application linéaire continue 0 & n#t & T Pas de temps et d'espace admissibles : ("t,"x) # $ Trois définitions possibles de $ : * $ =]0,%[&]0,%[ * 0 < "t ' c"x ( (c,( > 0) * 0 < "t = c"x ( (c,( > 0)
Schéma (S) : u n +1 = C("t,"x) u n, u 0 condition initiale donnée # u n = C("t,"x) n u 0 Définition : Le schéma (S) est stable dans X si "K T > 0 tel que : #($t,$x) % & dans un voisinage assez petit de (0,0), #n vérifiant 0 ' n$t ' T, C($t,$x) n ' K T Rappel : C($t,$x) n = Sup u X =1 C($t,$x) n u X (norme d'application linéaire continue)
Remarque : si C("t,"x) #1 alors le schéma (S) est stable dans X car C("t,"x) n # C("t,"x) n #1 Exemples : Ex 1: Schéma décentré amont pour l équation de transport : C>0 u n +1 = C("t,"x) u n [C("t,"x) u n ](x) = (1#$)u n (x) + $ u n (x # "x) Pour $ = c"t /"x %]0,1], on a dans X = L p (IR) : C("t,"x) u X & (1#$) u X + $ u(.# "x) X = u X ' C("t,"x) &1' schéma stable dans X = L p (IR)
Ex 2: Schéma d Euler explicite pour l équation de diffusion : L p (IR) Pour " = µ#t /#x 2 $]0,1/2], on a dans X = L p (IR) : C(#t,#x) u X % (1& 2") u X + " u(.+ #x) X + " u(.& #x) X = u X ' C(#t,#x) %1' schéma stable dans X = L p (IR)
II-4 Stabilité L2, analyse de von Neumann u n +1 = F "1 [ G(#t,#x,2$%) u ˆ n (%)] = C(#t,#x) u n (S) C("t,"x) : [L 2 (IR d )] p # [L 2 (IR d )] p opérateur linéaire continu, G("t,"x,.) : IR d # M p ( ) fonction continue et bornée Lemme : Le schéma (S) est stable dans [L 2 (IR d )] p si et seulement si "K T > 0 tel que : #($t,$x) % & dans un voisinage assez petit de (0,0), #n vérifiant 0 ' n$t ' T, #k % IR d, on a : G($t,$x,k) n ' K T (norme matricielle quelconque) C("t,"x) n u = F #1 [ G("t,"x,2$%) n u ˆ ] " C(#t,#x) n = Sup k $IR d G(#t,#x,k) n 2
u n +1 = F "1 [ G(#t,#x,2$%) u ˆ n (%)] = C(#t,#x) u n (S) Théorème de stabilité (von Neumann) Condition nécessaire pour la stabilité du schéma (S) dans [L 2 (IR d )] p : "(#t,#x) $ % dans un voisinage assez petit de (0,0), Sup k $IR d &[ G(#t,#x,k) ] '1+ O(#t) (v.n.) De plus, si G normale (GG * = G * G), alors cette condition est suffisante. C'est le cas en particulier lorsque p =1. Rappels : "(G) = rayon spectral de G (plus grand module des valeurs propres de G) G * = G T (G n ) n"0 bornée si et seulement si #(G) <1 **OU ** #(G) =1 et les valeurs propres de G de module 1 sont semi- simples
Demo du Thm : v.n. condition nécessaire : ["(G)] n = "(G n ) # G n $ exp[nln("(g))] est borné 2 qui est borné par hypothèse exp[nln("(g))] = exp[n%t ln("(g)) ] avec n%t & [0,T] %t $ ln("(g)) # C %t $ "(G) # exp(c%t) =1+ O(%t)
v.n. condition suffisante si matrice G normale : G normale " G n normale #n $ 0 G n normale " %(G n ) = G n 2 ( car matrice normale & diagonalisable dans base orthonormée) " G n = 2 %(Gn ) = [%(G)] n = exp[n ln(%(g))] ' exp[t ln(%(g)) ] (t %(G) '1+ O((t) " G n est borné 2
Ex 1: Schéma d Euler explicite pour l équation de diffusion : Supposons " = µ#t /#x 2 constant L 2 (IR) u n +1 (x) = (1$ 2")u n (x) + " ( u n (x + #x) + u n (x $ #x)) u ˆ n +1 = (1" 2#) u ˆ n + # ( u ˆ n exp(i2$%&x) + u ˆ n exp("i2$%&x)) = [1+ 2#(cos(2$%&x) "1)] u ˆ n ' G(&t,&x,k) =1+ 2#(cos(k&x) "1) =1" 4#(sin(k&x /2)) 2
Condition de stabilité de von Neumann : CNS G est scalaire (v.n.) G("t,"x,k) =1# 4$(sin(k"x /2)) 2 % [1# 4$,1] * si 1" 4# < "1, c'est à dire # > 1/2 : Sup G k $IR = 4# "1 (constante >1) % condition v.n. non satisfaite % schéma instable dans L 2 (IR) * si 1" 4# $ "1, c'est à dire # %1/2 : Sup G k &IR =1 ' condition v.n. satisfaite ' schéma stable dans L 2
Ex 2: Schéma d Euler implicite pour l équation de diffusion : (1+ 2")u n +1 (x) # " ( u n +1 (x + $x) + u n +1 (x # $x)) = u n (x) " = µ$t /$x 2 est constant u ˆ n +1 [ 1+ 2" # "(exp(i2$%&x) + exp(#i2$%&x)) ] = u ˆ n u ˆ n +1 [ 1+ 2"(1# cos(2$%&x)) ] = u ˆ n u ˆ n +1 = G(&t,&x,2$%) u ˆ n ' G(&t,&x,k) = 1 1+ 4"(sin(k&x /2)) 2 Sup G =1 # condition v.n. satisfaite (CNS ici) # schéma stable dans L 2 (IR) k "IR stabilité inconditionnelle (i.e. quels que soient les paramètres)
Ex 3 : schéma de Lax-Wendroff pour l équation de transport Schéma de Lax-Wendroff Coefficient d amplification G : (" = c#t /#x constant)
Après quelques simplifications : Si α >1 : >1 " Schéma instable dans Si α 1 : " Schéma de Lax-Wendroff stable dans si c Δt / Δx 1