3.5 Changement de pivot
89
Programme 8 - modgrams : Proc´ ed´ e d’orthogonalisation de Gram-Schmidt
modifi´ e
function [Q,R]=modgrams(A)
% MODGRAMS Factorisation QR d’une matrice A.
% [Q,R]=MODGRAMS(A) renvoie une matrice trap´ ezo¨ ıdale sup´ erieure R
% et une matrice orthogonale Q telle que Q*R=A.
[m,n]=size(A);
Q=zeros(m,n); Q(1:m,1) = A(1:m,1); R=zeros(n); R(1,1)=1;
for k = 1:n
R(k,k) = norm(A(1:m,k));
Q(1:m,k) = A(1:m,k)/R(k,k);
j=[k+1:n];
R(k,j) = Q (1:m,k)’*A(1:m,j);
A(1:m,j) = A (1:m,j)-Q(1:m,k)*R(k,j);
end
return
Exemple 3.2 Consid´ erons la matrice de Hilbert H4 d’ordre 4 (voir (3.29)). La
matrice ˜
Q, construite par le proc´ ed´ e de Gram-Schmidt classique, est orthogonale `
a
10
−10 pr` es,
I − ˜
Q
T ˜
Q = 10
−10
⎡
⎢
⎢
⎣
0.0000 −0.0000
0.0001 −0.0041
−0.0000
0
0.0004 −0.0099
0.0001
0.0004
0 −0.4785
−0.0041 −0.0099 −0.4785
0
⎤
⎥
⎥
⎦
et I − ˜
Q
T ˜
Q∞ = 4.9247 · 10
−11 . En utilisant le proc´ ed´ e de Gram-Schmidt modifi´ e,
on obtient
I − ˜
Q
T ˜
Q = 10
−12
⎡
⎢
⎢
⎣
0.0001 −0.0005
0.0069 −0.2853
−0.0005
0 −0.0023
0.0213
0.0069 −0.0023
0.0002 −0.0103
−0.2853
0.0213 −0.0103
0
⎤
⎥
⎥
⎦
et cette fois I − ˜
Q
T ˜
Q∞ = 3.1686 · 10
−13 .
Un meilleur r´ esultat peut ˆ etre obtenu en utilisant la fonction qr de MATLAB
au lieu du Programme 8. On peut utiliser cette fonction aussi bien pour la factorisation (3.43) que pour sa version r´ eduite (3.44).
•
3.5 Changement de pivot
Nous avons d´ ej` a signal´ e que la m´ ethode de Gauss ´ echoue si un pivot s’annule.
Dans ce cas, on doit recourir ` a une technique dite de changement de pivot qui
consiste ` a ´ echanger des lignes (ou des colonnes) du syst` eme de mani` ere ` a ce
qu’aucun pivot ne soit nul.
89
Programme 8 - modgrams : Proc´ ed´ e d’orthogonalisation de Gram-Schmidt
modifi´ e
function [Q,R]=modgrams(A)
% MODGRAMS Factorisation QR d’une matrice A.
% [Q,R]=MODGRAMS(A) renvoie une matrice trap´ ezo¨ ıdale sup´ erieure R
% et une matrice orthogonale Q telle que Q*R=A.
[m,n]=size(A);
Q=zeros(m,n); Q(1:m,1) = A(1:m,1); R=zeros(n); R(1,1)=1;
for k = 1:n
R(k,k) = norm(A(1:m,k));
Q(1:m,k) = A(1:m,k)/R(k,k);
j=[k+1:n];
R(k,j) = Q (1:m,k)’*A(1:m,j);
A(1:m,j) = A (1:m,j)-Q(1:m,k)*R(k,j);
end
return
Exemple 3.2 Consid´ erons la matrice de Hilbert H4 d’ordre 4 (voir (3.29)). La
matrice ˜
Q, construite par le proc´ ed´ e de Gram-Schmidt classique, est orthogonale `
a
10
−10 pr` es,
I − ˜
Q
T ˜
Q = 10
−10
⎡
⎢
⎢
⎣
0.0000 −0.0000
0.0001 −0.0041
−0.0000
0
0.0004 −0.0099
0.0001
0.0004
0 −0.4785
−0.0041 −0.0099 −0.4785
0
⎤
⎥
⎥
⎦
et I − ˜
Q
T ˜
Q∞ = 4.9247 · 10
−11 . En utilisant le proc´ ed´ e de Gram-Schmidt modifi´ e,
on obtient
I − ˜
Q
T ˜
Q = 10
−12
⎡
⎢
⎢
⎣
0.0001 −0.0005
0.0069 −0.2853
−0.0005
0 −0.0023
0.0213
0.0069 −0.0023
0.0002 −0.0103
−0.2853
0.0213 −0.0103
0
⎤
⎥
⎥
⎦
et cette fois I − ˜
Q
T ˜
Q∞ = 3.1686 · 10
−13 .
Un meilleur r´ esultat peut ˆ etre obtenu en utilisant la fonction qr de MATLAB
au lieu du Programme 8. On peut utiliser cette fonction aussi bien pour la factorisation (3.43) que pour sa version r´ eduite (3.44).
•
3.5 Changement de pivot
Nous avons d´ ej` a signal´ e que la m´ ethode de Gauss ´ echoue si un pivot s’annule.
Dans ce cas, on doit recourir ` a une technique dite de changement de pivot qui
consiste ` a ´ echanger des lignes (ou des colonnes) du syst` eme de mani` ere ` a ce
qu’aucun pivot ne soit nul.
