176
11
•
Problèmes
Montrer que le passage de l’étape p àl’étape p +1se fait par
pour i = 1 , N
pour
j = 1 , N
v =
1
d ( i , j )
( F h ( i , j )+u h ( i − 1 , j )+u h ( i , j − 1) + u h ( i +1, j )+u h ( i , j +1))
err ( i , j ) = | v − u h ( i , j ) |
u h ( i , j ) = v
fin j
fin i
Lorsque i = 1par exemple, u h ( i − 1 , j )sera la contribution de G h au second membre. Il reste
ài térer jusqu’à ce que err ∞ = max | err ( i , j ) | < e où e est une précision requise entre 2
itérations ou que le nombre maximum d’itérations soit dépassé (auquel cas la méthode diverge).
c) Programmation
Pour N donné
1. Àl’aide de .m fonctions, on construit d ( i , j )et F h ( i , j )pour i , j = 1 ,...,N ,
2. On initialise u h ( i , j )pour i , j = 0 ,...,N avec,
u h (0, j ) = g (0, jh) , u h ( N +1, j ) = g (1, jh) , u h ( i , 0) = ...
u h ( i , j ) = 0pour i , j = 1 ,..., N
3. On fixe maxiter et precis.
4. On lancelaméthode de Gauss-Seidel.
5. Si la méthode converge, on alasolution de P h dans u h .
difficulté supplémentaire:Matlab n’accepte pas les indices àpartir de 0;il faut donc tout décaler
de 1dans les 2directions.
Programmer la méthode pour un N donné. Va lider le programme avec un exemple où D h u = D u ,
c’est-à-dire que la solution approchée coïncide avec la solution exacte. On construira une fonction
diffini.m quiétant donné N renvoie le maillage x , y (utiliser meshgrid), la solution exacte ue
et la solution approchée uh.Pour la boucle qui porte sur 2paramètres, on pourra fixer maxiter à
100N et e à10
− 10
par exemple. La boucle peut se faire en utilisant l’instruction while.Onpeut
afficher erriteration qui mesure l’erreur entre 2itérations, soit err ∞ et maxiter − iter qui
doit resterpositif si on veut la convergence.
Exemple:c ( x , y ) = 2 p
2
, f ( x , y ) = 4 p
2
sin p ( x + y ), la solution exacte est u ( x , y ) = sin p ( x + y )
qui définit aussi la fonction g ,aubord.
Précédent

- 155/188

Suivant