Vous êtes sur la page 1sur 12

UNIVERSITE ABDELHAMID IBN BADIS- MOSTAGANEM

S.T. /G.PROC./Master1 : GPCH – Semestre 2-2019/2020-Analyse Numérique TD2- Corrigé

EX1 : on veut résoudre le problème suivant avec conditions de Dirichlet, à l’aide des différences finies,

−u" ( x) + u ( x) = f ( x), x ]0,1[


 (1)
u (0) = a, u (1) = b

1) Schéma de discrétisation :

 d 2u  u − 2ui + ui −1
On utilise le schéma centré d’ordre 2 pour la dérivée seconde :  2  = i +1
 dx i h2

1
 (2ui − ui +1 − ui −1 ) + ui = fi , i =1,...., N − 1
En remplaçant dans le système (1) on obtient :  h 2
u0 = a, u N = b

D’où le schéma de discrétisation de l’équation différentielle :

1  2  1
− u +  2 + 1 ui − 2 ui +1 = fi ,
2 i −1
i =1,...., N − 1 (2)
h h  h

Avec les conditions aux limites : u0 = a, uN = b

-Système à matrice tridiagonale :

En remplaçant i par les valeurs de 1 à N-1 dans le schéma (2) et en utilisant les conditions limites on obtient les
équations du système linéaire :

Remarque : N’oublier pas d’ordonner les équations dans l’ordre croissant des inconnues ui ,( u1, u2, ……, uN-1).

 2  1 u  2  1 a
Pour i=1 :  + 1 u1 − 2 u2 = f1 + 02   2 + 1 u1 − 2 u2 = f1 + 2
h  h 
2
h h h h

1  2  1
Pour i=2 : − u +  2 + 1 u2 − 2 u3 = f 2
2 1
h h  h

1  2  1
Pour i=3 : − u +  2 + 1 u3 − 2 u4 = f 3
2 2
h h  h

………

1  2  1
Pour i=N-3 : − u +  2 + 1  u N −3 − 2 u N − 2 = f N −3
2 N −4
h h  h

1  2  1
Pour i=N-2 : − u +  2 + 1 u N − 2 − 2 u N −1 = f N − 2
2 N −3
h h  h

Pour i=N-1 :
1  2  1 1  2  1
− u +  2 + 1 u N −1 − 2 u N = f N −1  − 2 u N − 2 +  2 + 1 u N −1 = f N −1 + 2 u N
2 N −2
h h  h h h  h
1  2  b
 − 2 u N − 2 +  2 + 1 u N −1 = f N −1 + 2
h h  h

D’où le système matriciel :

2 
0  u1   f1 + 02 
1 u
 h2 + 1 − h2 0 0    
  u2   h

− 1 2
+1 − 2
1
      f2 
 u3  
0 0
 h 2
h 2
h f3 
     
 0 1 2 1 
− 2 +1 − 2 0    0     
 h h 2
h     
  
            
   =   
           
      
 (I )
            
   
 1 2 1   
  
 0    0 − 2 +1 − 2 0    
  
2
 h h h
 
 0 1 2 1  u   f N −3 
     0 − 2 + 1 − 2   N −3 
h2  f N −2 
 u N − 2  
h h
 
 0      − 2
1 2
+  u   f N −1 + u N 
h 2   N −1  
0 1
 h h2 

2) Application numérique :

1− 0
Nombre total de points: n − 1 = = 10  n = 11 , on enlève les 2 points extrêmes pour lesquels les
h
valeurs de u sont connues, on aura donc 9 points de calcul, i=1 à 9 pour obtenir les valeurs u1, u2, …., u9 de
la fonction inconnue u, ce qui donne une matrice tridiagonale 9x9.

1 2
Calculs préliminaires : 2
= 100, 2 + 1 = 201
h h

f1=2 sin x1=2 sin (0.1) = 0,199 d’où f1+u0/h2 =10,199

f2=2 sin x2=2 sin (0.2) = 0,397

