Professional Documents
Culture Documents
U (0, t) =U (1, t) =0
U(x,0) =𝑈 0 (𝑥)
v (-1) = v (1) = 0
2
𝜋 2
Dont les solutions sont g(t) = 𝐶𝑒 −(2) 𝑡
𝑑𝑡
- 𝑑𝑑𝑡𝑈2 = 0 Equation de Chaleur
Pour i=1
Dans le cas instationnaire
1 1 2 1
𝑑𝑈
∫03 𝑑𝑡 Dx - ∫03 𝑑𝑑𝑡𝑈2 dx = ∫03 0 𝑑𝑥 = 0
𝑛+1
−𝑈𝑖𝑛
𝑑𝑈
𝑑𝑡
= 𝑈𝑖 𝑘
1 1
𝑑𝑈
𝑑𝑡
[𝑥]30 – [𝑑𝑈 ]3 = 0
𝑑𝑥 0
𝑈𝑖𝑛+1 −𝑈𝑖𝑛
𝑘
ℎ – (U’ (13) – U’ (0)) = 0
𝑈𝑖𝑛+1 −𝑈𝑖𝑛
𝑘
ℎ - U’ (13) + U’ (0) = 0
𝑈 (𝑥1 )−𝑈(𝑥0 )
U’ (0) = ℎ = 2( 𝑈ℎ1−0)
2
𝑈 (𝑥2 )−𝑈(𝑥1 )
U’ (13) = ℎ =𝑈2−𝑈
ℎ
1
𝑛 𝑛 𝑛 𝑛
2𝑈1
ℎ
- 𝑈2 −𝑈
ℎ
1
= 3𝑈1ℎ−𝑈2
𝑈1𝑛+1 −𝑈1𝑛 𝑛 𝑛
𝑘
ℎ + 3𝑈1ℎ−𝑈2 = 0
3
Pour i=2
Pour i=3 :
4
On va ajouter le terme du temps :
𝑈𝑖𝑛+1 −𝑈𝑖𝑛
ℎ
𝑘
+ 𝐴𝑖 𝑈𝑖𝑛 = 𝐵𝑖
ℎ(𝑈𝑖𝑛+1 − 𝑈𝑖𝑛 ) +𝑘 𝐴𝑖 𝑈𝑖𝑛 = 𝑘 𝐵𝑖
ℎ𝑈𝑖𝑛+1 = ℎ 𝑈𝑖𝑛 -𝑘 𝐴𝑖 𝑈𝑖𝑛 +𝑘 𝐵𝑖
5
II-La résolution par la méthode des volumes finis schéma explicite.
Script MATLAB.
clear all
n=51;
h=2/n;
xi=-1:h:1;
k=h^2/1.98;
t=0: k:1;
m= [-1 -1+h/2:h:1-h/2 1];
[X,T]=meshgrid(xm,t);
uexact=exp(-pi^2/4*T).*cos(pi/2*X);
figure(1)
mesh(X,T,uexact)
A=zeros(n,n);
B=zeros(n,1);
A(1,1)=3;
A(1,2)=-1;
for i=2:n-1
A(i,i-1)=-1;
A(i,i)=2;
A(i,i+1)=-1;
end
A(n,n-1)=-1;
A(n,n)=3;
A=(1/h)*A;
for i=1:n
B(i)=0;
end
B=h*B;
x=[-1+h/2:h:1-h/2]';
uzero=cos(pi/2*x);
uapp(1,:)=[0;uzero;0];
u=uzero;
for i=2:floor(1/k)+1
u=u+(k/h)*(-A*u+B);
uapp(i,:)=[0;u;0];
end
figure(2)
mesh(X,T,uapp)
6
• Résultats données par la méthode
Pour n=51
Pour n=100
7
- Avec un nombre n=100 on obtient un mauvais résultat,mais avec un
changement sur la boucle’ for’ dans le programme (de k) on va obtenir
des bonnes résultats :
Remarque :
La divergence de la méthode explicite revient au mauvais chois de k
qu’il doit toujours être inférieure ou égale a h²/2 .
8
III-La résolution par la méthode des volumes finis schéma implicite.
Script MATLAB.
clear all
clc
N=50;
h=2/N;
xi=-1:h:1;
% pas de temps meme k=h est bien...
k=h/2;
t=0:k:1;
% CI
xm=[-1 -1+h/2:h:1-h/2 1];
[X,T]=meshgrid(xm,t);
uexact=exp(-pi^2/4*T).*cos(pi/2*X);
figure(1)
mesh(X,T,uexact)
% solution continue f=0 u(t,x)=e^(-pi^2/4)t cos(pi/2sx)
% u(t,0)=e-(-pi-2/4)t
% N mailles done metrics, NxN
A=zeros(N,N);
% at second membre Nx1
B=zeros(N,1);
% -u"
A(1,1)=3;
A(1,2)=-1;
for i=2:N-1
A(i,i-1)=-1;
A(i,i)=2;
A(i,i+1)=-1;
end
A(N,N-1)=-1;
A(N,N)=3;
A=(1/h)*A;
% =0
for i=1:N
B(1)=0;
end
B=h*B;
I=diag(ones(N,1));
x=[-1+h/2:h:1-h/2]';
uzero=cos(pi/2*x);
uapp(1,:)=[0;uzero;0];
u=uzero;
for i=2:floor(1/k)+1
u=(h*I/k+A)\(B+(h/k)*u);
uapp(i,:)=[0;u;0];
end
figure(2)
mesh(X,T,uapp)
9
• Résultats donnés par la méthode
Pour n=50
Pour n=100
10
Conclusion :
Les deux méthodes donnent des bons résultats, avec une
condition sur le chois du pas de temps k dans la méthodes
explicite.
11