suivant: Réduction de Householder
monter: Tridiagonalisation des matrices symétriques
précédent: Matrice de Householder associée
Table des matières
Index
Soit H(v) la matrice de Householder associée à v.
Etant donné un vecteur a non nul, il existe deux vecteurs v tels que le
vecteur
b = H(v)*tran(a) a ses n - 1 dernières composantes nulles (H(v) étant
la matrice de Householder associé à v).
Plus précisement, si
e0 = [1, 0,..0], les vecteurs v sont :
v1 = a + norm(a)*e0 et
v2 = a - norm(a)*e0.
Plus généralement, il existe deux vecteurs v tels que le vecteur
b = H(v)*tran(a) a ses composantes à partir de la (l + 1)-ième nulles
.
Plus précisement, si
el = [0,..0, 1, 0,..0] et si
al = [0,..., 0, a[l],.., a[n - 1]], les vecteurs v sont :
v1 = al + norm(al)*el et
v2 = al - norm(al)*el.
On 'ecrit le programme qui étant donné a et l renvoie si a est nul renvoie la matrice identité et si a est non nul renvoie
la matrice de Householder associée à
v = al + eps*norm(al)*el
en choisisant eps égal au signe de al si al est réelle et
eps = 1 sinon.
//renvoie une matrice hh= H tel que b:=H*tran(a)
//a ses n-l-1 dernieres comp=0
//ou encore b[l+1]=...b[n-1]=0
make_house(a,l):={
local n,na,el,v;
n:=size(a);
for (k:=0;k<l;k++) a[k]:=0;
na:=normal(norm(a)^2);
na:=sqrt(na);
if (na==0) return idn(n);
el:=makelist(0,1,n);
el[l]:=1;
if (im(a[l])==0 and a[l]<0) v:=normal(a-na*el);
else v:=normal(a+na*el);
return householder(v);
};
suivant: Réduction de Householder
monter: Tridiagonalisation des matrices symétriques
précédent: Matrice de Householder associée
Table des matières
Index
Documentation de giac écrite par Renée De Graeve