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 |