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

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

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

## Version History

4.0 |
Introduced |

## Resources and References

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.