Matrices.eigenValueMatrix(eigenvalues);
The function call returns a block diagonal matrix J
from the two-column matrix eigenvalues
(computed by function
Matrices.eigenValues).
Matrix eigenvalues
must have the real part of the
eigenvalues in the first column and the imaginary part in the
second column. If an eigenvalue i has a vanishing imaginary
part, then J[i,i] = eigenvalues[i,1], i.e., the diagonal
element of J is the real eigenvalue.
Otherwise, eigenvalue i and conjugate complex eigenvalue i+1
are used to construct a 2 by 2 diagonal block of J:
J[i , i] := eigenvalues[i,1]; J[i , i+1] := eigenvalues[i,2]; J[i+1, i] := eigenvalues[i+1,2]; J[i+1, i+1] := eigenvalues[i+1,1];
function eigenValueMatrix extends Modelica.Icons.Function; input Real eigenValues[:, 2] "Eigen values from function eigenValues(..) (Re: first column, Im: second column)"; output Real J[size(eigenValues, 1), size(eigenValues, 1)] "Real valued block diagonal matrix with eigen values (Re: 1x1 block, Im: 2x2 block)"; end eigenValueMatrix;