192
11
•
Problèmes
✞
☎
function [x,y,ue,uh]=diffini(n);
h=1/(n+1);h2=h*h;
%i nitialisation
[x,y]=meshgrid((0:n+1)*h);
d(1:n+2,1:n+2)=4+h2*c(x,y);
fh(1:n+2,1:n+2)=h2*f(x,y);
uh= zeros(n+2);
aux=(0:n+1)*h;
uh(:,1)=u_ex(aux ,0)’;
uh(:,n+2)=u_ex(aux ,1)’;
uh(1,:)=u_ex(0,aux);
uh(n+2,:)=u_ex(1,aux);
%r esolution du systeme par une methode iterative
maxiter=100*n;precis=1e-10;
iter=0;err=1;
er= zeros(n+2);
v=uh;
while (err>precis)&(iter
iter=iter+1;
v(2:n+1,2:n+1)=(fh(2:n+1,2:n+1)+uh(1:n,2:n+1)...
+uh(3:n+2,2:n+1)+uh(2:n+1,1:n)...
+uh(2:n+1,3:n+2))./d(2:n+1,2:n+1);
er= abs(uh-v);
uh=v;
err= max( max(er));
end;
erriteration=err
disp(’maxiter-iter’);
maxiter-iter
ue(1:n+2,1:n+2)=u_ex(x,y);
✝
✆
Ce qu’il faut retenir de cetexercice
1. La commande Matlab [x,y]=meshgrid(((0 :n+1)*h) crée deux tableaux x et y de
même dimension(cf. chapitre 1).
2. Notera ussi l’utilisation de while pour obtenir une boucle avec deux conditions d’arrêt
(cf. Corrigé 2.3).
✞
☎
function z=c(x,y);
z=2*pi^2;
function z=f(x,y);
z=4*pi^2*cos( pi*(x+y));
function z=u_ex(x,y);
z= cos( pi*(x+y));
✝
✆
11
•
Problèmes
✞
☎
function [x,y,ue,uh]=diffini(n);
h=1/(n+1);h2=h*h;
%i nitialisation
[x,y]=meshgrid((0:n+1)*h);
d(1:n+2,1:n+2)=4+h2*c(x,y);
fh(1:n+2,1:n+2)=h2*f(x,y);
uh= zeros(n+2);
aux=(0:n+1)*h;
uh(:,1)=u_ex(aux ,0)’;
uh(:,n+2)=u_ex(aux ,1)’;
uh(1,:)=u_ex(0,aux);
uh(n+2,:)=u_ex(1,aux);
%r esolution du systeme par une methode iterative
maxiter=100*n;precis=1e-10;
iter=0;err=1;
er= zeros(n+2);
v=uh;
while (err>precis)&(iter
v(2:n+1,2:n+1)=(fh(2:n+1,2:n+1)+uh(1:n,2:n+1)...
+uh(3:n+2,2:n+1)+uh(2:n+1,1:n)...
+uh(2:n+1,3:n+2))./d(2:n+1,2:n+1);
er= abs(uh-v);
uh=v;
err= max( max(er));
end;
erriteration=err
disp(’maxiter-iter’);
maxiter-iter
ue(1:n+2,1:n+2)=u_ex(x,y);
✝
✆
Ce qu’il faut retenir de cetexercice
1. La commande Matlab [x,y]=meshgrid(((0 :n+1)*h) crée deux tableaux x et y de
même dimension(cf. chapitre 1).
2. Notera ussi l’utilisation de while pour obtenir une boucle avec deux conditions d’arrêt
(cf. Corrigé 2.3).
✞
☎
function z=c(x,y);
z=2*pi^2;
function z=f(x,y);
z=4*pi^2*cos( pi*(x+y));
function z=u_ex(x,y);
z= cos( pi*(x+y));
✝
✆
