##
LUMPROVE

The
LUMPROVE
function uses LU decomposition to
iteratively improve an approximate solution *
X*
of a set of *
n*
linear equations in *
n*
unknowns *
Ax = b*
. The result is a vector, whose type and length are identical to *
X*
, containing the improved solution.

LUMPROVE is based on the routine ```
mprove
```

described in section 2.5 of *
Numerical Recipes in C: The Art of Scientific Computing*
(Second Edition), published by Cambridge University Press, and is used by permission.

###
Calling Sequence

Result = LUMPROVE(*
A, Alud, Index, B, X*
)

###
Arguments

####
A

The *
n*
by *
n*
coefficient array of the linear system *
Ax = b*
.

####
Alud

The *
n*
by *
n*
LU decomposition of *
A*
created by the LUDC procedure.

####
Index

An input vector, created by the LUDC procedure, containing a record of the row permutations which occurred as a result of partial pivoting.

####
B

An *
n*
-element vector containing the right-hand side of the linear system

*
Ax = b*
.

####
X

An *
n*
-element vector containing the approximate solution of the linear system

*
Ax = b*
.

###
Keywords

####
COLUMN

Set this keyword if the input array *
A*
is in column-major format (composed of column vectors) rather than in row-major format (composed of row vectors).

####
DOUBLE

Set this keyword to force the computation to be done in double-precision arithmetic.

###
Example

Use LUMPROVE to improve an approximate solution X to the linear system Ax = B:

A = [[ 2.0, 1.0, 1.0], $

[ 4.0, -6.0, 0.0], $

[-2.0, 7.0, 2.0]]

alud = A

B = [3.0, -8.0, 10.0]

X = [.89, 1.78, -0.88]

LUDC, alud, INDEX

result = LUMPROVE(A, alud, INDEX, B, X)

PRINT, result

IDL prints:

1.00000 2.00000 -1.00000

This is the exact solution vector.