f3=2 sin x3=2 sin (0.3) = 0,591

f4=2 sin x4=2 sin (0.4) = 0,778

f5=2 sin x5=2 sin (0.5) = 0,958

f6=2 sin x6=2 sin (0.6) = 1,129

f7=2 sin x7=2 sin (0.7) = 1,288

f8=2 sin x8=2 sin (0.8) = 1,435


f9=2 sin x9=2 sin (0.9) = 1,566 d’où f9+ u10/h2 =31,566

D’où le système matriciel à résoudre :

 201 −100 0 0 0 0 0 0 0   u1  10,199 


 −100 201 −100
 0 0 0 0 0 0  u2   0,397 
 0 −100 201 −100 0 0 0 0 0   u3   0,591 
     
 0 0 −100 201 −100 0 0 0 0  u4   0, 778 
 0 0 0 −100 201 −100 0 0 0   u5  =  0,958 
     
 0 0 0 0 −100 201 −100 0 0  u6   1,129 
 0 0 0 0 0 −100 201 −100 0  u7   1, 288 
     
 0 0 0 0 0 0 −100 201 −100  u8   1, 435 
 0
 0 0 0 0 0 0 −100 201  u9  31,566

3) Résolution du système à l’aide de Matlab :

Le système est de la forme : T. u = d

On crée la fonction tridiag dans l’éditeur et on la sauvegarde, fichier tridiag.m

function T=tridiag(a,b,c,n)

% T matrice tridiagonale nxn

% les éléments de T : a = diag. inf, b = diag. princ, c = diag. sup

T=b*diag(ones (n,1))+c*diag(ones (n-1,1),1) + a*diag(ones (n-1,1),-1) ;

Programme à saisir dans command window :

>> a = -100 ; b = 201 ; c = -100 ; n = 9 ; T = tridiag(a,b,c,n) ;

d = [10.199 ; 0.397 ; 0.591 ; 0.778 ; 0.958 ; 1.129 ; 1.288 ; 1.435 ; 31.566] ;

u = T\d

les résultats suivants s’affichent : (vecteur u)

u= 0.1410

0.1815

0.2197

0.2543

0.2836

0.3062

0.3206

0.3253

0.3189
qui sont dans l’ordre les valeurs de u1 à u9.

Pour tracer la courbe u(x), saisir le programme suivant dans command window, à la suite du précédent :

>> x = 0 : 0.1 :1 ; U=[0.1 u’ 0.3] ; plot(x,U,’*-‘) ;grid ; xlabel(‘x’) ;ylabel(‘u’) ; title(‘solution


numérique equation différentielle’)

On obtient le graphe suivant :

EX2 : on veut résoudre le problème suivant avec conditions mixtes, à l’aide des différences finies,


−u ( x) = f ( x), x ]0,1[
"

 (1)
u (0) − u (0) = a, u (1) = b

' '

1) Schéma de discrétisation :

 d 2u  ui +1 − 2ui + ui −1
On utilise le schéma centré d’ordre 2 pour la dérivée seconde :  2 = (2)
 dx i h2

Les conditions limites sont de type mixte et contiennent les dérivées d’ordre 1, pour lesquelles nous devons
appliquer les schémas d’ordre 1 avant ou arrière :

u1 − u0
-à gauche on utilise le schéma avant : u ' (0) =
h

 u −u   1 u
d’où : u (0) − u ' (0) = u0 −  1 0  = a  1 +  u0 − 1 = a (3)
 h   h h
u N − u N −1 1
-à droite on utilise le schéma arrière : u ' (1) = = b  ( −u N −1 + u N ) = b (4)
h h

En remplaçant (2) dans le système (1) on obtient le schéma de discrétisation de l’équation

1
différentielle : (2ui − ui +1 − ui −1 ) = f i , i = 1,...., N − 1 (5)
h2

auquel, on doit ajouter les schémas des conditions aux limites à gauche (3) et à droite (4) pour obtenir le
système d’équations linéaires.

