Vous êtes sur la page 1sur 12

[Chapitre : Méthode des différences finies en 2D]

Chapitre 3.

Méthode des différences finies en 2D

17
[Chapitre : Méthode des différences finies en 2D]

3.1 Discrétisation du domaine


Supposant que nous cherchons à résoudre une équation différentielle aux dérivées partielles de variables x
et y, tel que : x,y ϵ [0,Lx]x[0,Ly]. La discrétisation consiste à diviser le domaine d’étude en un nombre fini
de points dans les deux directions de manière à avoir une grille dont l’intersection des lignes et colonnes
donne les nœuds du maillage créé [3 ; 4 ; 5].

Figure 3.1 Maillage


Soit, Δx et Δy, les pas de discrétisation suivant x et y, alors le nombre de points dans chaque direction est :
𝐿𝑥 𝐿𝑦
𝑁= 𝑒𝑡 𝑀= (57)
∆𝑥 ∆𝑦

La discrétisation des deux axes donne :

𝑥𝑖 =(𝑖 − 1)∆𝑥 𝑎𝑣𝑒𝑐 𝑖 = 1,2, … , 𝑁 (58)

𝑦𝑖 =(𝑗 − 1)∆𝑦 𝑎𝑣𝑒𝑐 𝑗 = 1,2, … , 𝑁 (59)

𝑢(𝑥𝑖 , 𝑦𝑗 ) =𝑢𝑖,𝑗 (60)

3.2 Approximation des dérivées partielles


L’approximation des dérivées partielles pour un problème 2D, peut être aisément déduite de celles
développée pour un problème 1D.
Schéma décentré à droite
𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖+1,𝑗 −𝑢𝑖,𝑗
= (61)
𝜕𝑥𝑖 ∆𝑥

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖+2,𝑗 −2𝑢𝑖+1,𝑗 +𝑢𝑖,𝑗


2 = (∆𝑥)2
(62)
𝜕𝑥𝑖

18
[Chapitre : Méthode des différences finies en 2D]

𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗+1 −𝑢𝑖,𝑗


= (63)
𝜕𝑦𝑗 ∆𝑦

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗+2 −2𝑢𝑖,𝑗+1 +𝑢𝑖,𝑗


2 = (∆𝑦)2
(64)
𝜕𝑦𝑗

Schéma décentré à gauche


𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗 −𝑢𝑖−1,𝑗
= (65)
𝜕𝑥𝑖 ∆𝑥

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗 −2𝑢𝑖−1,𝑗 +𝑢𝑖−2,𝑗


2 = (∆𝑥)2
(66)
𝜕𝑥𝑖

𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗 −𝑢𝑖,𝑗−1


= (67)
𝜕𝑦𝑗 ∆𝑦

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗 −2𝑢𝑖,𝑗−1 +𝑢𝑖,𝑗−2


2 = (∆𝑦)2
(68)
𝜕𝑦𝑗

Schéma centré
𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖+1,𝑗 −𝑢𝑖−1,𝑗
= (69)
𝜕𝑥𝑖 2∆𝑥

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖+1,𝑗 −2𝑢𝑖,𝑗 +𝑢𝑖−1,𝑗


2 = (∆𝑥)2
(70)
𝜕𝑥𝑖

𝜕𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗+1 −𝑢𝑖,𝑗−1


= (71)
𝜕𝑦𝑗 2∆𝑦

𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖,𝑗+1 −2𝑢𝑖,𝑗 +𝑢𝑖,𝑗−1


2 = (∆𝑦)2
(72)
𝜕𝑦𝑗

Dérivées croisées
𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝜕 𝜕𝑢(𝑥𝑖 ,𝑦𝑗 )
= [ ] (73)
𝜕𝑥𝑖 𝜕𝑦𝑗 𝜕𝑥𝑖 𝜕𝑦𝑗

En utilisant un schéma centré, on aura


