8.2 Approximation de problèmes aux limites
277
rhs( i) = feval ( fun ,x ,y , varargin {:});
K(i , i) = kii ; K (i ,i -1) = kix; K(i , i +1) = kix ;
K(i , i+ nx1) = kiy;
K (i ,i - nx1 ) = kiy ;
end
end
rhs1 = zeros ( dim ,1); xh = [a : hx: b ] ’; yh = [ c: hy: d ];
rhs1 (1: nx1) = feval ( bound , xh ,c , varargin {:});
rhs1 ( dim - nx -1: dim ) = feval ( bound , xh ,d , varargin {:});
rhs1 (1: nx1: dim - nx -1) = feval ( bound ,a , yh , varargin {:});
rhs1 ( nx1: nx1: dim ) = feval ( bound ,b ,yh , varargin {:});
rhs = rhs - K * rhs1 ;
nbound = [[1: nx1 ] ,[ dim -nx -1: dim ] ,[1:nx1 : dim -nx -1] ,...
[ nx1: nx1: dim ]];
n i n tern al = setdiff ([1: dim ] , nbound );
K = K ( ninternal , n i n t ernal);
rhs = rhs ( n i n te rnal);
utemp = K \ rhs;
u = rhs1 ; u ( n i n terna l) = utemp ;
k = 1; y = c;
for j = 1: ny1
x = a;
for i = 1: nx1
uh(j,i) = u(k);
k = k + 1;
ue(j , i) = feval ( uex ,x ,y , varargin {:});
x = x + hx;
end
y = y + hy;
end
if nargout == 4 & nargin >= 9
error = max ( max( abs( uh - ue )))/ max( max( abs( ue )));
elseif nargout == 4 & nargin ==8
warning ( ’ Solution exacte non d i s p onib le’);
error = [ ];
else
end
end
Exemple 8.1 Le déplacement transverse u par rapport au plan de référence z = 0 d’une membrane élastique soumise à un chargement f (x, y) =
8π
2 sin(2πx) cos(2πy) vérifie un problème de Poisson (8.2) dans le domaine Ω.
On choisit les données de Dirichlet sur ∂Ω de la manière suivante : g = 0 sur
les cotés x = 0 et x = 1, et g(x, 0) = g(x, 1) = sin(2πx), pour 0 < x < 1. La
solution exacte de ce problème est donnée par u(x, y) = sin(2πx) cos(2πy). On
a représenté sur la Figure 8.8 la solution numérique obtenue par le schéma aux
différences finis à cinq points sur une grille uniforme. Deux valeurs de h ont
été utilisées : h = 1/10 (à gauche) et h = 1/20 (à droite). Quand h diminue,
la solution numérique s’améliore : l’erreur nodale relative vaut 0.0292 pour
h = 1/10 et 0.0081 pour h = 1/20.
La méthode des éléments finis peut facilement s’étendre au cas bidimensionnel. Pour cela, le problème (8.2) doit être reformulé sous une
forme intégrale et la partition de l’intervalle ]a, b[ du cas monodimensionnel doit être remplacée par une décomposition de Ω en polygones
(typiquement des triangles) appelés éléments. La fonction de base générale ϕ k est encore une fonction continue, dont la restriction à chaque
277
rhs( i) = feval ( fun ,x ,y , varargin {:});
K(i , i) = kii ; K (i ,i -1) = kix; K(i , i +1) = kix ;
K(i , i+ nx1) = kiy;
K (i ,i - nx1 ) = kiy ;
end
end
rhs1 = zeros ( dim ,1); xh = [a : hx: b ] ’; yh = [ c: hy: d ];
rhs1 (1: nx1) = feval ( bound , xh ,c , varargin {:});
rhs1 ( dim - nx -1: dim ) = feval ( bound , xh ,d , varargin {:});
rhs1 (1: nx1: dim - nx -1) = feval ( bound ,a , yh , varargin {:});
rhs1 ( nx1: nx1: dim ) = feval ( bound ,b ,yh , varargin {:});
rhs = rhs - K * rhs1 ;
nbound = [[1: nx1 ] ,[ dim -nx -1: dim ] ,[1:nx1 : dim -nx -1] ,...
[ nx1: nx1: dim ]];
n i n tern al = setdiff ([1: dim ] , nbound );
K = K ( ninternal , n i n t ernal);
rhs = rhs ( n i n te rnal);
utemp = K \ rhs;
u = rhs1 ; u ( n i n terna l) = utemp ;
k = 1; y = c;
for j = 1: ny1
x = a;
for i = 1: nx1
uh(j,i) = u(k);
k = k + 1;
ue(j , i) = feval ( uex ,x ,y , varargin {:});
x = x + hx;
end
y = y + hy;
end
if nargout == 4 & nargin >= 9
error = max ( max( abs( uh - ue )))/ max( max( abs( ue )));
elseif nargout == 4 & nargin ==8
warning ( ’ Solution exacte non d i s p onib le’);
error = [ ];
else
end
end
Exemple 8.1 Le déplacement transverse u par rapport au plan de référence z = 0 d’une membrane élastique soumise à un chargement f (x, y) =
8π
2 sin(2πx) cos(2πy) vérifie un problème de Poisson (8.2) dans le domaine Ω.
On choisit les données de Dirichlet sur ∂Ω de la manière suivante : g = 0 sur
les cotés x = 0 et x = 1, et g(x, 0) = g(x, 1) = sin(2πx), pour 0 < x < 1. La
solution exacte de ce problème est donnée par u(x, y) = sin(2πx) cos(2πy). On
a représenté sur la Figure 8.8 la solution numérique obtenue par le schéma aux
différences finis à cinq points sur une grille uniforme. Deux valeurs de h ont
été utilisées : h = 1/10 (à gauche) et h = 1/20 (à droite). Quand h diminue,
la solution numérique s’améliore : l’erreur nodale relative vaut 0.0292 pour
h = 1/10 et 0.0081 pour h = 1/20.
La méthode des éléments finis peut facilement s’étendre au cas bidimensionnel. Pour cela, le problème (8.2) doit être reformulé sous une
forme intégrale et la partition de l’intervalle ]a, b[ du cas monodimensionnel doit être remplacée par une décomposition de Ω en polygones
(typiquement des triangles) appelés éléments. La fonction de base générale ϕ k est encore une fonction continue, dont la restriction à chaque
