function
LinearAlgebra.contractionResidual
Matrix residual M_dot + A' M + M A + 2 rate M for contraction certificates
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| input | A | Real | [:, :] | |
| input | M | Real | [size(A, 1), size(A, 1)] | |
| input | MDerivative | Real | [size(A, 1), size(A, 1)] =
zeros(size(A, 1), size(A, 1)) | |
| input | rate | Real | (min=0.0) = 0.0 | Requested exponential contraction rate |
| output | residual | Real | [size(A, 1), size(A, 1)] |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
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;