This function solves the equation
X*A = B
where matrix A with symmetric positive definite matrix. The calculation is rather efficient since symmetrie and decomposition of positive definite matrices is exploited.
Due to symmetry, the matrix A is uniquely
defined by a triangle, i.e. the upper or the lower triangular
matrix. It is assumed, that the input to
describe A is either a Cholesky factor
or part of matrix A itself. This is defined
by the user with the boolean inputs isTriangular and
upper which is true when A is
already Cholesky factor and when A is upper
triangular, respectively.
Considering the Cholesky decomposition
T
A = L*L
with lower triangular matrix L the equation above could be rewritten as
T
X*L*L = B
which is solved with BLAS function dtrmm applied to a upper triangular matrix and subsequently to a lower triangular matrix.
In contrast to function solveSymRight this function is implemented in C-code
function solveSymRight_C extends Modelica.Icons.Function; input Real A[:, size(A, 1)] "Matrix A of X*A = B"; input Real B[:, :] "Matrix B of X*op(A) = B"; input Boolean isTriangular = false "True if the A is already lower triangular"; input Boolean upper = false "True if A is upper triAngular"; output Real X[size(B, 1), size(B, 2)] = B "Matrix X such that X*A = B"; output Integer info; end solveSymRight_C;
| Date | Author | Comment |
|---|---|---|
| 2010-05-31 | Marcus Baur, DLR-RM | Realization |