Les 2 valeurs u0 et uN de la fonction u(x) aux 2 extrémités du domaine sont inconnues et par conséquent le
nombre d’inconnues ui à calculer est maintenant (N+1).

-Système d’équations matriciel :

La première équation du système est donnée par (3) et la dernière équation est donnée par (4). Les autres
équations sont obtenues à l’aide de (5), comme suit :

1
-pour i=1 : (− u 0 + 2u1 − u2 ) = f1
h2

1
-pour i=2 : (− u1 + 2u2 − u3 ) = f 2
h2

1
-pour i=3 : (− u 2 + 2u3 − u4 ) = f3
h2

……….. …………….

1
-pour i=N-3 : (− u N − 4 + 2u N −3 − u N − 2 ) = f N −3
h2

1
-pour i=N-2 : (− u N −3 + 2u N − 2 − u N −1 ) = f N − 2
h2

1
-pour i=N-1 : (− u N − 2 + 2u N −1 − u N ) = f N −1
h2

D’où le système matriciel :


 1 1 
1 + h −
h
0 0 0 0     0 
 
− 1 2

1
0 0 0     0 
 h2 h2 h2 
 
 0 1 2 1
− 2 − 0 0     0 
 h h2 h2   u0   a 
 1 2 1   u   f 
 0 0 − 2 − 0     0   1   1 
 h h2 h2   u2   f2 
     
              u3   f3 
       
     
                =    ( II )
       
     
            u N −3   f N −3 
 
  u  f 
 0     0 −
1 2

1
0 0   N −2   N −2 
 h2 h2 h2   u N −1   f N −1 
     
 0     0 0
1
− 2
2

1
0   uN   b 
 h h2 h2 
 1 2 1
 0     0 0 0 − 2 − 2
 h h2 h 
 1 1 
 0     −
h 
0 0 0 0
h

2) Application numérique :

1− 0
Nombre total de points: n − 1 = = 10  n = 11 , ce qui donne une matrice semi-tridiagonale 11x11.
h

1 1 1 2
Calculs préliminaires : = 10 , 1 + = 11 , 2
= 100 , 2 = 200
h h h h

f1=(x1)2+1=(0,1)2+1=1,01

f2=(x2)2+1=(0,2)2+1=1,04

f3=(x3)2+1=(0,3)2+1=1,09

f4=(x4)2+1=(0,4)2+1=1,16

f5=(x5)2+1=(0,5)2+1=1,25

f6=(x6)2+1=(0,6)2+1=1,36

f7=(x7)2+1=(0,7)2+1=1,49

f8=(x8)2+1=(0,8)2+1=1,64

f9=(x9)2+1=(0,9)2+1=1,81

D’où le système matriciel à résoudre :


 11 −10 0 0 0 0 0 0 0 0 0   u0   1 
 −100 200 −100
 0 0 0 0 0 0 0 0   u1  1, 01
 0 −100 200 −100 0 0 0 0 0 0 0   u2  1, 04 
     
 0 0 −100 200 −100 0 0 0 0 0 0   u3  1, 09 
 0 0 0 −100 200 −100 0 0 0 0 0   u4  1,16 
     
 0 0 0 0 −100 200 −100 0 0 0 0    u5  = 1, 25
 0 0 0 0 0 −100 200 −100 0 0 0   u6  1,36 
     
 0 0 0 0 0 0 −100 200 −100 0 0   u7  1, 49 
 0 0 0 0 0 0 0 −100 200 −100 0   u8  1, 64 
     
 0 0 0 0 0 0 0 0 −100 200 −100   u9  1,81
     
 0 0 0 0 0 0 0 0 0 −10 10  u10   2 

3) Résolution du système à l’aide de Matlab :

Le système est de la forme : M. U = d

Lorsque la matrice est de grande taille, on peut la décomposer en petits blocs faciles à programmer. La
décomposition de M est donnée par la figure 1. (On peut utiliser d’autres décompositions)

M = C B D