𝑢𝑖+1,𝑗+1 −𝑢𝑖+1,𝑗−1 𝑢𝑖−1,𝑗+1 −𝑢𝑖−1,𝑗−1
𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝜕 𝑢𝑖,𝑗+1 −𝑢𝑖,𝑗−1 2∆𝑦
− 2∆𝑦
= [ ]= (74)
𝜕𝑥𝑖 𝜕𝑦𝑗 𝜕𝑥𝑖 2∆𝑦 2∆𝑥

Enfin :
𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝑢𝑖+1,𝑗+1 −𝑢𝑖+1,𝑗−1 −𝑢𝑖−1,𝑗+1 +𝑢𝑖−1,𝑗−1
= (75)
𝜕𝑥𝑖 𝜕𝑦𝑗 4∆𝑥∆𝑦

19
[Chapitre : Méthode des différences finies en 2D]

3.3 Exemple de résolution de l’équation elliptique avec les conditions de Dirichlet


Soit à résoudre :
𝜕2 𝑢(𝑥,𝑦) 𝜕2 𝑢(𝑥,𝑦)
𝐴 +𝐵 = 𝑓(𝑥, 𝑦)
𝜕𝑥 2 𝜕𝑦 2
(𝑥, 𝑦) ∈ [0, 𝐿𝑥 ] × [0, 𝐿𝑦 ] (76)
𝑢(𝑥, 0) = 𝑡𝑏 , 𝑢(𝑥, 𝐿𝑦 ) = 𝑡ℎ
{ 𝑢 (0, 𝑦) = 𝑡𝑔 , 𝑢(𝐿𝑥 , 𝑦) = 𝑡𝑑
Discrétisation du domaine
Le domaine de calcul est discrétisé en N× M nœuds (xi, yj) (i variant de 1 à N et j variant de 1 à M). On
supposera que les pas d'espace dans chaque direction ∆x et ∆y sont constants. La valeur discrète au nœud
(xi, yj) sera notée uij = u(xi, yj).

Figure 3.5. Maillage

La forme discrétisée de l’équation différentielle peut s’écrire :


𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 ) 𝜕2 𝑢(𝑥𝑖 ,𝑦𝑗 )
𝐴 +𝐵 = 𝑓(𝑥𝑖 , 𝑦𝑗 )
𝜕𝑥𝑖2 𝜕𝑦𝑗2

𝑥𝑖 = (𝑖 − 1)∆𝑥, 𝑖 = 1,2, … , 𝑁
𝑦𝑗 = (𝑗 − 1)∆𝑦, 𝑗 = 1,2, … , 𝑀 (77)

