## 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], \$ ; Create coefficient array A.

[ 4.0, -6.0,  0.0], \$

[-2.0,  7.0,  2.0]]

alud = A ; Create a duplicate of A.

B = [3.0, -8.0, 10.0] ; Define the right-hand side vector B.

X = [.89, 1.78, -0.88] ; Begin with an estimated solution X.

LUDC, alud, INDEX ; Decompose the duplicate of A.

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

; Compute an improved solution.

PRINT, result ; Print it.

IDL prints:

1.00000 2.00000 -1.00000

This is the exact solution vector.