| Operators |
orthogonal_decompose_matrix — Perform an orthogonal decomposition of a matrix.
orthogonal_decompose_matrix( : : MatrixID, DecompositionType, OutputMatricesType, ComputeOrthogonal : MatrixOrthogonalID, MatrixTriangularID)
The operator orthogonal_decompose_matrix decomposes the Matrix defined by the matrix handle MatrixID. The results are stored in the two generated matrices MatrixOrthogonal and MatrixTriangular. The operator returns the matrix handles MatrixOrthogonalID and MatrixTriangularID of these two matrices. Access to the elements of the matrices is possible e.g. with the operator get_full_matrix.
For OutputMatricesType = 'full' all results of the decomposition are stored in the matrices MatrixOrthogonal and MatrixTriangular. For OutputMatricesType = 'reduced' only a part of result elements of the matrices MatrixOrthogonal and MatrixTriangular are stored. Therefore the sizes of these matrices are smaller than for OutputMatricesType = 'full'.
For the parameter ComputeOrthogonal = 'true' both output matrices are computed. For the ComputeOrthogonal = 'false' only the matrix MatrixTriangular is computed. Thus, the runtime of the operation takes fewer time.
The type of the Matrix can be selected via the parameter DecompositionType. For DecompositionType = 'qr' a QR decomposition (Quadratic/Right) or for DecompositionType = 'ql' a QL decomposition (Quadratic/Left) is computed. The decomposition is written as
Matrix = MatrixOrthogonal * MatrixTriangular.
Example for DecompositionType = 'qr' and OutputMatricesType = 'full':
/ 6.0 -3.0 4.0 \
| 5.0 5.0 -2.0 |
Matrix = | -3.0 12.0 5.0 | ->
| 3.0 4.0 7.0 |
\ 7.0 5.0 3.0 /
/ -0.5303 0.2613 -0.4277 -0.5566 -0.3972 \
| -0.4419 -0.2920 -0.6383 0.1727 -0.5312 |
MatrixOrthogonal = | 0.2652 -0.8443 -0.2059 -0.3961 -0.1326 |
| -0.2652 -0.2432 -0.6008 0.7000 -0.1400 |
\ -0.6187 -0.2729 0.0799 -0.1160 0.7231 /
/ -11.3137 -1.5910 -3.6239 \
| 0 -14.7129 -5.1135 |
MatrixTriangular = | 0 0 -7.9824 |
| 0 0 0 |
\ 0 0 0 /
Example for DecompositionType = 'qr' and OutputMatricesType = 'reduced':
/ 6.0 -3.0 4.0 \
| 5.0 5.0 -2.0 |
Matrix = | -3.0 12.0 5.0 | ->
| 3.0 4.0 7.0 |
\ 7.0 5.0 3.0 /
/ -0.5303 0.2613 -0.4277 \
| -0.4419 -0.2920 -0.6383 |
MatrixOrthogonal = | 0.2652 -0.8443 -0.2059 |
| -0.2652 -0.2432 -0.6008 |
\ -0.6187 -0.2729 0.0799 /
/ -11.3137 -1.5910 -3.6239 \
MatrixTriangular = | 0 -14.7129 -5.1135 |
\ 0 0 -7.9824 /
Example for DecompositionType = 'ql' and OutputMatricesType = 'full':
/ 6.0 -3.0 4.0 \
| 5.0 5.0 -2.0 |
Matrix = | -3.0 12.0 5.0 | ->
| 3.0 4.0 7.0 |
\ 7.0 5.0 3.0 /
/ 0.6806 0.0657 0.3659 -0.4932 -0.3941 \
| 0.1161 0.5464 0.6091 0.5274 0.1971 |
MatrixOrthogonal = | 0.4093 -0.0832 -0.4046 0.6474 -0.4927 |
| -0.5362 0.4713 0.0072 -0.1208 -0.6897 |
\ -0.2611 -0.6842 0.5757 0.2119 -0.2956 /
/ 0 0 0 \
| 0 0 0 |
MatrixTriangular = | 10.5059 0 0 |
| -1.1429 12.4620 0 |
\ -4.0399 -7.9812 -10.1489 /
Example for DecompositionType = 'ql' and OutputMatricesType = 'reduced':
/ 6.0 -3.0 4.0 \
| 5.0 5.0 -2.0 |
Matrix = | -3.0 12.0 5.0 | ->
| 3.0 4.0 7.0 |
\ 7.0 5.0 3.0 /
/ 0.3659 -0.4932 -0.3941 \
| 0.6091 0.5274 0.1971 |
MatrixOrthogonal = | -0.4046 0.6474 -0.4927 |
| 0.0072 -0.1208 -0.6897 |
\ 0.5757 0.2119 -0.2956 /
/ 10.5059 0 0 \
MatrixTriangular = | -1.1429 12.4620 0 |
\ -4.0399 -7.9812 -10.1489 /
For DecompositionType = 'rq' a RQ decomposition (Right/Quadratic) or for DecompositionType = 'lq' a LQ decomposition (Left/Quadratic) is computed. The decomposition is written as
Matrix = MatrixTriangular * MatrixOrthogonal.
Example for DecompositionType = 'rq' and OutputMatricesType = 'full':
/ 6.0 5.0 -3.0 3.0 7.0 \
Matrix = | -3.0 5.0 12.0 4.0 5.0 | ->
\ 4.0 -2.0 5.0 7.0 3.0 /
/ 0.6806 0.1161 0.4093 -0.5362 -0.2611 \
| 0.0657 0.5464 -0.0832 0.4713 -0.6842 |
MatrixOrthogonal = | 0.3659 0.6091 -0.4046 0.0072 0.5757 |
| -0.4932 0.5274 0.6474 -0.1208 0.2119 |
\ -0.3941 0.1971 -0.4927 -0.6897 -0.2956 /
/ 0 0 10.5059 -1.1429 -4.0399 \
MatrixTriangular = | 0 0 0 12.4620 -7.9812 |
\ 0 0 0 0 -10.1489 /
Example for DecompositionType = 'rq' and OutputMatricesType = 'reduced':
/ 6.0 5.0 -3.0 3.0 7.0 \
Matrix = | -3.0 5.0 12.0 4.0 5.0 | ->
\ 4.0 -2.0 5.0 7.0 3.0 /
/ 0.3659 0.6091 -0.4046 0.0072 0.5757 \
MatrixOrthogonal = | -0.4932 0.5274 0.6474 -0.1208 0.2119 |
\ -0.3941 0.1971 -0.4927 -0.6897 -0.2956 /
/ 10.5059 -1.1429 -4.0399 \
MatrixTriangular = | 0 12.4620 -7.9812 |
\ 0 0 -10.1489 /
Example for DecompositionType = 'lq' and OutputMatricesType = 'full':
/ 6.0 5.0 -3.0 3.0 7.0 \
Matrix = | -3.0 5.0 12.0 4.0 5.0 | ->
\ 4.0 -2.0 5.0 7.0 3.0 /
/ -0.5303 -0.4419 0.2652 -0.2652 -0.6187 \
| 0.2613 -0.2920 -0.8443 -0.2432 -0.2729 |
MatrixOrthogonal = | -0.4277 0.6383 -0.2059 -0.6008 0.0799 |
| -0.5566 0.1727 -0.3961 0.7000 -0.1160 |
\ -0.3972 -0.5312 -0.1326 -0.1400 0.7231 /
/ -11.3137 0 0 0 0 \
MatrixTriangular = | -1.5910 -14.7129 0 0 0 |
\ -3.6239 -5.1135 -7.9824 0 0 /
Example for DecompositionType = 'lq' and OutputMatricesType = 'reduced':
/ 6.0 5.0 -3.0 3.0 7.0 \
Matrix = | -3.0 5.0 12.0 4.0 5.0 | ->
\ 4.0 -2.0 5.0 7.0 3.0 /
/ -0.5303 -0.4419 0.2652 -0.2652 -0.6187 \
MatrixOrthogonal = | 0.2613 -0.2920 -0.8443 -0.2432 -0.2729 |
\ -0.4277 0.6383 -0.2059 -0.6008 0.0799 /
/ -11.3137 0 0 \
MatrixTriangular = | -1.5910 -14.7129 0 |
\ -3.6239 -5.1135 -7.9824 /
It should be noted that in the examples there are differences in the meaning of the numbers of the output matrices: The results of the elements are per definition a certain value if the number of this value is shown as an integer number, e.g., 0 or 1. If the number is shown as a floating point number, e.g., 0.0 or 1.0, the value is computed.
Matrix handle of the input matrix.
Method of decomposition.
Default value: 'qr'
List of values: 'lq', 'ql', 'qr', 'rq'
Type of output matrices.
Default value: 'full'
List of values: 'full', 'reduced'
Computation of the orthogonal matrix.
Default value: 'true'
List of values: 'false', 'true'
Matrix handle with the orthogonal part of the decomposed input matrix.
Matrix handle with the triangular part of the decomposed input matrix.
If the parameters are valid, the operator orthogonal_decompose_matrix returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
get_full_matrix, get_value_matrix
decompose_matrix, solve_matrix
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.
Foundation
| Operators |