𝑢 (𝑖, 1) = 𝑡𝑏 , 𝑢(𝑖, 𝑀) = 𝑡ℎ
{ 𝑢(1, 𝑗) = 𝑡𝑔 , 𝑢 (𝑁, 𝑗) = 𝑡𝑑
Discrétisation l’équation différentielle
En remplaçant les dérivées secondes par leurs expressions en utilisant un schéma centré, on obtient :
𝑢𝑖+1,𝑗 −2𝑢𝑖,𝑗 +𝑢𝑖−1,𝑗 𝑢𝑖,𝑗+1 −2𝑢𝑖,𝑗 +𝑢𝑖,𝑗−1
𝐴[ ]+𝐵[ ] = 𝑓𝑖𝑗 (78)
(∆𝑥)2 (∆𝑦)2

𝐴[𝑢𝑖+1,𝑗 + 𝑢𝑖−1,𝑗 ](∆𝑦)2 + 𝐵[𝑢𝑖,𝑗+1 + 𝑢𝑖,𝑗−1 ](∆𝑥)2 − 2[𝐵(∆𝑥)2 + 𝐴(∆𝑦)2 ]𝑢𝑖,𝑗 = (∆𝑥. ∆𝑦)2 𝑓𝑖𝑗 (79)

20
[Chapitre : Méthode des différences finies en 2D]

C’est le schéma général de base qui donne les valeurs de Uij à n’importe quel points du maillage avec i
varie de 2 à N-1 et j de 2 à M-1.
Le développement de ce schéma par incrémentation de i et j, donne :
On pose : 𝛼 = 2[𝐵(∆𝑥 )2 + 𝐴(∆𝑦)2 ]
J=2
𝐴[𝑢𝑖+1,2 + 𝑢𝑖−1,2 ](∆𝑦)2 + 𝐵[𝑢𝑖,3 + 𝑢𝑖,1 ](∆𝑥 )2 − 𝛼𝑢𝑖,2 = (∆𝑥. ∆𝑦)2 𝑓𝑖2
𝐴[𝑢𝑖+1,2 + 𝑢𝑖−1,2 ](∆𝑦)2 + 𝐵. 𝑢𝑖,3 (∆𝑥 )2 − 𝛼𝑢𝑖,2 = (∆𝑥. ∆𝑦)2 𝑓𝑖2 − 𝐵. 𝑡𝑏 (∆𝑥 )2
𝐴𝑢𝑖−1,2 (∆𝑦)2 − 𝛼𝑢𝑖,2 + 𝐵. 𝑢𝑖,3 (∆𝑥 )2 + 𝐴𝑢𝑖+1,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑖2 − 𝐵. 𝑡𝑏 (∆𝑥 )2
i=2
𝐴𝑢1,2 (∆𝑦)2 − 𝛼𝑢2,2 + 𝐵. 𝑢2,3 (∆𝑥 )2 + 𝐴𝑢3,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓22 − 𝐵. 𝑡𝑏 (∆𝑥 )2
−𝛼𝑢2,2 + 𝐵. 𝑢2,3 (∆𝑥 )2 + 𝐴𝑢3,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓22 − 𝐵. 𝑡𝑏 (∆𝑥 )2 − 𝐴𝑡𝑔 (∆𝑦)2
i=3
𝐴𝑢2,2 (∆𝑦)2 − 𝛼𝑢3,2 + 𝐵. 𝑢3,3 (∆𝑥 )2 + 𝐴𝑢4,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓32 − 𝐵. 𝑡𝑏 (∆𝑥 )2
i=4
𝐴𝑢3,2 (∆𝑦)2 − 𝛼𝑢4,2 + 𝐵. 𝑢4,3 (∆𝑥 )2 + 𝐴𝑢5,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓42 − 𝐵. 𝑡𝑏 (∆𝑥 )2
……………………………………………………………………………………………………………………………………
i=N-1
𝐴𝑢𝑁−2,2 (∆𝑦)2 − 𝛼𝑢𝑁−1,2 + 𝐵. 𝑢𝑁−1,3 (∆𝑥 )2 + 𝐴𝑢𝑁,2 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,2 − 𝐵. 𝑡𝑏 (∆𝑥 )2
𝐴𝑢𝑁−2,2 (∆𝑦)2 − 𝛼𝑢𝑁−1,2 + 𝐵. 𝑢𝑁−1,3 (∆𝑥 )2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,2 − 𝐵. 𝑡𝑏 (∆𝑥)2 − 𝐴𝑡𝑑 (∆𝑦)2
J=3
𝐴[𝑢𝑖+1,3 + 𝑢𝑖−1,3 ](∆𝑦)2 + 𝐵[𝑢𝑖,4 + 𝑢𝑖,2 ](∆𝑥)2 − 𝛼𝑢𝑖,3 = (∆𝑥. ∆𝑦)2 𝑓𝑖3
𝐴𝑢𝑖−1,3 (∆𝑦)2 − 𝛼𝑢𝑖,3 + 𝐵. 𝑢𝑖,2 (∆𝑥 )2 + 𝐵. 𝑢𝑖,4 (∆𝑥 )2 + 𝐴𝑢𝑖+1,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑖2
i=2
𝐴𝑢1,3 (∆𝑦)2 − 𝛼𝑢2,3 + 𝐵. 𝑢2,2 (∆𝑥 )2 + 𝐵. 𝑢2,4 (∆𝑥 )2 + 𝐴𝑢3,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓22
−𝛼𝑢2,3 + 𝐵. 𝑢2,2 (∆𝑥 )2 + 𝐵. 𝑢2,4 (∆𝑥 )2 + 𝐴𝑢3,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓22 − 𝐴𝑡𝑔 (∆𝑦)2
i=3
𝐴𝑢2,3 (∆𝑦)2 − 𝛼𝑢3,3 + 𝐵. 𝑢3,2 (∆𝑥 )2 + 𝐵. 𝑢3,4 (∆𝑥)2 + 𝐴𝑢4,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓32
i=4
𝐴𝑢3,3 (∆𝑦)2 − 𝛼𝑢4,3 + 𝐵. 𝑢4,2 (∆𝑥 )2 + 𝐵. 𝑢4,4 (∆𝑥)2 + 𝐴𝑢5,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓42
……………………………………………………………………………………………………………………………………
i=N-1
𝐴𝑢𝑁−2,3 (∆𝑦)2 − 𝛼𝑢𝑁−1,3 + 𝐵. 𝑢𝑁−1,2 (∆𝑥 )2 + 𝐵. 𝑢𝑁−1,4 (∆𝑥 )2 + 𝐴𝑢𝑁,3 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,2

21
[Chapitre : Méthode des différences finies en 2D]

𝐴𝑢𝑁−2,3 (∆𝑦)2 − 𝛼𝑢𝑁−1,3 + 𝐵. 𝑢𝑁−1,2 (∆𝑥 )2 + 𝐵. 𝑢𝑁−1,4 (∆𝑥 )2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,2 − 𝐴𝑡𝑑 (∆𝑦)2

……………………………………………………………………………………………………………………………………

J=M-1
𝐴[𝑢𝑖+1,𝑀−1 + 𝑢𝑖−1,𝑀−1 ](∆𝑦)2 + 𝐵[𝑢𝑖,𝑀 + 𝑢𝑖,𝑀−2 ](∆𝑥)2 − 𝛼𝑢𝑖,𝑀−1 = (∆𝑥. ∆𝑦)2 𝑓𝑖,𝑀−1
𝐴𝑢𝑖−1,𝑀−1 (∆𝑦)2 − 𝛼𝑢𝑖,𝑀−1 + 𝐵. 𝑢𝑖,𝑀−2 (∆𝑥 )2 + 𝐴𝑢𝑖+1,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑖,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2
i=2
𝐴𝑢1,𝑀−1 (∆𝑦)2 − 𝛼𝑢2,𝑀−1 + 𝐵. 𝑢2,𝑀−2 (∆𝑥)2 + 𝐴𝑢3,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓2,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2
−𝛼𝑢2,𝑀−1 + 𝐵. 𝑢2,𝑀−2 (∆𝑥)2 + 𝐴𝑢3,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓2,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2 − 𝐴𝑡𝑔 (∆𝑦)2
i=3
𝐴𝑢2,𝑀−1 (∆𝑦)2 − 𝛼𝑢3,𝑀−1 + 𝐵. 𝑢3,𝑀−2 (∆𝑥)2 + 𝐴𝑢4,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓3,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2
i=4
𝐴𝑢3,𝑀−1 (∆𝑦)2 − 𝛼𝑢4,𝑀−1 + 𝐵. 𝑢4,𝑀−2 (∆𝑥)2 + 𝐴𝑢5,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓4,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2
……………………………………………………………………………………………………………………………………
i=N-1
𝐴𝑢𝑁−2,𝑀−1 (∆𝑦)2 − 𝛼𝑢𝑁−1,𝑀−1 + 𝐵. 𝑢𝑁−1,𝑀−2 (∆𝑥)2 + 𝐴𝑢𝑁,𝑀−1 (∆𝑦)2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥 )2
𝐴𝑢𝑁−2,𝑀−1 (∆𝑦)2 − 𝛼𝑢𝑁−1,𝑀−1 + 𝐵. 𝑢𝑁−1,𝑀−2 (∆𝑥)2 = (∆𝑥. ∆𝑦)2 𝑓𝑁−1,𝑀−1 − 𝐵. 𝑡ℎ (∆𝑥)2 + 𝐴𝑡𝑑 (∆𝑦)2

