Vous êtes sur la page 1sur 4

Avant de commencer le TP N° 1, veuillez exécuter les programmes matlab ci-dessous

concenrant la méthode directe et la méthode de Gauss-Seidel pour la résolution de l’équation


de Laplace
uxx + uyy = 0
avec les conditions aux limites qui ont été données dans l’exemple du cours :
u(0,y) = 0 ; u(20,y) = 100
u(x,0) = 0 ; u(x,20) = 0
1) Premier programme : méthode directe
Vous pouvez donner comme nom au fichier : directlaplace.m
%*************** Code MATLAB pour résoudre l'équation de Laplace**********
%***** Solution pour étudier l'état de la temperature aux points internes*
%******par la méthode directe. **************
%Date: FPK le 07/05/2015

clc;clear
h=0.3125;
a=0; b=20;
c=0; d=20;
nx=(b-a)/h;
ny=(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 elements de la matrice B)
for i=1:n
B(i)=0;
if (mod(i,nx-1)==0)
B(i)=-100;
end
end
%%% (resolution du systeme 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
%%% (decallage des elements pour inserer 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;
%%% les vecteurs x et y
x=0:h:b; y=0:h:d;
%%% (af?chage la courbe en tenant compte des vecteurs x ,y et de la matrice
U)
mesh(x,y,u)

2) 2ème programme : Méthode de Gauss Seidel (vous pouvez donner comme nom
met_gsd.m)
%=========================================================================
%*************** Code MATLAB pour résoudre l'équation de Laplace**********
%***** Solution pour étudier l'état de la temperature aux points internes*
%******par la méthode de Gauss Seidel. Par M. Charafi, FPK, **************
%Date: 07/05/2015

clear; clc;
a=0; b=20;
c=0; d=10;
h=0.625 ;
e=1e-6;
%%% les vecteurs ~ox; ~oy x=0:h:b; y=0:h:d;
nx=(b-a)/h; ny=(d-c)/h;
% c=cos(pi/nx)+cos(pi/ny);
% w=4/(2+sqrt(4-c*c));
u=zeros(nx+1,ny+1);
%v=zeros(ny+1,nx+1);
for j=1:ny+1 % condition limite à droite
u(nx+1,j)=100;
end
for i=1:nx+1 % condition limite en haut
u(i,ny+1)=0;
end
for j=1:ny+1 % condition limite àgauche
u(1,j)=0;
end
for i=1:nx+1 % condition limite en bas
u(i,1)=0;
end
chk=1;
while (chk)
%for k=1:100
for i=2:nx
for j=2:ny
v= (u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1))/4;
if (abs(v-u(i,j))<e)
chk=0;
else
chk=1;
u(i,j)=v;
%pause
end
end
end
%contourf(u)
%x=0:h:b; y=0:h:d;
%mesh(x,y,u)
%getframe();
end
%end
%%% les vecteurs x et y
disp(u)
x=0:h:b; y=0:h:d;
mesh(x,y,u’)

FPK, Khouribga, Licence en physique (S6)

Physique numérique TP n°1

Dans ce travail, on veut résoudre deux problèmes types des équations elliptiques, à savoir
l’équation de Laplace et l’équation de Poisson. Il est à rappeler que la méthode à utiliser dans
ce TP est la méthode des différences finies.

Problème 1 : Equation de Laplace


Considérons le problème de conduction de chaleur stationnaire dans une plaque carrée de 0.5
mètres de côté, dont les conditions limites sont les suivantes :
u(0,y) = 0 ; u(0.5,y) = 200y
u(x,0) = 0 ; u(x,0.5) = 200x
Ce problème est régi par l’équation de Laplace
uxx + uyy = 0
Nous allons utiliser des mailles carrées, avec h = 0.125. Les points (i,j) de la grille vont de
(1,1) jusqu’à (nx+1,ny+1). Ainsi, x(1) = 0 et x(i,j) = (i-1)*h, aussi x(nx+1,j) = nx*h.
1) Tracer la grille du maillage
2) En utilisant la méthode des différences finies, montrer que l’équation des différences
finies de l’équation de Laplace s’écrit :
ui+1,j+ui,j+1+ui-1,j+ui,j-1-4ui,j=0
3) Résoudre le problème en utilisant l’algorithme de Gauss-Seidel en traçant la courbe de
u(i,j) et en explicitant la matrice des résultats de u(i,j). On rappelle que l’algorithme de
Gauss-Seidel s’écrit :
ui,jk+1=1/4(ui-1,jk+1+ ui,j-1k+1+ui+1,jk+ui,j+1k ) où k représente le compteur d’itérations
4) Résoudre le même problème mais cette fois en utilisant l’algorithme de relaxation de
Liebmann qui s’écrit :
ui,jk+1==(1-w)ui,jk+w/4(ui-1,jk+1+ ui,j-1k+1+ui+1,jk+ui,j+1k )
soit alors : ui,jk+1==ui,jk+w/4(ui-1,jk+1+ ui,j-1k+1+ui+1,jk+ui,j+1k -4 ui,jk)
5) Comparer les résultats avec la solution exacte u(x,y) = 400xy
Problème 2 : Equation de Poisson
Il s’agit d’une généralisation de l’équation de Laplace. L’équation s’écrit comme suit :
uxx + uyy = f(x,y). Dans le cas de notre problème, on donne f(x,y) = xey . On donne aussi les
conditions de discrétisations et celles aux limites suivantes :
Le domaine est rectangulaire avec x compris entre 0 et 2 ; et y entre 0 et 1. Dans la
discrétisation on donne : nx = 6 ; ny=5. Les conditions aux limites sont :
u(0,y) = 0, u(2,y) = 2ey
u(x,0) = x, u(x,1) = xe1
Discrétisation : On prend alors h comme pas de discrétisation selon x et k comme pas de
discrétisation selon y. Ainsi, on a
1/h²(ui+1,j -2ui,j + ui-1,j) + 1/k²(ui,j+1-2ui,j+ ui,j-1) = f(xi,yj)
Où f(xi,yj) = xieyj = (i-1)he(j-1)k ; xi = (i-1)h; yj = (j-1)k (c’est à dire, x1 = 0; x2 = h; …..)
On aura donc l’expression de ui,j = [k²(ui+1,j + ui-1,j) + h²(ui,j+1+ ui,j-1) – h²k²f(xi,yj)]/ 2(h²+k²) (*)

1) Dans le programme Matlab de l’équation de Laplace, définir la fonction f(x,y) où x,y


appartiennent à [1,nx+1] x [1,ny+1]
2) Remplacer u(i,j) par sa nouvelle formule telle que donnée en (*) et enregistrer le
programme sous le nom equation_poisson
3) Définir dans le programme la solution exacte u(x,y) = xe y et comparer les deux
résultats numérique et exacte