Académique Documents
Professionnel Documents
Culture Documents
EX1 : on veut résoudre le problème suivant avec conditions de Dirichlet, à l’aide des différences finies,
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
1 2 1
− u + 2 + 1 ui − 2 ui +1 = fi ,
2 i −1
i =1,...., N − 1 (2)
h h h
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
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
function T=tridiag(a,b,c,n)
u = T\d
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 :
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
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).
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
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
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 :
B matrice tridiagonale de taille 9x9 : B=tridiag(a,b,c,n) avec a=-100, b=200, c=-100, n=9
Programme Matlab :
>> A=[11 -10 zeros(1,9)] ; C=[-100 zeros(1,8)]’ ; D=[zeros(1,8) -100]’ ; E=[zeros(1,9) -10 10] ;
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
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
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
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).
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
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
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
Programme Matlab :
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
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