.Modelica_LinearSystems2.Math.Matrices.Internal.solveSymRight

Information

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.

Interface

function solveSymRight
  extends Modelica.Icons.Function;
  import MatricesMSL = Modelica.Math.Matrices;
  input Real A[:, size(A, 1)] "Matrix A of X*A = B";
  input Real B[:, :] "Matrix B of X*op(A) = B";
  input Boolean isCholesky = false "True if the A is already lower Cholesky factor";
  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";
end solveSymRight;

Revisions

Date Author Comment
2010-05-31 Marcus Baur, DLR-RM Realization

Generated at 2024-11-23T19:25:52Z by OpenModelicaOpenModelica 1.24.2 using GenerateDoc.mos