Diagonalizzazione forte di una matrice a valori interi
L'algoritmo DiagIntForte determina la matrice in forma diagonale forte equivalente alla matrice ad elementi interi A.
INPUT: la matrice A.
OUTPUT: la matrice fortemente diagonale equivalente a A.
DiagIntForte[A_]:=Block[{Mat=A,k,L},
m=Length[A];n=Length[A[[1]]];mi=Min[m,n];
While[!DiagIntForteTest[Mat],
Mat=DiagInt[Mat];
L=Table[Mat[[i,i]],{i,1,mi}];
If[!MultIntTest[L],
k = F[L];
Mat[[k-1]]=Mat[[k-1]]+Mat[[k]],
k=G[L];
If[k!=0 && k<n,
Mat[[All,k+1]]=Mat[[All,k+1]]-Mat[[All,k]],
If[k!=0 && k<m,
Mat[[k+1]]=Mat[[k+1]]-Mat[[k]] ]]]];
Mat]
Esempio
Y={{3,0,0,5,0},{0,6,0,1,0},{0,0,12,0,-1},{0,2,0,13,0}}
{{3,0,0,5,0},{0,6,0,1,0},{0,0,12,0,-1},{0,2,0,13,0}}
DiagIntForte[Y]
{{1,0,0,0,0},{0,1,0,0,0},{0,0,1,0,0},{0,0,0,228,0}}
Torna all'elenco dei capitoli
Non ci sono commenti in questa pagina. [Scrivi commento]