Pour un nombre de points N=M=5 dans les deux directions, on aura :

-α A(Δy)2 0 B(Δx)2 0 0 0 0 0 u22 (∆𝑥. ∆𝑦)2 𝑓22 − 𝐵. 𝑡𝑏 (∆𝑥)2 − 𝐴𝑡𝑔 (∆𝑦)2


A(Δy)2 -α A(Δy)2 0 B(Δx)2 0 0 0 0 u32 (∆𝑥. ∆𝑦)2 𝑓32 − 𝐵. 𝑡𝑏 (∆𝑥)2
0 A(Δy)2 -α 0 0 B(Δx)2 0 0 0 u42 (∆𝑥. ∆𝑦)2 𝑓4,2 − 𝐴𝑡𝑑 (∆𝑦)2
B(Δx) 2
0 0 -α A(Δy)2
0 B(Δx)2 0 0 u23 (∆𝑥. ∆𝑦)2 𝑓22 − 𝐴𝑡𝑔 (∆𝑦)2
0 B(Δx)2 0 A(Δy)2 -α A(Δy)2 0 B(Δx)2 0 u33 = (∆𝑥. ∆𝑦)2 𝑓32
0 0 B(Δx)2 0 A(Δy)2 -α 0 0 B(Δx)2 u43 𝐴(∆𝑥. ∆𝑦)2 𝑓4,2 − 𝐴𝑡𝑑 (∆𝑦)2
0 0 0 B(Δx)2 0 0 -α A(Δy)2 0 u24 (∆𝑥. ∆𝑦)2 𝑓2,4 − 𝐵. 𝑡ℎ (∆𝑥)2 − 𝐴𝑡𝑔 (∆𝑦)2
0 0 0 0 B(Δx) 2
0 A(Δy)2
-α A(Δy)2 u34 (∆𝑥. ∆𝑦)2 𝑓3,4 − 𝐵. 𝑡ℎ (∆𝑥)2
0 0 0 0 0 B(Δx)2 0 A(Δy)2 -α u44 (∆𝑥. ∆𝑦)2 𝑓4,4 − 𝐵. 𝑡ℎ (∆𝑥)2 + 𝐴𝑡𝑑 (∆𝑦)2

