crout

Purpose

Computes the Crout decomposition of a square matrix without row pivoting, such that: \(X = LU\).

Format

y = crout(x)
Parameters:

x (NxN matrix) – square nonsingular matrix.

Returns:

y (NxN matrix) – containing the lower (\(L\)) and upper (\(U\)) matrices of the Crout decomposition of x. The main diagonal of y is the main diagonal of the lower matrix L. The upper matrix has an implicit main diagonal of ones. Use lowmat() and upmat1() to extract the \(L\) and \(U\) matrices from y.

Examples

X = { 1 2 -1,
      2 3 -2,
      1 -2 1 };

// Perform crout decomposition
y = crout(x);

// Extract lower triangle of 'y' and assign it to 'L'
L = lowmat(y);

/*
** Extract upper triangle of 'y', fill the diagonal with
** ones and assign it to 'L'
*/
U = upmat1(y);

After the code above:

    1.0  2.0 -1.0       1.0  0.0  0.0       1.0  2.0 -1.0
y = 2.0 -1.0  0.0   L = 2.0 -1.0  0.0   U = 0.0  1.0  0.0
    1.0 -4.0  2.0       1.0 -4.0  2.0       0.0  0.0  1.0

Remarks

Since it does not do row pivoting, it is intended primarily for teaching purposes. See croutp() for a decomposition with pivoting.