Vous êtes sur la page 1sur 10

[Chapitre 2 : Méthodes des différences fines en une 1D]

Chapitre 2.

Méthodes des différences fines en une 1D

8
[Chapitre 2 : Méthodes des différences fines en une 1D]

Considérons un cas monodimensionnel où l'on souhaite déterminer une grandeur y(x) sur l'intervalle [0,1].
La recherche d'une solution discrète de la grandeur y amène à constituer un maillage de l'intervalle de
définition. On considère un maillage (ou grille de calcul) composé de N + 1 points xi pour i = 0,...,N
régulièrement espacés avec un pas h. Les points xi = ih sont appelés les nœuds du maillage.
Le problème continu de départ de détermination d'une grandeur sur un ensemble de dimension
infinie se ramène ainsi à la recherche de N valeurs discrètes de cette grandeur aux différents
nœuds du maillage. Dans ce qui suit, nous allons présenter la méthode de résolution des équations
différentielles de premier et second ordre en considérant un cas monodimensionnel (1D) [2 ; 3 ;4].
2.1. Equation différentielle de premier ordre
Soit à résoudre l’équation suivante :

𝑚𝑦 ′ (𝑥) + 𝑘𝑦(𝑥 ) = 𝑓(𝑥)


{ 𝑥 ∈ [𝑎, 𝑏] (28)
𝑦(𝑎 ) = 𝑦0

Discrétisation du domaine
La première étape, consiste à subdiviser le domaine [a,b] en un nombre, N+1, de points fini avec un pas,
h, régulier (constant).

Telle que :

𝑥𝑖 = 𝑎 + 𝑖ℎ (29)
La forme discrétisée du domaine est appelée maillage.
Discrétisation l’équation différentielle
La forme discrétisée de l’équation différentielle le long du maillage retenu peut être présentée sous la
forme suivante :

𝑚𝑦 ′ (𝑥𝑖 ) + 𝑘𝑦(𝑥𝑖 ) = 𝑓(𝑥𝑖 )


{ 𝑥𝑖 = 𝑎 + 𝑖ℎ (30)
𝑦(𝑥0 ) = 𝑦0
Ou bien :

𝑚𝑦𝑖′ + 𝑘𝑦𝑖 = 𝑓𝑖
{ 𝑥𝑖 = 𝑎 + 𝑖ℎ (31)
𝑦0 = 𝑦(𝑥0 )

9
[Chapitre 2 : Méthodes des différences fines en une 1D]

Résolution de l’équation différentielle


La résolution consiste à remplacer les dérivées par un des schémas de la méthode des différences finies.
En utilisant un schéma décentré à droite, on aura :
𝑦𝑖+1 −𝑦𝑖
𝑚( ) + 𝑘𝑦𝑖 = 𝑓𝑖 (32)

On en déduit directement que :
ℎ𝑓𝑖 +(𝑚−𝑘ℎ)𝑦𝑖
𝑦𝑖+1 = (33)
𝑚
L’équation 33 exprime le schéma général de base qui donne la solution de l’équation différentielle en tout
point du maillage considéré. Pour chacun des schémas des différences finies correspond une solution.
2.2. Equation différentielle de second ordre
Soit à résoudre l’équation suivante :
𝑚𝑦 ′′ (𝑥 ) + 𝑐𝑦 ′ (𝑥) + 𝑘𝑦(𝑥 ) = 𝑓(𝑥)
{ 𝑥 ∈ [𝑎, 𝑏] (34)
𝑦(𝑎 ) = 𝑦0 , 𝑦(𝑏) = 𝑦𝑓
2.2.1. Conditions aux limites de Dirichlet
Les valeurs aux frontières, c'est-à-dire aux bornes de l'intervalle [a ;b] sont connues et sont définies par.
𝑦(𝑥0 ) = 𝑦0 𝑦0 = 𝑦0
{ Ou bien {𝑦 (35)
𝑦(𝑥𝑁 ) = 𝑦𝑓 𝑁+1 = 𝑦𝑓

Discrétisation du domaine
La première étape, consiste à subdiviser le domaine [a,b] en un nombre, N+1, de points fini avec un pas,
h, régulier (constant).

Telle que :

𝑥𝑖 = 𝑎 + 𝑖ℎ, 𝑖 = 0,1, … . , 𝑁 (36)


La forme discrétisée du domaine est appelée maillage.
Discrétisation l’équation différentielle
La forme discrétisée de l’équation différentielle le long du maillage retenu peut être présentée sous la
forme suivante :
𝑚𝑦 ′′ (𝑥𝑖 ) + 𝑐𝑦 ′ (𝑥𝑖 ) + 𝑘𝑦(𝑥𝑖 ) = 𝑓(𝑥𝑖 )
{ 𝑥𝑖 = 𝑎 + 𝑖ℎ (37)
𝑦(𝑥0 ) = 𝑦0 , 𝑦(𝑥𝑁 ) = 𝑦𝑓

10
[Chapitre 2 : Méthodes des différences fines en une 1D]

Ou bien :

𝑚𝑦𝑖′′ + 𝑐𝑦𝑖′ + 𝑘𝑦𝑖 = 𝑓𝑖


{ 𝑥𝑖 = 𝑎 + 𝑖ℎ (38)
𝑦0 = 𝑦0 , 𝑦𝑁+1 = 𝑦𝑓
Résolution de l’équation différentielle
La résolution consiste à remplacer les dérivées par un des schémas de la méthode des différences finies.
En utilisant un schéma centré d’ordre 2, on aura :
𝑦𝑖+1 −2𝑦𝑖 +𝑦𝑖−1 𝑦𝑖+1 −𝑦𝑖−1
𝑚( ) + 𝑐( ) + 𝑘𝑦𝑖 = 𝑓𝑖 (39)
ℎ2 2ℎ
Cette équation peut être réécrite sous la forme suivante :
𝑚 𝑐 2𝑚 𝑚 𝑐
[ − ] 𝑦𝑖−1 + [𝑘 − ] 𝑦𝑖 + [ + ] 𝑦𝑖+1 = 𝑓𝑖 (40)
ℎ2 (2ℎ) ℎ2 ℎ2 2ℎ

L’équation 39 exprime le schéma général de base qui donne la solution de l’équation différentielle en tout
point du maillage considéré.
En posant :
𝑚 𝑐
𝛼= −
ℎ2 (2ℎ)
2𝑚
𝛽=𝑘− (41)
ℎ2
𝑚 𝑐
𝛾= +
{ ℎ2 2ℎ
L’équation peut être réécrite sous une forme plus simple :
𝛼𝑦𝑖−1 +𝛽𝑦𝑖 + 𝛾𝑦𝑖+1 = 𝑓𝑖 (42)
En incrémentant l’équation 41 pour des valeurs de i allant de 0 à N, on aura :
i=1 𝛼𝑦0 +𝛽𝑦1 + 𝛾𝑦2 = 𝑓1 Comme y0 est connu, alors :

𝛽𝑦1 + 𝛾𝑦2 = 𝑓1 − 𝛼𝑦0


i=2 𝛼𝑦1 +𝛽𝑦2 + 𝛾𝑦3 = 𝑓2
i=3 𝛼𝑦2 +𝛽𝑦3 + 𝛾𝑦4 = 𝑓3 (43)
…………………………………………….
i=N-1 𝛼𝑦𝑁−2 +𝛽𝑦𝑁−1 + 𝛾𝑦𝑁 = 𝑓𝑁−1
i=N 𝛼𝑦𝑁−1 +𝛽𝑦𝑁 + 𝛾𝑦𝑁+1 = 𝑓𝑁 Comme yN+1 est connu, alors :
𝛼𝑦𝑁−1 +𝛽𝑦𝑁 = 𝑓𝑁 − 𝛾𝑦𝑓
Alors, nous avons un système de N-1 équations et N-1 inconnues qu’on peut résoudre aisément pour
trouver la solution de l’équation différentielle.

11
[Chapitre 2 : Méthodes des différences fines en une 1D]

La forme matricielle de ce système s’écrit comme suit :


𝑦1 𝑓1 − 𝛼𝑦0
𝛽 𝛾 0 0 ……. ….. 0
𝑦2 𝑓2
𝛼 𝛽 𝛾 0 0 …… 0
𝑦3 𝑓3
0 𝛼 𝛽 𝛾 0 ….. 0 . .
… … … …. … … … . = (44)
.
… … … … … … … . .
0 0 0 ……. 𝛼 𝛽 𝛾 𝑦
N−1 𝑓N−1
[0 0 0 0 …… 𝛼 𝛽] { 𝑦 }
𝑁 {𝑓𝑁 − 𝛾𝑦𝑓 }
Ou bien :
[𝐴]{𝑌} = {𝐹 } (45)
D’où la solution recherchée est :
{𝑌} = [𝐴]−1 {𝐹 } (46)
Comme la solution numérique d’une équation est d’autant plus précise si le pas d’échantillonnage tend
vers zéro, ce qui conduit à évaluer la valeur de cette solution en un nombre important de points qui ne
peuvent être traités manuellement. Alors, il est impératif de recourir à l’outil informatique pour estimer
les valeurs de la solution cherchée en tout point de l’intervalle choisi.
Exemple1
Soit à résoudre :
𝑦 ′′ (𝑥 ) + 4𝑦 (𝑥 ) = 𝑠𝑖𝑛(𝑥)
{ 𝑥 ∈ [0,10], ℎ = 0.01 (47)
𝑦(0) = 0, 𝑦(10) = −0.3335
La discrétisation de l’intervalle avec un pas h=0.01 donne un nombre de point de 1001. Pour résoudre
cette équation, on a à résoudre un système de 999 inconnues :
𝛼 = 10000 , 𝛽 = −19996 , 𝛾 = 10000
𝑦1 sin(0.01) − 𝛼. 0
−19996 10000 0 0 ……. ….. 0 𝑦2 sin(0.02)
10000 −19996 10000 0 0 …… 0 𝑦3 sin(0.03)
0 10000 −19996 10000 0 ….. 0 . .
… … … …. … … … . =
.
… … … … … … … . .
0 0 0 ……. 10000 −19996 10000 𝑦998
[ 0 sin(9.98)
0 0 0 …… 10000 −19996] {𝑦 }
999 {sin(9.99) + 𝛾. 0.3335}
Le programme Matlab de résolution de cette équation conformément à la procédure exposée ci-dessus est
présenté ci-dessous.

12
[Chapitre 2 : Méthodes des différences fines en une 1D]

clc
clear all
% Discrétisation
h=0.01; % pas d'échantillonnage
t=0:h:10; % Intervalle de calcul
n=length(t); % Nombre de points
% Coefficients de l'équation différentielle
m=1;c=0;k=4;w=1;
f=sin(w*t);
% Initialisation de la matrice des coefficients
alpha=m/h^2-c/(2*h);beta=k-2*m/h^2;gama=m/h^2+c/(2*h);
a=zeros(n,n);
% Conditions aux frontières
y(1)=0;y(n)= -0.3335;
% Construction de la matrice des coefficients
for i=1:n
if i==1
a(i,i)=1;b(i)=f(i);
end
if i==n
a(i,i)=1;b(i)=f(i);
end
if i==2
a(i,i)=beta;a(i,i+1)=gama;
b(i)=f(i)-alpha*y(1);
end
if i==n-1
a(i,i-1)=alpha;a(i,i)=beta;
b(i)=f(i)-gama*y(n);
end
if and(i>2,i<n-1)
a(i,i-1)=alpha;a(i,i)=beta;a(i,i+1)=gama; b(i)=f(i);
end
end
% Calcul des valeurs de la solution en chaque point de l'intervalle
y=inv(a)*b';
% SOLUTION exacte de y"+4y=sin(t)
yc=(-1/6)*sin(2*t)+(1/3)*sin(t); figure; plot(t,y,'-r',t,yc,'-k');
legend('DIFFERENCE FINIE','SOLUTION EXACTE','Location','north')
0.6 0.5

DIFFERENCE FINIE DIFFERENCE FINIE


0.4
0.4
SOLUT ION EXA CT E SOLUT ION EXA CT E
0.3

0.2
0.2

0.1
0

0
Y

-0.2
-0.1

-0.4 -0.2

-0.3
-0.6
-0.4

-0.8 -0.5
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
X X

h=0.5 h=0.01
Figure 2.1 Graphe de la solution

13
[Chapitre 2 : Méthodes des différences fines en une 1D]

2.2.2. Conditions aux limites de Dirichlet-Neumann


Les valeurs aux frontières sont définies par.
𝑦(𝑥0 ) = 𝑦0 𝑦1 = 𝑦0
{ Ou bien { 𝑦′ = 𝑣 (48)
𝑦 ′ (𝑥0 ) = 𝑣0 0 0

En utilisant un schéma décentré à droite , on aura :


𝑦𝑖+2 −2𝑦𝑖+1 +𝑦𝑖 𝑦𝑖+1 −𝑦𝑖
𝑚( ) + 𝑐( ) + 𝑘𝑦𝑖 = 𝑓𝑖 (49)
ℎ2 ℎ
Cette équation peut être réécrite sous la forme suivante :
𝑚 𝑐 𝑐 2𝑚 𝑚
[ − + 𝑘] 𝑦𝑖 + [ − ] 𝑦𝑖+1 + [ 2 ] 𝑦𝑖+2 = 𝑓𝑖 (50)
ℎ2 ℎ ℎ ℎ2 ℎ
L’équation 50 donne le schéma général de base de la solution de l’équation différentielle en tout point du
maillage considéré.
En posant :
𝑚 𝑐
𝛼= − +𝑘
ℎ2 ℎ
𝑐 2𝑚
𝛽= − (51)
ℎ ℎ2
𝑚
𝛾=
{ ℎ2
L’équation peut être réécrite sous une forme plus simple :
𝛼𝑦𝑖 +𝛽𝑦𝑖+1 + 𝛾𝑦𝑖+2 = 𝑓𝑖 (52)
En utilisant les conditions aux limites :
𝑦2 −𝑦1
𝑦1′ = = 𝑣1 D’où 𝑦2 = 𝑦1 + ℎ. 𝑣1 (53)

Le schéma de l’équation 52 nous permet de déduire :
𝑓𝑖 −𝛼𝑦𝑖 −𝛽𝑦𝑖+1
𝑦𝑖+2 = (54)
𝛾

Alors, connaissant la première et la deuxième valeur de la solution, on peut aisément déterminer toutes les
autres valeurs à l’aide de l’équation 54.
Exemple2
Soit à résoudre :

𝑦 ′′ (𝑥) + 4𝑦(𝑥 ) = 𝑠𝑖𝑛(𝑥)


{ 𝑥 ∈ [0,10], ℎ = 0.01 (55)
𝑦(0) = 0, 𝑦′(0) = −0.3335
𝛼 = 10004 , 𝛽 = −20000 , 𝛾 = 10000

14
[Chapitre 2 : Méthodes des différences fines en une 1D]

𝑦2 = 𝑦1 + ℎ. 𝑣1 = 0 + 0.01.0 = 0 𝑒𝑡 𝑦0 = 0 (56)
En incrémentant l’équation 54, on aura :
i=0
sin(0)−10004𝑦1 +20000𝑦2 sin(0)−10004.0+20000.0
𝑦3 = = =0
10000 10000
i=1
sin(0.01)−10004𝑦2 +20000𝑦3 sin(0.01)−10004.0+20000.0
𝑦4 = = = 9.99. 10−7
10000 10000
……………………………..
i=N
sin(1000.×0.01)−10004𝑦998 +20000𝑦999
𝑦1000 =
10000
Le programme Matlab de résolution de cette équation conformément à la procédure exposée ci-dessus est
présenté ci-dessous.
clc
clear all
% Discrétisation
dt=0.001;
t=0:dt:1;
% Nombre de points
n=length(t);
% Conditions initiales
y0=0;v0=0;y(1)=y0;
y(2)=y(1)+dt*v0;
% Coefficients de l’équation différentielle
m=1;c=0;k=4;
alpha=m/dt^2-c/(dt)+k;beta=c/dt-2*m/dt^2;gama=m/dt^2;
w=1;f=sin(w*t);
% Valeurs de laa solution le long du maillage (schéma décentré à droite)
for i=3:n
y(i)=(f(i-2)-alpha*y(i-2)-beta*y(i-1))/gama
end
% Graphe de la solution numérique
plot(t,y,'-.m')
% SOLUTION exacte de y"+4y=sin(t) y(0)=0 et y'(0)=0
yc=(-1/6)*sin(2*t)+(1/3)*sin(t);
figure; plot(t,y,'-r',t,yc,'-k');
legend('DIFFERENCE FINIE','SOLUTION EXACTE','Location','north')

15
[Chapitre 2 : Méthodes des différences fines en une 1D]

1.5 0.5

DIFFERENCE FINIE DIFFERENCE FINIE


0.4
1 SOLUT ION EXA CT E SOLUT ION EXA CT E
0.3

0.2
0.5

0.1

0 0

Y
Y

-0.1
-0.5
-0.2

-0.3
-1

-0.4

-1.5 -0.5
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
X X
h=0.1 h=0.01
Figure 2.2 Graphe de la solution
Exemple2
Soit à résoudre :

𝑦 ′ (𝑥) + 2𝑦(𝑥 ) = 𝑠𝑖𝑛(𝑥)


{ 𝑥 ∈ [0,10], ℎ = 0.01 (56a)
𝑦(0) = 0
La forme discrétisée de cette équation est :

𝑦𝑖′ + 2𝑦𝑖 = 𝑠𝑖𝑛(𝑥𝑖 )


{𝑥 = (𝑖 − 1)ℎ, ℎ = 0.01 (56b)
𝑦1 = 0
En appliquant un schéma explicite, on trouve :
ℎ𝑓𝑖 +(𝑚−𝑘ℎ)𝑦𝑖 0.01𝑠𝑖𝑛(𝑥𝑖 )+(1−2×0.01)𝑦𝑖
𝑦𝑖+1 = = (56c)
𝑚 1

𝑦𝑖+1 = 0.01𝑠𝑖𝑛(𝑥𝑖 ) + 0.98𝑦𝑖 (56d)


En incrémentant cette équation, on peut aisément calculer toutes les valeurs de y.

𝑖 = 1 ⇒ 𝑦2 = 0.01𝑠𝑖𝑛(0) + 0.98 × 0 = 0
𝑖 = 2 ⇒ 𝑦3 = 0.01𝑠𝑖𝑛(0.01) + 0.98 × 0 = 9 × 10−5
………………………………………………………………………………………….

𝑖 = 1000 ⇒ 𝑦1001 = 0.01𝑠𝑖𝑛(1000 × 0.01) + 0.98 × 𝑦1000


La solution exacte de cette équation différentielle est donnée par :
1 2 1
𝑦(𝑥 ) = 𝑒 −2𝑥 + sin(𝑥 ) − cos(𝑥)
5 5 5
Le programme Matlab suivant illustre la solution numérique de cette équation et le compare à la solution
exacte.

16
[Chapitre 2 : Méthodes des différences fines en une 1D]

clc
clear all
% Discrétisation
h=0.01;
x=0:h:10;
% Nombre de points
n=length(x);
% Conditions initiales
y0=0; y(1)=y0;
% Coefficients de l’équation différentielle “ ay'+by=f(x)”
a=1;b=2; f=sin(x);
% Incrémentation du schéma général de la solution
for i=1:n-1
y(i+1)=((a-b*h)*y(i)+h*f(i))/a;
end
% graphe de la solution numérique
plot(x,y)
%Solution exacte
hold on
yc=(1/5)*exp(-2*x)+(2/5)*sin(x)-(1/5)*cos(x);
plot(x,yc,'-r')
legend('DIFFERENCE FINIE','SOLUTION EXACTE', 'Location','north')
v=[x' y' yc'];
0.6 0.5
DIFFERENCE FINIE DIFFERENCE FINIE
SOLUTION EXACTE 0.4
SOLUTION EXACTE
0.4
0.3
0.2 0.2

0.1
0
0
Y
Y

-0.2
-0.1

-0.4 -0.2

-0.3
-0.6
-0.4

-0.8 -0.5
0 2 4 6 8 10 0 2 4 6 8 10
X X

h=0.1 h=0.01
Figure 2.3 Graphe de la solution

17

Vous aimerez peut-être aussi