CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

LinearAlgebra/contractionResidual.mo

Download original .moGitHub source

Documentation: LinearAlgebra.contractionResidual

within LinearAlgebra;
function contractionResidual
  "Matrix residual M_dot + A' M + M A + 2 rate M for contraction certificates"
  input Real A[:, :];
  input Real M[size(A, 1), size(A, 1)];
  input Real MDerivative[size(A, 1), size(A, 1)] =
    zeros(size(A, 1), size(A, 1));
  input Real rate(min=0.0) = 0.0 "Requested exponential contraction rate";
  output Real residual[size(A, 1), size(A, 1)];
algorithm
  assert(size(A, 1) == size(A, 2),
    "The contraction Jacobian must be square");
  residual := LinearAlgebra.symmetrize(
    MDerivative + transpose(A) * M + M * A + 2.0 * rate * M);
end contractionResidual;