##
SVSOL

The
SVSOL
function uses "
back-substitution" to solve a set of simultaneous linear equations *
Ax = b*
, given the *
U*
, *
W*
, and *
V*
arrays returned by the SVDC procedure. None of the input arguments are modified, making it possible to call SVSOL multiple times with different right hand vectors, *
B*
.

SVSOL is based on the routine ```
svbksb
```

described in section 2.6 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 = SVSOL(*
U, W, V, B*
)

###
Arguments

####
U

An *
n*
-column, *
m*
-row orthogonal array used in the decomposition of *
A*
. Normally, *
U*
is returned from the SVDC procedure.

####
W

An *
n*
-element vector containing "singular values." Normally, *
W*
is returned from the SVDC procedure. Small values (close to machine floating-point precision) should be set to zero prior to calling SVSOL.

####
V

An *
n*
-column, *
n*
-row orthogonal array used in the decomposition of *
A*
. Normally, *
V*
is returned from the SVDC procedure.

####
B

An *
m*
-element vector containing the right hand side of the linear system *
Ax = b*
.

###
Keywords

####
COLUMN

Set this keyword if the input arrays *
U*
and *
V*
are 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

To solve the linear system *
Ax = b*
using
Singular-value decomposition and back substitution, begin with an array A which serves as the coefficient array:

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

[1.5, 3.3, -0.5, 2.0], $

[3.1, 0.7, 2.2, 0.0], $

[0.0, 0.3, -2.0, 5.3], $

[2.1, 1.0, 4.3, 2.2], $

[0.0, 5.5, 3.8, 0.2]]

B = [0.0, 1.0, 5.3, -2.0, 6.3, 3.8]

SVDC, A, W, U, V

PRINT, SVSOL(U, W, V, B)

IDL prints:

1.00095 0.00881170 0.984176 -0.0100954

This is the correct solution.