[back] [prev] [next] [index] [root]

 


MatSymDiag

missing shortdoc

Syntax:

L := MatSymDiag (A);

list
  L  
matrix
  A  

Description:

Let A be a symmetric matrix over Z, Q or R. The MatSymDiag function computes \Delta, T and \lambda such that \Delta = \lambdaT^t AT is a diagonal matrix. The diagonal entries of \Delta are squarefree integers if the coefficient ring of A is Z or Q. When the coefficient ring of A equals R each diagonal entry of \Delta is \pm 1 or 0.


Example:


kash> A := Mat(Z,[[2,3,4],[3,1,4],[4,4,0]]);
[2 3 4]
[3 1 4]
[4 4 0]
kash> L := MatSymDiag(A);;
kash> Delta := L[1];
[ 7  0  0]
[ 0 -1  0]
[ 0  0 -6]
kash> lambda := L[2];
14/1
kash> T := L[3];
[  1/2 -3/14  -2/7]
[    0   1/7  -1/7]
[    0     0   1/4]
kash> Delta;
[ 7  0  0]
[ 0 -1  0]
[ 0  0 -6]
kash> lambda * MatTrans(T) * A * T;
> [ 7  0  0]
[ 0 -1  0]
[ 0  0 -6]


<- back[back] [prev] [next] [index] [root]