22
[Chapitre : Méthode des différences finies en 2D]

Si on pose :
-α A(Δy)2 0 B(Δx)2 0 0 u22 u23 u24
B= A(Δy)2 -α A(Δy)2 I= 0 B(Δx)2 0 U1= u32 U2= u33 U3= u34
0 A(Δy)2 -α 0 0 B(Δx)2 u42 u43 u44

(∆𝑥. ∆𝑦)2 𝑓22 − 𝐵. 𝑡𝑏 (∆𝑥)2 − 𝐴𝑡𝑔 (∆𝑦)2 (∆𝑥. ∆𝑦)2𝑓22 − 𝐴𝑡𝑔 (∆𝑦)2
F1= (∆𝑥. ∆𝑦)2 𝑓32 − 𝐵. 𝑡𝑏 (∆𝑥)2 F2= (∆𝑥. ∆𝑦)2𝑓32
(∆𝑥. ∆𝑦)2 𝑓4,2 − 𝐴𝑡𝑑 (∆𝑦)2 𝐴(∆𝑥. ∆𝑦)2 𝑓4,2 − 𝐴𝑡𝑑 (∆𝑦)2

(∆𝑥. ∆𝑦)2 𝑓2,4 − 𝐵. 𝑡ℎ (∆𝑥)2 − 𝐴𝑡𝑔 (∆𝑦)2


F3= (∆𝑥. ∆𝑦)2 𝑓3,4 − 𝐵. 𝑡ℎ (∆𝑥)2
(∆𝑥. ∆𝑦)2 𝑓4,4 − 𝐵. 𝑡ℎ (∆𝑥)2 + 𝐴𝑡𝑑 (∆𝑦)2

