276
8 Approximation numérique des problèmes aux limites
dans le monodimensionnel, A est mal conditionnée : son conditionnement
croît en effet comme h
−2 quand h tend vers zéro.
Dans le Programme 8.2, on construit et on résout le système (8.30)(8.31) (avec la commande \, voir Section 5.8). Les paramètres d’entrée a,
b, c et d désignent les extrémités des intervalles définissant le domaine
rectangulaire Ω =]a, b[×]c, d[, nx et ny sont les valeurs de N x et N y
(on peut avoir N x = N y ). Enfin, les deux chaînes de caractères fun
et bound définissent le second membre f = f(x, y) (aussi appelé terme
source) et la condition aux limites g = g(x, y). La fonction retourne un
tableau à deux dimensions uh dont la composante (j, i) est la valeur
nodale u i,j , et les vecteurs xh et yh qui contiennent respectivement les
noeuds x i et y j , y compris les noeuds du bord. On peut visualiser la
solution numérique avec la commande mesh(x,y,u). La chaîne d’entrée
mesh
(optionnelle) uex définit la solution exacte du problème original quand
cette solution est connue. Dans ce cas, le paramètre de sortie error
contient l’erreur relative aux noeuds entre la solution exacte et la solution
numérique, calculée de la manière suivante
error = max
i,j
|u(x i , y j ) − u i,j |
max
i,j
|u(x i , y j )|.
Programme 8.2. poissonfd : approximation du problème de Poisson avec données de Dirichlet par la méthode des différences finies à cinq points
function [xh , yh , uh , error ]= p o i s sonf d(a ,b ,c ,d ,nx , ny ,...
fun , bound , uex , varargin )
% P O I S SONFD résout le problème de Poisson en 2 D
% [XH , YH , UH ]= P O I S SONFD(A ,B ,C ,D , NX , NY , FUN , BOUND ) résout
% par le schéma aux d i f f érenc es finies à 5 points le
% problème - LAPL ( U) = FUN dans le r e c t angle ]A , B[ X]C , D[
% avec c o n d itions de D i r i chlet U (X ,Y )= BOUND (X , Y ) pour
% (X ,Y ) sur la f r o n tière du r e c t angle.
% [XH , YH ,UH , ERROR ]= P O I S SONFD(A ,B ,C ,D ,NX , NY , FUN ,...
% BOUND , UEX) calcule aussi l ’ erreur nodale maximale
% ERROR par rapport à la solution exacte UEX .
% FUN , BOUND et UEX peuvent être des f o n c tions inline ,
% des f o n c tions anonymes ou définies par un M - file .
% [XH , YH ,UH , ERROR ]= P O I S SONFD(A ,B ,C ,D ,NX , NY , FUN ,...
% BOUND , UEX , P1 , P2 , ...) passe les a r g u ments o p t ion nels
% P1 ,P2 ,... aux f o n ctio ns FUN , BOUND , UEX.
if nargin == 8
uex = inline ( ’0 ’, ’x ’, ’y ’ );
end
nx1 = nx +2; ny1 = ny +2; dim = nx1* ny1 ;
hx = (b -a )/( nx +1); hy = (d -c )/( ny +1);
hx2 = hx ^2;
hy2 = hy ^2;
kii = 2/ hx2 +2/ hy2 ; kix = -1/ hx2; kiy = -1/ hy2;
K = speye ( dim , dim ); rhs = zeros ( dim ,1);
y = c;
for m = 2: ny +1
x = a; y = y + hy;
for n = 2:nx+1
i = n +(m -1)* nx1 ; x = x + hx;
Précédent

- 286/374

Suivant