Vous êtes sur la page 1sur 10

Analyse numérique Ecine 4 : 2017-2018

Série : 2
Exercice 1 Equation de la chaleur
Considérons le problème de diusion de la chaleur dans une barre homogène, de longueur L, de coe-
cient de conduction λ, de cocient calorique Cp , sans production d'énergie interne. La température
u(x, t) au point x et à l'instant t vérie l'équation suivante :

∂u ∂ 2u


 (x, t) = a 2 (x, t), 0 6 x 6 L, 0 6 t 6 T
∂t
(P) u(x, ∂x
0) = u 0 (x), 0 6 x 6 L, condition initiale
u(0, t) = b0 (t), u(L, t) = bL (t), 0 6 t 6 T, conditions aux bords.

λ
avec a = la diusivité thermique. Le problème (P) est appelée équation de la chaleur avec
ρCp
conditions de Dirichlet.
Nous allons chercher une solution approchée dénie sur un maillage en espace et en temps. Pour
L
un entier N strictement positif donné, on pose h = = ∆x, c'est le pas d'espace et on choi-
N
T
sit k = ∆t = le pas de temps. Nous noterons ui la solution approchée aux points xi = ih,
n
M
i = 0, · · · , N au temps tj = jk , j = 0, · · · , M . Nous prendrons naturellement u0i = u0 (xi ),
uj0 = b0 (tj ) et ujM = bL (tj ) pour les conditions initiales et aux limites. Il reste à déterminer uji pour
i = 1, · · · , N − 1 et j = 1, · · · , M .

Schéma d'Euler Explicite :


1) En utilisant les approximations vues dans le cours, montrer que la solution approchée est donnée
par le schéma suivant :

uj+1
i = ruji−1 + (1 − 2r)uji + ruji+1 , i = 1, · · · , N − 1,
k ∆t
avec r = a 2
= a 2.
h ∆x
Méthode d'Euler Implicite :
En utilisant les schémas de diérence nies d'ordre 1 en temps et d'ordre 2 en espace aux points
(xi , tj+1 ), montrer que la solution approchée est donnée par le schéma suivant :

uj+1
i − uji = ruj+1 j+1
i−1 − 2rui + ruj+1
i+1 , i = 1, · · · , N − 1.

2) Montrer que la résolution du schéma numérique est équivalente à la résolution du système


linéaire :
AU j+1 = U j + f

Page 1 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
où U j = uj1 , uj2 , · · · , ujM −1 . Expliciter A et f .


Application
Considérons
∂u ∂ 2u


 (x, t) = (x, t), 0 6 x 6 1, 0 6 t 6 0.4
∂t
(P1 ) u(x, ∂x2
0) = sin(πx), 0 6 x 6 1, conditions initiales
u(0, t) = 0, u(1, t) = 0, 0 6 t 6 0.4, conditions aux limites.

La solution exacte de (P1 ) est u(t, x) = sin(πx) exp(−π 2 t).


Pour résoudre numériquement le problème (P1 ) on choisit la méthode d'Euler implicite.
1. Donner une fonction Matlab pour calculer la solution numérique de ce problème. Votre fonction
doit retourner :
ˆ les points xi du maillage spaciale.
ˆ les temps ti
ˆ la matrice des solutions approchées U = (ui,j ).
ˆ l'erreur à l'instant nale.
2. Tester votre fonction et tracer en 3D les courbes de la solution exacte et la solution apporchée.
3. Tracer en 2D les courbes de la solution exacte et la solution approchée à un instant t.
4. Tester avec plusieurs valeurs de ∆t qu'est ce qu'on peut déduire ?
5. On choisit N = 100. Etudier l'erreur commise entre la solution exacte et la solution approchée
quand le pas ∆t ∈ [0.02, 0.01, 0.005, 0.002, 0.001] et représenter log(erreur) en fonction de
log(∆t). Déduire l'ordre du Schéma ?
~

 Solution 1 :
Schéma d'Euler Explicite : Le schéma est obtenu en considérant l'équation de la chaleur au point
xi et au temps tn et en utilisant les approximations d'ordre 1 en temps et d'ordre 2 en espace :

∂u u(xi , tn + k) − u(xi , tn ) un+1 − uni


(xi , tn ) ' = i .
∂t k k
∂ 2u u(xi − h, tn ) − 2u(xi , tn ) + u(xi + h, tn ) uni−1 − 2uni + uni+1
(x ,
i nt ) ' = .
∂x2 h2 h2
On obtient
un+1
i − uni = runi−1 − 2runi + runi+1
Méthode d'Euler Implicite :
Considérons l'équation de la chaleur au point xi et au temps tn+1 et en utilisant les approximations