Cette forme matricielle peut être réécrite comme suit :

B I 0 U1 F1
(80)
I B I U2 = F2

0 I B U3 F3

On peut généraliser cette expression pour obtenir l’équation matricielle globale qui donne toutes les
valeurs de la solution cherchée.

B I 0 0 0 0 ….. ….. u22 (∆𝒙. ∆𝒚)𝟐 𝒇𝟐𝟐 − 𝑩. 𝒕𝒃 (∆𝒙)𝟐 − 𝑨𝒕𝒈 (∆𝒚)𝟐

0 I B I 0 0 … …. U32 (∆𝒙. ∆𝒚)𝟐 𝒇𝟑𝟐 − 𝑩. 𝒕𝒃 (∆𝒙)𝟐


.
0 0 I B I 0 …. … ……………………………………….
.
0 …. ... ... … ... …. …. UN-1,2 (∆𝒙. ∆𝒚)𝟐 𝒇𝑵−𝟏,𝟐 − 𝑨𝒕𝒅 (∆𝒚)𝟐
0 0 ... …. .. …. …. …. U23 (∆𝒙. ∆𝒚)𝟐 𝒇𝟐𝟐 − 𝑨𝒕𝒈 (∆𝒚)𝟐
.
0 0 0 … …. …. … ….. . = (∆𝒙. ∆𝒚)𝟐 𝒇𝟑𝟐
0 0 0 .. … … … … .. UN-1,3 ………………………
.
0 0 0 0 …. …. ….. … …. 𝑨(∆𝒙. ∆𝒚)𝟐 𝒇𝑵−𝟏,𝟐 − 𝑨𝒕𝒅 (∆𝒚)𝟐
.
0 0 0 0 0 ... …. .. … U2,M-1 (∆𝒙. ∆𝒚)𝟐 𝒇𝟐,𝑴−𝟏 − 𝑩. 𝒕𝒉 (∆𝒙)𝟐 − 𝑨𝒕𝒈 (∆𝒚)𝟐
0 0 0 0 0 ... …. .. … U3,M-1 (∆𝒙. ∆𝒚)𝟐 𝒇𝟑,𝑴−𝟏 − 𝑩. 𝒕𝒉 (∆𝒙)𝟐
.
0 0 0 0 … …. I B I ………………………………
.
0 0 0 0 0 …. ….. I B Un-1,M-1 (∆𝒙. ∆𝒚)𝟐 𝒇𝑵−𝟏,𝑴−𝟏 − 𝑩. 𝒕𝒉 (∆𝒙)𝟐 + 𝑨𝒕𝒅 (∆𝒚)𝟐

On peut alors écrire :


[𝑆]{𝑈} = {𝐹 } (81)
On obtient le vecteur solution U en inversant la matrice des coefficients S :

23
[Chapitre : Méthode des différences finies en 2D]

{𝑈} = [𝑆]−1 {𝐹 } (82)


