pymor.algorithms.samdp
¶
Module Contents¶
- pymor.algorithms.samdp.samdp(A, E, B, C, nwanted, init_shifts=None, which='NR', tol=1e-10, imagtol=1e-06, conjtol=1e-08, dorqitol=0.0001, rqitol=1e-10, maxrestart=100, krestart=20, rqi_maxiter=10)[source]¶
Compute the dominant pole triplets and residues of the transfer function of an LTI system.
This function uses the subspace accelerated dominant pole (SAMDP) algorithm as described in [RM06] in Algorithm 2 in order to compute dominant pole triplets and residues of the transfer function
\[H(s) = C (s E - A)^{-1} B\]of an LTI system. It is possible to take advantage of prior knowledge about the poles by specifying shift parameters, which are injected after a new pole has been found.
Note
Pairs of complex conjugate eigenvalues are always returned together. Accordingly, the number of returned poles can be equal to
nwanted + 1
.- Parameters:
A – The
Operator
A.E – The
Operator
E orNone
.B – The operator B as a
VectorArray
fromA.source
.C – The operator C as a
VectorArray
fromA.source
.nwanted – The number of dominant poles that should be computed.
init_shifts – A
NumPy array
containing shifts which are injected after a new pole has been found.which –
A string specifying the strategy by which the dominant poles and residues are selected. Possible values are:
'NR'
: select poles with largest norm(residual) / abs(Re(pole))'NS'
: select poles with largest norm(residual) / abs(pole)'NM'
: select poles with largest norm(residual)
tol – Tolerance for the residual of the poles.
imagtol – Relative tolerance for imaginary parts of pairs of complex conjugate eigenvalues.
conjtol – Tolerance for the residual of the complex conjugate of a pole.
dorqitol – If the residual is smaller than dorqitol the two-sided Rayleigh quotient iteration is executed.
rqitol – Tolerance for the residual of a pole in the two-sided Rayleigh quotient iteration.
maxrestart – The maximum number of restarts.
krestart – Maximum dimension of search space before performing a restart.
rqi_maxiter – Maximum number of iterations for the two-sided Rayleigh quotient iteration.
- Returns:
poles – A 1D
NumPy array
containing the computed dominant poles.residues – A 3D
NumPy array
of shape(len(poles), len(C), len(B))
containing the computed residues.rightev – A
VectorArray
containing the right eigenvectors of the computed poles.leftev – A
VectorArray
containing the left eigenvectors of the computed poles.