control.bdschur
- control.bdschur(a, condmax=None, sort=None)[source]
Block-diagonal Schur decomposition.
- Parameters
- a(M, M) array_like
Real matrix to decompose.
- condmaxNone or float, optional
If None (default), use 1/sqrt(eps), which is approximately 1e8.
- sort{None, ‘continuous’, ‘discrete’}
Block sorting; see below.
- Returns
- amodal(M, M) real ndarray
Block-diagonal Schur decomposition of
a
.- tmodal(M, M) real ndarray
Similarity transform relating
a
andamodal
.- blksizes(N,) int ndarray
Array of Schur block sizes.
Notes
If
sort
is None, the blocks are not sorted.If
sort
is ‘continuous’, the blocks are sorted according to associated eigenvalues. The ordering is first by real part of eigenvalue, in descending order, then by absolute value of imaginary part of eigenvalue, also in decreasing order.If
sort
is ‘discrete’, the blocks are sorted as for ‘continuous’, but applied to log of eigenvalues (i.e., continuous-equivalent eigenvalues).Examples
>>> Gs = ct.tf2ss([1], [1, 3, 2]) >>> amodal, tmodal, blksizes = ct.bdschur(Gs.A) >>> amodal array([[-2., 0.], [ 0., -1.]])