D.3.2.15 U_D_O
..............
Procedure from library linalg.lib (see linalg_lib).

Usage:
U_D_O(A); constant invertible matrix A

Return:
list Z: Z[1]=P , Z[2]=U , Z[3]=D , Z[4]=O

gives a permutation matrix P,

a normalized lower triangular matrix U ,

a diagonal matrix D, and

a normalized upper triangular matrix O

with P*A=U*D*O

Note:
Z[1]=-1 means that A is not regular (proc uses gaussred)

Example:
LIB "linalg.lib";
ring r = 0,(x),dp;
matrix A[5][5] = 10, 4,  0, -9,  8,
-3, 6, -6, -4,  9,
0, 3, -1, -9, -8,
-4,-2, -6, -10,10,
-9, 5, -1, -6,  5;
list Z = U_D_O(A);              //construct P,U,D,O s.t. P*A=U*D*O
print(Z[1]);                    //P
print(Z[2]);                    //U
print(Z[3]);                    //D
print(Z[4]);                    //O
print(Z[1]*A);                  //P*A
print(Z[2]*Z[3]*Z[4]);          //U*D*O

<font size="-1">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; User manual for <a href="http://www.singular.uni-kl.de/"><i>Singular</i></a> version 2-0-4, October 2002,
generated by <a href="http://www.gnu.org/software/texinfo/"><i>texi2html</i></a>.
</font>

</body>
</html>
