Universit´e Pierre et Marie Curie – Paris 6 Examen de travaux pratiques Licence de Math´ematiques LM380 – Analyse Hilbertienne et Num´erique
28 mai 2008 8h30 `a 9h30
Les appareils ´electroniques et les documents sont interdits. Les r´eponses de- vront ˆetre r´edig´ees de mani`ere rigoureuse. Lorsque des r´esultats du cours seront utilis´es, ils devront clairement ˆetre ´enonc´es. On notera que certaines questions peuvent ˆetre r´esolues ind´ependamment.
Probl`eme I. On consid`ere une matrice A ∈ Rn×n et on s’int´eresse `a la r´esolution par des m´ethodes it´eratives d’un syst`eme lin´eaire Aa=b avec un second membre b∈Rn.
On fait la d´ecomposition usuelle deAenA=L+D+U, avecD matrice diagonale,Lmatrice triangulaire inf´erieure stricte et U matrice triangulaire sup´erieure stricte.
1/ On consid`ere tout d’abord la m´ethode de relaxation d´efinie par l’algorithme a(0) = a0
M a(k+1) = N a(k)+b, ∀k ∈N, o`u M et N sont d´efinies par
M = D
ω +L et N = 1−ω
ω D−U.
Ecrire la fonction scilab´ [a,niter] = Relax(A,b,a0,tol,Nmax,omega) qui renvoie la solution approch´ee a du syst`eme Aa = b obtenue par la m´ethode de relaxation ainsi queniter le nombre d’it´erations n´ecessaires pour l’arrˆet de l’algorithme. Les arguments d’entr´ee de la fonction sont, en plus deA etb :
– a0 le vecteur d’initialisation ;
– tol la tol´erance pour le crit`ere d’arrˆet : si, `a l’it´eration k, kAa(k)−bk ≤tol, alors l’algorithme s’arrˆete ;
– Nmax le nombre maximum d’it´erations autoris´e ; – omega le param`etre de relaxation de la m´ethode.
A chaque it´` erationk, pour d´eterminera(k+1)en fonction dea(k), on utilisera la commande
\.
2/ On veut connaˆıtre l’´evolution de niter en fonction de ω. ´Ecrire un programme scilab qui trace le nombre d’it´erations niter pour ω variant sur l’intervalle [0,1; 1,9] avec un pas de 0,05.
3/ On consid`ere maintenant la m´ethode de relaxation sym´etris´ee qui repose sur l’algorithme suivant constitu´e de deux ´etapes :
M1a(k+1/2) = N1a(k)+b M2a(k+1) = N2a(k+1/2)+b
1
avec
M1 = D
ω +L et N1 = 1−ω
ω D−U M2 = D
ω +U et N2 = 1−ω
ω D−L.
Ecrire la fonction scilab´ [a,niter] = Relax_Sym(A,b,a0,tol,Nmax,omega)associ´ee `a cette m´ethode (avec les mˆemes notations qu’`a la question 1/).
Probl`eme II. Pour tout v ∈ Rn \ {0}, on d´efinit la matrice de Householder H(v) ∈ Rn×n par :
H(v) = In− 2v vt kvk2. Dans cet exercice, k · k d´esigne la norme euclidienne usuelle.
1/ Ecrire une fonction scilab´ [H] = Householder(v)qui, `av associe la matrice de House- holder H(v). On fera un test pour que la fonction renvoie un message d’erreur si v est le vecteur nul.
2/ Les matrices de Householder ont la propri´et´e suivante : pour tout a, b ∈ Rn non co- lin´eaires, sikbk= 1, alors
H(a− kakb)a=kakb.
Soient A∈Rn×n et e= [1,0, . . . ,0]t∈Rn. Soit a1 la premi`ere colonne de A. On d´efinit V1 =
In si a1 ete sont colin´eaires ; H(a1− ka1ke) si a1 ete ne sont pas colin´eaires.
Montrer que la matrice A1 =V1A est de la forme
A1 =
× × · · · × 0 × · · · × ... ... ... ... 0 × · · · ×
.
Ecrire une fonction scilab´ [A1] = Trigon1(A) qui `aA associe A1.
3/ Question bonus : Expliquer comment cette m´ethode peut permettre de transformer A en une matrice triangulaire sup´erieure.
2
Paris 6 –Licence de Math´ematique – LM380 – Analyse Hilbertienne et Num´erique Solution de l’examen de TP de mai 2008
Probl`eme I
1/ function [a,niter]=Relax(A,b,a0,tol,Nmax,omega) D=diag(diag(A));
L=tril(A)-D;
U=triu(A)-D;
M=D/omega+L;
N=(1-omega)/omega*D-U;
a=a0;
niter=0;
eps=tol+1;
while(eps>=tol & niter<Nmax) a=M\(N*a+b);
eps=norm(A*a-b);
niter=niter+1;
end
endfunction
2/ Omega=(0.1:0.05:1.9)’;
nRelax=[];
for omega=Omega’
[a,niter]=Relax(A,b,a0,tol,Nmax,omega);
nRelax=[nRelax;niter];
end;
plot2d(Omega,nRelax);
3/ function [a,niter]=Relax_Sym(A,b,a0,tol,Nmax,omega) D=diag(diag(A));
L=tril(A)-D;
U=triu(A)-D;
M1=D/omega+L;
N1=(1-omega)/omega*D-U;
M2=D/omega+U;
N2=(1-omega)/omega*D-L;
a=a0;
niter=0;
eps=tol+1;
while(eps>=tol & niter<Nmax) a=M1\(N1*a+b);
a=M2\(N2*a+b);
eps=norm(A*a-b);
niter=niter+1;
end
endfunction Probl`eme II
3
1/ function [H] = Householder(v) n=size(v,1)
norm2=norm(v)^2 prec=1e-8
if (norm(v)>prec) then H=eye(n,n)-2*v*v.’/norm2 else
error(’v est le vecteur nul’) end
endfunction
2/ Si a1est colin´eaire `a e,Aa d´ej`a la forme voulue etA1=V1A=A; sinon, A1= [V1a1, . . . , V1an]
o`uai est la i`eme colonne deAet donc la premi`ere colonne deA1 est V1a1=H(a1− ka1ke)a1=ka1ke, ce qui permet bien d’obtenir une matrice de la forme
A1=
× × · · · × 0 × · · · × ... ... ... ... 0 × · · · ×
.
function [A1] = Trigon1(A) n=size(A,1)
a1=A(:,1) disp(a1) norme=norm(a1) e=zeros(n,1) e(1)=1 prec=1e-8
if (norm(a1(2:n))>prec) then v=a1-norme*e
V1=Householder(v) A1=V1*A
else A1=A end
endfunction
3/ Supposons qu’`a l’´etapei, on ait
Ai=
Ti Bi
Oi Ci
.
avec Ti ∈ Ri×i matrice triangulaire sup´erieure, Oi ∈ R(n−i)×i la matrice nulle, Bi ∈ Ri×(n−i) et Ci ∈ R(n−i)×(n−i). On consid`ere la premi`ere colonne c1 de Ci. Si c1 est colin´eaire au vecteur e = [1,0, . . . ,0]∈Rn−i, on d´efinitVi+1=In, sinon, on prend
Vi+1=
Ii Oit Oi H(vi)
.
avecvi =c1− kc1ke. On d´efinit alorsAi+1=Vi+1Ai et on a :
Ai+1=
Ti Bi
Oi H(vi)Ci
ce qui permet bien de passer `a l’´etapei+ 1.
4