Operators

# svd_matrix (Operator)

## Name

svd_matrix — Compute the singular value decomposition of a matrix.

## Signature

svd_matrix( : : MatrixID, SVDType, ComputeSingularVectors : MatrixUID, MatrixSID, MatrixVID)

## Description

The operator svd_matrix computes a full or reduced singular value decomposition (SVD) of the Matrix defined by the matrix handle MatrixID. The operator returns the matrix handle MatrixSID of the matrix MatrixS with singular values in descending order. Optionally, the matrices MatrixU with the left and MatrixV with the right singular vectors are computed and the matrix handles MatrixUID and MatrixVID are returned. Access to the elements of the matrices is possible e.g. with the operator get_full_matrix. The SVD is written

For SVDType = 'full', a full SVD is computed.

Example:

For SVDType = 'reduced', a reduced SVD is computed.

Example:

For ComputeSingularVectors = 'left', the matrix MatrixU with the left singular vectors is computed. For ComputeSingularVectors = 'right', the matrix MatrixV with the right singular vectors is computed. For ComputeSingularVectors = 'both', the matrices MatrixU and MatrixV with the left and right singular vectors are computed.

For ComputeSingularVectors = 'none', no matrices with the singular vectors are computed. The matrix MatrixS is a matrix with n rows and one column, where the number n = min(number of rows of the input Matrix, number of columns of the input Matrix).

Example:

It should be noted that in the examples there are differences in the meaning of the values of the output matrices: If a value is shown as an integer number, e.g., 0 or 1, the value of this element is per definition this certain value. If the number is shown as a floating point number, e.g., 0.0 or 1.0, the value is computed by the operator.

## Execution Information

• Multithreading type: reentrant (runs in parallel with non-exclusive operators).
• Processed without parallelization.

## Parameters

MatrixID (input_control)  matrix (integer)

Matrix handle of the input matrix.

SVDType (input_control)  string (string)

Type of computation.

Default value: 'full'

List of values: 'full', 'reduced'

ComputeSingularVectors (input_control)  string (string)

Computation of singular values.

Default value: 'both'

List of values: 'both', 'left', 'none', 'right'

MatrixUID (output_control)  matrix (integer)

Matrix handle with the left singular vectors.

MatrixSID (output_control)  matrix (integer)

Matrix handle with singular values.

MatrixVID (output_control)  matrix (integer)

Matrix handle with the right singular vectors.

## Result

If the parameters are valid, the operator svd_matrix returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.

## References

David Poole: “Linear Algebra: A Modern Introduction”; Thomson; Belmont; 2006.
Gene H. Golub, Charles F. van Loan: “Matrix Computations”; The Johns Hopkins University Press; Baltimore and London; 1996.

## Module

Foundation

 Operators