## 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.

### Syntax

Result = SVSOL( U, W, V, B [, /COLUMN] [, /DOUBLE] )

### Return Value

Returns the solution to the linear system using decomposition and back substitution.

### 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.

### Examples

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:

```; Define the array A:
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]]

; Define the right-hand side vector B:
B = [0.0, 1.0, 5.3, -2.0, 6.3, 3.8]

; Decompose A:
SVDC, A, W, U, V

; Compute the solution and print the result:
PRINT, SVSOL(U, W, V, B)
```

IDL prints:

```1.00095   0.00881170     0.984176   -0.0100954
```

This is the correct solution.

Introduced: 4.0