Fig.1

Avec :

A matrice ligne de taille 1x11 : A=[11 -10 zeros(1,9)]

B matrice tridiagonale de taille 9x9 : B=tridiag(a,b,c,n) avec a=-100, b=200, c=-100, n=9

C matrice colonne de taille 9x1 : C=[-100 zeros(1,8)]’

D matrice colonne de taille 9x1 : D=[zeros(1,8) -100]’

E matrice ligne de taille 1x11 : E=[zeros(1,9) -10 10]

Programme Matlab :

>> A=[11 -10 zeros(1,9)] ; C=[-100 zeros(1,8)]’ ; D=[zeros(1,8) -100]’ ; E=[zeros(1,9) -10 10] ;

a=-100 ; b=200 ; c=-100 ; n=9 ; B=tridiag(a,b,c,n);

M=[A; C B D; E];

d1=[1; 1.01; 1.04; 1.09; 1.16; 1.25]; d2=[1.36; 1.49; 1.64; 1.81; 2]; d=[d1; d2];
U=M\d

x = 0 : 0.1 :1 ; plot(x,U,’*-‘) ;grid ; xlabel(‘x’) ;ylabel(‘u’) ; title(‘solution numérique equation


différentielle’)

les résultats suivants s’affichent ( dans l’ordre les valeurs de u0 à u10, vecteur u)

u= 4.1850

4.5035

4.8119

5.1099

5.3970

5.6725

5.9355

6.1849

6.4194

6.6375

6.8375

et on obtient le graphe suivant :

EX3 : on veut résoudre le problème elliptique (équation de diffusion-réaction 1D) suivant avec conditions
mixtes, à l’aide des différences finies :

−u ( x) + 2 u(x) = x , x ]0,1[
"

 (1)
u (0) = a, u (1) + u(1) = b

'

1) Schéma de discrétisation :
 d 2u  ui +1 − 2ui + ui −1
On utilise le schéma centré d’ordre 2 pour la dérivée seconde :  2 = (2)
 dx i h2

Les conditions limites sont de type mixte et la condition de droite contient une dérivée d’ordre 1, pour
u − u N −1
laquelle nous devons appliquer le schéma d’ordre 1 arrière : u ' (1) = N
h

u N − u N −1
d’où : u ' (1) + u(1) = b  + uN = b
h

1  1
 − u N −1 + 1 +  u N = b (3)
h  h

En remplaçant (2) dans le système (1) on obtient le schéma de discrétisation de l’équation

1
différentielle : (2ui − ui +1 − ui −1 ) + 2 u i = i h
h2

1  1  1
− u + 2 1 + 2  ui − 2 ui +1 = i h , i = 1,...., N − 1
2 i −1
(4)
h  h  h

auquel, on doit ajouter le schémas de la condition limite à droite (3) pour obtenir le système d’équations
linéaires.

La valeur uN de la fonction u(x) à l’extrémité droite du domaine est inconnue et par conséquent le nombre
d’inconnues ui à calculer est maintenant (N).

- Système d’équations matriciel :

La dernière équation du système est donnée par (3), les autres équations sont obtenues à l’aide de (4),
comme suit :

1  1  1  1  1 u
-pour i=1 : − u + 2 1 + 2  u1 − 2 u2 = h  2 1 + 2  u1 − 2 u2 = h + 02
2 0
h  h  h  h  h h

1  1  1
-pour i=2 : − u + 2 1 + 2  u2 − 2 u3 = 2 h
2 1
h  h  h

1  1  1
-pour i=3 : − u + 2 1 + 2  u3 − 2 u4 = 3 h
2 2
h  h  h

1  1  1
-pour i=4 : − u + 2 1 + 2  u4 − 2 u5 = 4 h
2 3
h  h  h

………. ……….
1  1  1
-pour i=N-3 : − u + 2 1 + 2  u N −3 − 2 u N − 2 = ( N − 3) h
2 N −4
h  h  h