Le programme Matlab destiné à résoudre cette équation consiste en premier lieu à construire la matrice S
et le vecteur F afin d’utiliser par la suite l’équation 82 pour trouver toutes les valeurs du vecteur U.
Exemple numérique
Soit à résoudre :
𝜕2 𝑢(𝑥,𝑦) 𝜕2 𝑢(𝑥,𝑦)
+ = 2(𝑥 2 + 𝑦 2 )
𝜕𝑥 2 𝜕𝑦 2
(𝑥, 𝑦) ∈ [0,1] × [0,1] (83)
𝑢 (𝑥, 0) = 0, 𝑢(𝑥, 𝐿𝑦 ) = 𝑥 2 + 1
{ 𝑢 (0, 𝑦) = 0, 𝑢(𝐿𝑥 , 𝑦) = 𝑦 2 + 1
En considérant un nombre de points égale à 5 dans les deux directions, ce qui est équivaut à un pas
Δx=Δy=0.25, et conformément à la procédure exposée ci-dessus, nous aurons :
𝛼 = 2(0.252 + 0.252 ) = 0.25
𝑥 = 0, 0.25, 0.50, 0.75, 1
𝑦 = 0, 0.25, 0.50, 0.75, 1
𝑓 = 0, 0.125, 0.50, 1.125, 4
J=2
i=2
−0.25𝑢2,2 + 0.0625𝑢2,3 + 0.0625𝑢3,2 =. 0.000488
i=3
0.0625𝑢2,2 − 0.25𝑢3,2 + 0.0625𝑢3,3 + 0.0625𝑢4,2 = 0.00195
i=4
0.0625𝑢2,2 − 0.25𝑢3,2 +. 0.0625𝑢3,3 =0.09326

J=3
i=2
−0.25𝑢2,3 + 0.0625𝑢2,2 + 0.0625𝑢2,4 + 0.0625𝑢3,3 = 0.000488
i=3
0.0625𝑢2,3 − 0.25𝑢3,3 + 0.0625𝑢3,2 + 0.0625𝑢3,4 + 0.0625𝑢4,3 = 0.00195
i=4
0.0625𝑢2,3 − 0.25𝑢3,3 + 0.0625𝑢3,2 + 0.0625𝑢3,4 = − 1.5581
J=4
i=2
−0.25𝑢2,4 + 0.0625𝑢2,3 + 0.0625𝑢3,4 = − 0.09716
i=3
0.0625𝑢2,4 − 0.25𝑢3,4 + 0.0625𝑢3,3 + 0.0625𝑢4,4 = − 0.0957
i=4
0.0625𝑢3,4 − 0.25𝑢4,4 + 0.0625𝑢4,3 = − 0.0932

Pour un nombre de points N=M=5 dans les deux directions, on aura :

24
[Chapitre : Méthode des différences finies en 2D]

-0.25 0.0625 0 0.0625 0 0 0 0 0 u22 0.000488


0.0625 -0.25 0.0625 0 0.0625 0 0 0 0 u32 0.00195
0 0.0625 -0.25 0 0 0.0625 0 0 0 u42 0.09326
0.0625 0 0 -0.25 0.0625 0 0.0625 0 0 u23 0.000488
0 0.0625 0 0.0625 -0.25 0.0625 0 0.0625 0 u33 = 0.00195
0 0 0.0625 0 0.0625 -0.25 0 0 0.0625 u43 −1.5581
0 0 0 0.0625 0 0 -0.25 0.0625 0 u24 −0.09716
0 0 0 0 0.0625 0 0.0625 -0.25 0.0625 u34 −0.0957
0 0 0 0 0 0.0625 0 0.0625 -0.25 u44 −0.0632

L’inversion de la matrice S nous permet d’obtenir aisément les valeurs des composantes du vecteur U des
inconnues. Seulement le pas de calcul de 0.25 qu’on a choisit assez grand pour ne pas alourdir les
opérations de calcul manuelles n’offre pas une bonne précision pour les résultats obtenus. À cet effet, et
afin d’augmenter la précision de la solution cherchée, il est indispensable de travailler avec un nombre de
points plus important, ce qui rend inévitable le recours à l’outil informatique pour améliorer la précision
de la méthode numérique. Le programme Matlab qui donne la solution de cette équation est présenté ci-
dessous.
clc
clear all
% Bornes supérieures de l'intervalle suivant x ety
lt=1;lx=lt;ly=lt;
% Discrétisation du domaine
h=0.01;
dx=h;dy=h;
x=0:dx:lx;
y=0:dy:ly;
nx=length(x);
ny=length(y);
% Coefficients de l'équation différentielle 2D
a=1;b=1;alpha=2*(a*dy^2+b*dx^2);
ys=zeros(ny,nx);
% Conditions aux limites
ys(1,:)=zeros(1,nx); % Bord inférieur
ys(ny,:)=x.^2.*y(ny)^2 % Bord supérieur
ys(:,1)=zeros(1,ny); % Bord gauche
ys(:,nx)=x(nx)^2.*y.^2; % Bord droite
% Fonction f
for i=2:ny-1
for j=2:nx-1
f(i,j)=2*(x(i)^2+y(j)^2)
end
end
m=zeros(ny-2,nx-2);
% Construction de la matrice B=m
for i=1:ny-2
for j=1:nx-2
if and(j==1,i==1)
m(i,j)=-alpha;
m(i,j+1)=a*dy^2;

25
[Chapitre : Méthode des différences finies en 2D]

end
if and(and(j>1,j<nx-2),and(i>1,i<ny-2))
m(i,i-1)=a*dy^2;m(i,i+1)=a*dy^2;m(i,i)=-alpha;
end
if and(j==nx-2,i==ny-2)
m(i,j)=-alpha;
m(i,j-1)=a*dy^2;
end
end
end
mz=zeros(ny-2,nx-2);
% Construction de la matrice I=d
for i=1:ny-2
for j=1:nx-2
if i==j d(i,j)=b*dx^2;end
end
end
% Construction de la matrice de passge S=c
c=cell(ny-2,nx-2);
for i=1:ny-2
for j=1:nx-2
c{i,j}=mz;
end
end

for i=1:ny-2
for j=1:nx-2
if i==1
if or(j==1,j==2)
c{i,1}=m;c{i,2}=d;
else
c{i,j}=mz;
end
end
if i==2
if j<=3
c{i,1}=d;c{i,2}=m;c{i,3}=d;
else
c{i,j}=mz;
end
end
if i==ny-2
if or(j==nx-2,j==nx-3)
c{i,ny-3}=d;c{i,ny-2}=m;
else
c{i,j}=mz;
end
end
if and(i>2,i<ny-2)
if and(j>2,j<nx-2)
if j==i
c{i,i-1}=d;c{i,i}=m;c{i,i+1}=d;
end
end
end
end
end
mat=cell2mat(c); % Conversion de la matrice c vers type double (réel)

26
[Chapitre : Méthode des différences finies en 2D]

for j=2:nx-1
if j==2
for i=2:ny-1
if i==2
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,1)-a*dy^2*ys(1,j);
end
if and(i>2,i<ny-1)
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,1);
end
if i==ny-1
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,1)-a*dy^2*ys(ny,j);
end
end
end
if and(j>2,j<nx-1)
for i=2:ny-1
if i==2
v(i,j)=f(i,j)*(dx*dy)^2-a*dy^2*ys(1,j);
end
if and(i>2,i<ny-1)
v(i,j)=f(i,j)*(dx*dy)^2;
end

