348
9 Solutions des exercices
Programme 9.4. neumann : approximation d’un problème aux limites de Neumann
function [xh , uh ]= neumann (a ,b ,N ,mu ,eta , sigma , bvpfun ,...
ua ,ub , varargin )
h = (b - a )/( N +1); xh = ( linspace (a ,b ,N +2)) ’;
hm = mu /h ^2; hd = eta /(2* h ); e = ones (N +2 ,1);
A = spdiags ([ - hm *e - hd (2* hm+ sigma )* e - hm* e+ hd ] ,...
-1:1 , N +2 , N +2);
A (1 ,1)=3/(2* h ); A (1 ,2)= -2/h; A (1 ,3)=1/(2* h ); f (1)= ua ;
A (N +2 ,N + 2 ) = 3/(2*h ); A( N +2 ,N +1)= -2/h ; A( N +2 ,N )=1/(2* h );
f = feval ( bvpfun , xh , varargin {:}); f (1)= ua ; f( N +2)= ub ;
uh = A\f;
Solution 8.7 La formule d’intégration du trapèze, utilisée sur les deux sousintervalles Ij−1 et Ij, donne l’approximation suivante
I j−1 ∪I j
f (x)ϕj(x) dx
h
2
f (xj) +
h
2
f (xj) = hf (xj),
puisque ϕj(xi) = δij , ∀i, j. Quand j = 1 ou j = N , on peut procéder de
manière analogue en prenant en compte les conditions de Dirichlet. On obtient
donc le même second membre qu’avec la méthode des différences finies (8.14)
à un facteur h près.
Solution 8.8 On a ∇φ = (∂φ/∂x, ∂φ/∂y)
T et donc div∇φ = ∂
2 φ/∂x
2 +
∂
2 φ/∂y
2 , c’est-à-dire, le laplacien de φ.
Solution 8.9 On approche la température au centre de la plaque en résolvant,
pour diverses valeurs de Δx = Δy, le problème de Poisson correspondant. On
utilise pour cela les instructions suivantes :
k =0; fun= inline ( ’ 25 ’, ’x ’, ’y ’ );
bound = inline ( ’( x ==1) ’ ,’x ’ ,’y ’);
for N = [10 ,20 ,40 ,80 ,160]
[u ,x , y ]= p o i ss onfd(0 ,1 ,0 ,1 ,N ,N , fun , bound );
k =k +1; uc (k ) = u (N /2+1 ,N /2+1);
end
Les composantes du vecteur uc sont les valeurs de la température calculées au
centre de la plaque quand le pas h de la grille diminue. On a :
uc
2.0168
2.0616
2.0789
2.0859
2.0890
On en déduit que la température au centre de la plaque vaut approximativement 2.08
◦ C. Sur la Figure 9.13, on représente les courbes de niveau de la
température pour deux valeurs de h.
Solution 8.10 Pour alléger les notations, on pose ut = ∂u/∂t et ux = ∂u/∂x.
On multiplie par ut l’équation (8.72) avec f ≡ 0, on intègre en espace sur ]a, b[
9 Solutions des exercices
Programme 9.4. neumann : approximation d’un problème aux limites de Neumann
function [xh , uh ]= neumann (a ,b ,N ,mu ,eta , sigma , bvpfun ,...
ua ,ub , varargin )
h = (b - a )/( N +1); xh = ( linspace (a ,b ,N +2)) ’;
hm = mu /h ^2; hd = eta /(2* h ); e = ones (N +2 ,1);
A = spdiags ([ - hm *e - hd (2* hm+ sigma )* e - hm* e+ hd ] ,...
-1:1 , N +2 , N +2);
A (1 ,1)=3/(2* h ); A (1 ,2)= -2/h; A (1 ,3)=1/(2* h ); f (1)= ua ;
A (N +2 ,N + 2 ) = 3/(2*h ); A( N +2 ,N +1)= -2/h ; A( N +2 ,N )=1/(2* h );
f = feval ( bvpfun , xh , varargin {:}); f (1)= ua ; f( N +2)= ub ;
uh = A\f;
Solution 8.7 La formule d’intégration du trapèze, utilisée sur les deux sousintervalles Ij−1 et Ij, donne l’approximation suivante
I j−1 ∪I j
f (x)ϕj(x) dx
h
2
f (xj) +
h
2
f (xj) = hf (xj),
puisque ϕj(xi) = δij , ∀i, j. Quand j = 1 ou j = N , on peut procéder de
manière analogue en prenant en compte les conditions de Dirichlet. On obtient
donc le même second membre qu’avec la méthode des différences finies (8.14)
à un facteur h près.
Solution 8.8 On a ∇φ = (∂φ/∂x, ∂φ/∂y)
T et donc div∇φ = ∂
2 φ/∂x
2 +
∂
2 φ/∂y
2 , c’est-à-dire, le laplacien de φ.
Solution 8.9 On approche la température au centre de la plaque en résolvant,
pour diverses valeurs de Δx = Δy, le problème de Poisson correspondant. On
utilise pour cela les instructions suivantes :
k =0; fun= inline ( ’ 25 ’, ’x ’, ’y ’ );
bound = inline ( ’( x ==1) ’ ,’x ’ ,’y ’);
for N = [10 ,20 ,40 ,80 ,160]
[u ,x , y ]= p o i ss onfd(0 ,1 ,0 ,1 ,N ,N , fun , bound );
k =k +1; uc (k ) = u (N /2+1 ,N /2+1);
end
Les composantes du vecteur uc sont les valeurs de la température calculées au
centre de la plaque quand le pas h de la grille diminue. On a :
uc
2.0168
2.0616
2.0789
2.0859
2.0890
On en déduit que la température au centre de la plaque vaut approximativement 2.08
◦ C. Sur la Figure 9.13, on représente les courbes de niveau de la
température pour deux valeurs de h.
Solution 8.10 Pour alléger les notations, on pose ut = ∂u/∂t et ux = ∂u/∂x.
On multiplie par ut l’équation (8.72) avec f ≡ 0, on intègre en espace sur ]a, b[
