Académique Documents
Professionnel Documents
Culture Documents
Chapitre 2.
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 :
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 :
𝑚𝑦𝑖′ + 𝑘𝑦𝑖 = 𝑓𝑖
{ 𝑥𝑖 = 𝑎 + 𝑖ℎ (31)
𝑦0 = 𝑦(𝑥0 )
9
[Chapitre 2 : Méthodes des différences fines en une 1D]
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 :
10
[Chapitre 2 : Méthodes des différences fines en une 1D]
Ou bien :
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 :
11
[Chapitre 2 : Méthodes des différences fines en une 1D]
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
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]
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 :
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
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 :
𝑖 = 1 ⇒ 𝑦2 = 0.01𝑠𝑖𝑛(0) + 0.98 × 0 = 0
𝑖 = 2 ⇒ 𝑦3 = 0.01𝑠𝑖𝑛(0.01) + 0.98 × 0 = 9 × 10−5
………………………………………………………………………………………….
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