Page 2 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
d'ordre 1 en temps et d'ordre 2 en espace :
∂u u(xi , tn+1 ) − u(xi , tn ) un+1 − uni
(xi , tn+1 ) ' = i .
∂t k k
∂ 2u u(xi − h, tn+1 ) − 2u(xi , tn+1 ) + u(xi + h, tn+1 ) un+1 n+1
i−1 − 2ui + un+1
i+1
(x , t
i n+1 ) ' = .
∂x2 h2 h2
On obtient :
un+1 n n+1 n+1 n+1

i − ui = r ui−1 − 2u i + ui+1 , i = 1, · · · , M − 1.
Les valeurs un+1
0 et un+1
M sont données par les conditions aux limites. Ce système peut aussi s'écrire
sous la forme matricielle :
   un+1  
un1 + run+1

1 + 2r −r 0 ··· 0 1 0
..   u n+1
un2
.   2.
  
−r 1 + 2r −r 0 ..

 ..
  
.

... ... 
   
.. = ..
  
 0 −r 0 
 . .
 
.. ... ... ...

   
.

−r
  
   un+1   unM −2 
M −2
0 ··· 0 −r 1 + 2r un+1 unM −1 + run+1
M −1 M

La matrice A est à diagonale strictement dominante donc inversible.


Application
Question 1 : La fonction

function [U,x,t,uu,e] = chaleur(N,dt,I,J,u0,uexac)


% Input: N = Nombre de points de maillage
% dt = Pas temps
% I = Intervalle des x
% J = Intevalle Temps
% u0 = Fonction condition initiale
% uexac= Solution Exacte

% Output:
% x = Noeuds des DF
% t = Temps dans lequel la solution est calculev (Noeuds tempss)
% U = Matrice solutions: U(:,j) est U(x) a l'instant t = t(j)
% e = Erreur on va calculer la norme inf de l'erreur entre la
% solution exacte et approche a l instant final
% uu = La matrice des valeurs exacte chaque colonne uu(:,j) est la
% valeur exacte a l'instant t=t(j)
h =1/N ;
r= dt/h^2;
a=I(1);
b=I(2);
T =J(2);

Page 3 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
x =a: h :b;
t =J(1): dt :T;
U(1: N +1,1) =u0(x)';
U(1 ,1: length(t)) =0;
U(N +1 ,1: length(t)) =0;
A =2* diag ( ones (N-1,1) ) - diag ( ones (N -2 ,1) ,1) - diag ( ones (N -2 ...
,1) , -1);
A= eye(N-1)+r*A;
for j=1:( length(t) -1)
U(2: N ,j+1) =A\U(2: N ,j);
end ;
% Solution Exacte
n=length(t);
for j=1:n
uu(:,j)=uexac(x,t(j));
end
e=norm(U(:,n)- uu(:,n),inf);
end

Questions 2-4 :

% Test de la fonction
clear all;
I=[0,1];
J=[0,0.4];
N=20;
dt=0.001;
u0= inline('sin(pi*x)','x'); % condition initiale
uexac = inline('sin(pi*x).* exp(-pi*pi*t)','x','t'); % Solution exacte
[U,x,t,uu,e]=chaleur(N,dt,I,J,u0,uexac);

% On trace dans la meme figure la solution exacte et la solution approchée