if i==ny-1
v(i,j)=f(i,j)*(dx*dy)^2-a*dy^2*ys(ny,j);
end
end
end
if j==nx-1
for i=2:ny-1
if i==2
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,nx)-a*dy^2*ys(1,j);
end
if and(i>2,i<ny-1)
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,nx);
end
if i==ny-1
v(i,j)=f(i,j)*(dx*dy)^2-b*dx^2*ys(i,nx)-a*dy^2*ys(ny,j);
end
end
end
end

v=v(2:ny-1,2:nx-1)
vf=reshape(v,(ny-2)*(nx-2),1);
% Matrice solution
yv=(mat)\vf; % Sous forme vectorielle
ym=reshape(yv,(ny-2),(nx-2)); % Sous forme vectorielle
% Ajout des conditions aux limites
ys(2:nx-1,2:ny-1)=ym;
figure;surf(x,y,ys) % Graphe de la solution numérique
% Solution exate
[x1,y1]=meshgrid(x,y);
u=(x1.^2).*(y1.^2);
figure;surf(x1,y1,u); % Graphe de la solution exacte

27
[Chapitre : Méthode des différences finies en 2D]

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0
1 1
1 1
0.8 0.8
0.5 0.6 0.5 0.6
0.4 0.4
0.2 0.2
0 0 0 0

Solution exacte Solution numérique


Figure 3.6 Graphe de la solution

28

Vous aimerez peut-être aussi