normalize_matrix¶
wield.control.ss_bare.normalize_matrix
TODO: need ab09bx from slicot supporting routines, as it supplies the T and Ti matrices AB09HX would also work
Functions
|
Block-diagonal Schur decomposition |
|
|
|
Computes a solution (X) to the Sylvester equation \(AX + XB = Q\). |
Details
- bdschur(a, condmax=None, sort=None)[source][github]¶
Block-diagonal Schur decomposition
- Parameters:
a ((M, M) array_like) – Real matrix to decompose
condmax (None 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 and amodal
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.]])
- solve_sylvester_preschur(a, b, q)[source][github]¶
Computes a solution (X) to the Sylvester equation \(AX + XB = Q\).
This assumes that a and b have already been put in Schur form.
- Parameters:
a ((M, M) array_like) – Leading matrix of the Sylvester equation
b ((N, N) array_like) – Trailing matrix of the Sylvester equation
q ((M, N) array_like) – Right-hand side
- Returns:
x – The solution to the Sylvester equation.
- Return type:
(M, N) ndarray
- Raises:
LinAlgError – If solution was not found
Notes
Computes a solution to the Sylvester matrix equation via the Bartels- Stewart algorithm. The A and B matrices first undergo Schur decompositions. The resulting matrices are used to construct an alternative Sylvester equation (
RY + YS^T = F) where the R and S matrices are in quasi-triangular form (or, when R, S or F are complex, triangular form). The simplified equation is then solved using*TRSYLfrom LAPACK directly.Added in version 0.11.0.