[xx , tt ]= meshgrid(x ,t);
figure(1);
subplot (2 ,1 ,1)
surf(xx ,tt ,U')
xlabel( 'x')
ylabel( 't')
title ( 'solution approchee ')
axis ([0 1 0 0.4 0 1])
% Matrice avec les valeurs exactes
subplot (2 ,1 ,2)
surf(xx,tt ,uu')
xlabel( 'x ')
ylabel( 't ')
title ( ' solution exacte ')
axis ([0 1 0 0.4 0 1])
% On trace la solution exacte et la solution approchee a l'instant n-1 par
% exemple

Page 4 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
figure(2);
n=length(t);
plot(x,uu(:,n-1)',x,U(:,n-1)','+')
legend('Solution Exacte','Solution Approché')

Question 5 : Pour observer numériquement l'ordre d'un schéma connaissant la solution exacte :

Supposons que l'on ait un schéma numérique d'ordre p qui vérie :

kek = kUex − Uh k = Chp


Pour mesurer la précision du schéma et sa vitesse de convergence :
ˆ Nous calculons plusieurs solutions numériques sur des grilles de calcul de plus en plus nes.
ˆ On calcule ensuite pour chacune des grilles l'erreur kek, et on trace la courbe de log(kek) en
fonction de log(h).
Sachant que :
ln(kek) = ln(C) + p ln(h)
ˆ On obtient nalement une droite de pente l'ordre du schéma.

%%%%%% Erreur on fait varier dt et on calcule l'erreur obtenue


clear;
I=[0,1];
J=[0,0.4];
N=200;
u0= inline('sin(pi*x)','x'); % condition initiale
uexac = inline('sin(pi*x).* exp(-pi*pi*t)','x','t'); % Solution exacte

tabdt =[0.01,0.005, 0.0025, 0.0013,0.0005,0.00025];


for i =1:length(tabdt)
dt = tabdt(i);
[U,x,t,uu,e(i)]=chaleur(N,dt,I,J,u0,uexac);
end
% pour observer l'ordre de la methode en temps, on tracera le log(e) en
% fonction du log( tabdt) (voir TD2).
plot(log(tabdt),log(e))
title(' Courbe d erreur')

Exercice 2 Diérences nies pour un problème aux limites 2D


On considère une membrane rectangulaire xée sur les bords (On néglige les forces élastiques
dues à la déformation de la membrane) qui se déforme sous l'eet d'une force transversale f (x, y) par
élément de surface et on cherche la déexion verticale u. Le problème modéle qui est une équation
de poisson est donnée par :

Page 5 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,

−∆u(x, y) = f (x, y), ∀(x, y) ∈ Ω = [a, b] × [c, d]
(P2 )
u(a, y) = u(b, y) = u(x, c) = u(x, d) = 0, Conditions aux limites
∂ 2u ∂ 2u
avec ∆u(x, y) = 2 (x, y) + 2 (x, y).
∂x ∂y
Introduisons une partition règulière du segment [a, b] en Nx sous intervalles [xi , xi+1 ] de longueur
b−a
hx = avec x0 = a, xNx = b et xi = a + ihx pour i = 0, · · · , Nx
N
De même nous introduisons une partition règulière du segment [c, d] en Ny sous intervalles
d−c
[yj , yj+1 ] de longueur hy = avec y0 = c, yNy = d et yi = c + jhy pour j = 0, · · · , Ny .
Ny

Schéma à 5 points pour le laplacien


Les noeuds de la grille sont les points Mi,j de coordonnées (xi , yj ). Ainsi, les inconnus sont les
valeurs uij qui approchent la solution exacte u(xi , yj ) aux noeuds intérieurs pour 1 6 i 6 Nx − 1,
et 1 6 j 6 Ny − 1.
Il y a (Nx − 1) × (N y − 1) inconnus.
1. Proposer un schéma basé sur une formule de diérence nies centrées pour résoudre le
problème(P2 ).
2. Pour simplier on prends hx = hy = h. Montrer que la résolution du schéma numérique est
équivalent à la résolution de
AU = f
Expliciter U , A et f .
~

 Solution 2 1. Comme en 1D On va déterminer uij qui approche u(xi , yj ). Par le développement

Page 6 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
de Taylor, on trouve :
∂ 2u u(xi−1 , yj ) − 2u(xi , yj ) + u(xi+1 , yj )
2
(xi , yj ) = + O(h2x ).
∂x h2x

∂ 2u u(xi , yj−1 ) − 2u(xi , yj ) + u(xi , yj+1 )


2
(x i , yj ) = 2
+ O(h2y ).
∂y hy
Un schéma numérique possible est alors de considérer l'approximation suivante de ∆u(xi , xj )

−ui−1,j + 2ui,j − ui+1,j −ui,j−1 + 2ui,j − ui,j+1


+ = fi,j (1)
h2x h2y
∀i = 1, .., Nx − 1 ∀j = 1, .., Ny − 1

Les conditions au bords s'écrivent :


u0,j = uN,j = ui,0 = ui,N = 0, ∀i = 0, .., Nx − 1 ∀j = 0, .., Ny − 1

avec ui,j une approximation de u(xi , yj ) et fi,j = f (xi , yj ).


4u −u −u −u −u
Si hx = hy = h alors (1) s'écrira : i,j i+1,j i−1,j
2
i,j+1 i,j−1
= fi,j Le système linéaire
h
dépend de la façon dont on numérote les noeuds du maillage. On choisit de numéroter les noeuds
dans l'ordre naturel suivant : de la gauche vers la droite et de bas en haut, de cette façon le vecteur
U s'écrira :
U = (u1,1 , u2,1 , · · · , uNx ,1 , u1,2 , · · · , uNx ,2 , ..., u1,Ny , · · · , uNx ,Ny )
Ainsi on obtient le système linéaire :
AU = f
avec
B −I 0 · · · 0 4 −1 0 · · · 0
   
−I B −I · · · 0  −1 4 −1 · · · 0 
 . . . . . . . . . . .. 
 .
. . . . . . . . . .. 
A = 2  .. B =  ..
1  
.  
. 
h  . ... ...  . ... ...

 ..  ..
 
−I  −1
0 · · · · · · −I B 0 · · · · · · −1 4
I = INx −1 est la matrice identité de taile (Nx − 1)2 . B est de taille (Nx − 1)2 .

f = (f1,1 , f2,1 , · · · , fNx ,1 , f1,2 , · · · , fNx ,2 , ..., f1,Ny , · · · , fNx ,Ny )

Remarque : Tout les résultats de consistance, stabilité et convergence du cas de la dimension 1


s'adaptent sans modication majeur.


Page 7 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
Exercice 3 On considère le problème :

−∆u(x, y) = 0, ∀(x, y) ∈ Ω = [0, 20] × [0, 10]
(P3 )
u(0, y) = u(x, 0) = u(x, 10) = 0, et u(20, y) = 100 Conditions aux limites

5 5 5
On prends hx = hy = h ∈ {5, , , }
2 4 8
1. En variant h, résoudre le système (P3 ). Donner à chaque fois le nombre d'inconnues.
5
2. pour h = 5 et h = construire manuellement la matrice du sytème. Dessiner une grille avec
2
les points inconnus.
3. Tracer les courbes ( avec la commande mesh)
~

 Solution 3 :

1. ˆ h=5 : Donc
b−a 20 − 0
h = 5 = hx = = donc Nx = 4
Nx Nx
c−d 10 − 0
h = 5 = hy = = donc Ny = 2
Ny Ny
La grille maillée contient alors (Nx + 1) × (Ny + 1) mailles vu que nous avons à rajouter
les points xi = 0 et ceux yj = 0 c'est a dire les points intersection de la courbe avec les
axes. Mais comme les conditions aux limites nous donnent la valeur de la fonction sur les
bords, alors les points inconnus restent seulement ceux de l'intérieur du cadrillage. Ce qui
fait donc que le nombre d'inconnues est alors
(Nx − 1) × (Ny − 1) = 3 × 1 = 3

Le système matricielle à résoudre AU = d avec :


     
−4 1 0 0 u1,1
A =  1 −4 1 , d= 0  f =  u2,1 
0 1 −4 −100 u3,1

2. Matlab

clc;clear
h=0.25;
a=0;
b=20;
c=0; d=10;
nx=floor((b-a)/h);

Page 8 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
ny=floor((d-c)/h);
n=(nx-1)*(ny-1);
%%% (remplissage des elements de la matrice A)
A=zeros(n);
for i=1:(n-1)
A(i,i)=-4;
A(i+1,i)=1;
A(i,i+1)=1;
if (mod(i,(nx-1))==0)
A(i+1,i)=0;
A(i,i+1)=0;
end
end
for i=1:n-nx+1
A(nx-1+i,i)=1;
A(i,nx-1+i)=1;
end
A(n,n)=-4;
%%% (remplissage des t’elt’ements de la matrice B)
for i=1:n
B(i)=0;
if (mod(i,nx-1)==0)
B(i)=-100;
end
end
%%% (rt’esolution du syst`eme Av=B et transformation du vecteur ¬v en la ...
matrice U).
V = A\B';
k=1;
for j=1:ny-1
for i=1:nx-1
u(j,i)=V(k);
k=k+1;
end
end
%%% (dt’ecallage des t’elements pour inst’erer les conditions aux limites)
for j=ny:-1:2
for i=nx:-1:2
u(j,i)=u((j-1),i-1);
end
end
for i=1:nx
for j=1:ny
u(1,i)=0;
u(j,1)=0;
u(ny+1,i)=0;
u(j,nx+1)=100;
end
end
u(1,nx+1)=0;

Page 9 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,
%%% les vecteurs x et y
x=0:h:b; y=0:h:d;
%%% (affichage la courbe en tenant compte des vecteurs x ,y et de la ...
matrice U)
figure(2)
mesh(x,y,u)

Page 10 de 10
Date: 5 décembre 2017
abdellatif.elghazi@uir.ac.ma,

Vous aimerez peut-être aussi