(eigenvectors, eigenvalues) = StateSpace.Analysis.eigenVectors(ss, onlyEigenvectors)
Calculate the eigenvectors and optionally (onlyEigenvectors=false) the eigenvalues of a state space system. The output eigenvectors is a matrix with the same dimension as matrix ss.A. Just like in Modelica.Math.Matrices.eigenValues, if the i-th eigenvalue has an imaginary part, then eigenvectors[:,i] is the real and eigenvectors[:,i+1] is the imaginary part of the eigenvector of the i-th eigenvalue.
The eigenvalues are returned as a complex vector eigenvalues.
Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace( A=[-1,1;-1,-1], B=[1;1], C=[1,1], D=[0]); Real eigenvectors[2,2]; Complex eigenvalues[2]; algorithm (eigenvectors, eigenvalues) = Modelica_LinearSystems2.StateSpace.Analysis.eigenVectors(ss, true); // eigenvectors = [0.707, 0; 0, 0.707] // eigenvalues = {-1 + 1*j, -1 - 1*j} |0.707 | | 0.707 | i.e. v1 = | |, v2 = | | |0.707i| |-0.707i|
encapsulated function eigenVectors import Modelica; import Modelica_LinearSystems2.StateSpace; import Modelica.Math.Matrices.LAPACK; import Complex; input StateSpace ss "State space system"; input Boolean onlyEigenvectors = true "= true, if only eigenvectors needed"; output Real eigvec[size(ss.A, 1), size(ss.A, 2)] "Eigenvectors of the system"; output Complex eigval[size(ss.A, 1)] = fill(Complex(0), size(ss.A, 1)) "Eigenvalues of the system"; end eigenVectors;