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:
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.
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
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.
See Also
CRAMER, GS_ITER, LU_COMPLEX, CHOLSOL, LUSOL, SVDC, TRISOL