1  1  1
-pour i=N-2 : − u + 2 1 + 2  u N − 2 − 2 u N −1 = ( N − 2) h
2 N −3
h  h  h

1  1  1
-pour i=N-1 : − u + 2 1 + 2  u N −1 − 2 u N = ( N − 1) h
2 N −2
h  h  h

D’où le système matriciel :

  1  1 
 2 1 + h 2  − 2 0 0 0 0     0 
 u0 
   h
  h + h2 
 1  1  1   
 − 2 2 1 + 2  − 2 0 0 0     0 
 2h 
 h  h  h   
 1  1  1   
 0 − 2 2 1 + 2  − 2 0 0     0 
h  h  h  3h 
   u1   
 1  1  1     
 0 0 − 2 2 1 + 2  − 2 0     0   2  
u
 h  4h 
 h h   u   
   3   
              u4    
      
     
               =   
     
   
  
              u N −3    
     
  u N − 2   
 1  1  1 −
0     0 − 2 1 + 2  − 2 0 0   u N −1   ( N 3) h

 h2  h  h     
   uN   
 1  1  1 ( N − 2) h
0     0 0 − 2 2 1 + 2  − 2 0   
 h  h  h   
   ( N − 1)h 
 1  1  1
0     0 0 0 − 2 2 1 + 2  − 2  
 h  h  h   
   b 
 0     0 0 0 0 −
1
1+ 
1  
 h h

2) Application numérique :

1− 0
Nombre total de points: n − 1 = = 10 , ce qui donne une matrice semi-tridiagonale 10 x 10.
h

1 1 1  1 
Calculs préliminaires : − = −10 , 1 + = 11 , − 2 = −100 , 2 1 + 2  = 202
h h h  h 

D’où le système matriciel à résoudre :


 202 −100 0 0 0 0 0 0 0 0   u1  100,1 
 −100 202 −100
 0 0 0 0 0 0 0   u2   0, 2 
 0 −100 202 −100 0 0 0 0 0 0   u3   0,3 
     
 0 0 −100 202 −100 0 0 0 0 0   u4   0, 4 
 0 0 0 −100 202 −100 0 0 0 0   u5   0,5 
   =  
 0 0 0 0 −100 202 −100 0 0 0   u6   0, 6 
 0 0 0 0 0 −100 202 −100 0 0   u7   0, 7 
     
 0 0 0 0 0 0 −100 202 −100 0   u8   0,8 
 0 0 0 0 0 0 0 −100 202 −100   u9   0,9 
     
 0 0 0 0 0 0 0 0 −10 11  u10   0 

3) Résolution du système à l’aide de Matlab:

Le système est de la forme : M. U = d

La décomposition de M est donnée par la figure 2.

A B
M=

Fig.2

Avec :

A matrice tridiagonale de taille 9x9 : B=tridiag(a,b,c,n) avec a=-100, b=202, c=-100, n=9

B matrice colonne de taille 9x1 : B=[zeros(1,8) -100]’

C matrice ligne de taille 1x10 : E=[zeros(1,8) -10 11]

Programme Matlab :

>> B=[zeros(1,8) -100]’ ; E=[zeros(1,8) -10 11] ;

a=-100 ; b=202 ; c=-100 ; n=9 ; A=tridiag(a,b,c,n);

M=[A B; C];

d=[100.1; 0.2; 0.3; 0.4; 0.5; 0.6 ;0.7; 0.8; 0.9; 0];

U=M\d

x = 0 : 0.1 :1 ;U1=[1 ; U] ; plot(x,U1,’*-‘) ;grid ; xlabel(‘x’) ;ylabel(‘u’) ; title(‘solution numérique


equation différentielle’)

les résultats suivants s’affichent ( dans l’ordre les valeurs de u1 à u10, vecteur u)

U=
0.8925

0.8019

0.7254

0.6603

0.6044

0.5557

0.5120

0.4716

0.4326

0.3933

et on obtient le graphe suivant :

Vous aimerez peut-être aussi