# balreal_direct_py

Find balanced realisation of continuous (`DLTI = False`

) and discrete (`DLTI = True`

)
time of LTI systems using scipy libraries.

The function proceeds to achieve balanced realisation of the state-space system by first solving the Lyapunov equations. They are solved using Barlets-Stewart algorithm for Sylvester equation, which is based on A matrix Schur decomposition.

to obtain the reachability and observability gramians, which are positive definite matrices.

Then, the gramians are decomposed into their Cholesky factors such that:

A singular value decomposition (SVD) of the product of the Cholesky factors is performed

The singular values are then used to build the transformation matrix \(\mathbf{T}\)

The balanced system is therefore of the form:

Warning

This function may be less computationally efficient than the `balreal`

Matlab implementation and does not offer the option to bound the realisation
in frequency and time.

Notes

Lyapunov equations are solved using Barlets-Stewart algorithm for Sylvester equation, which is based on A matrix Schur decomposition.

Notation above is consistent with Gawronski [2].

- param A:
Plant Matrix

- type A:
np.ndarray

- param B:
Input Matrix

- type B:
np.ndarray

- param C:
Output Matrix

- type C:
np.ndarray

- param DLTI:
Discrete time state-space flag

- type DLTI:
bool

- param Schur:
Use Schur decomposition to solve the Lyapunov equations

- type Schur:
bool

- returns:
- Tuple of the form
`(S, T, Tinv)`

containing: Singular values in diagonal matrix (

`S`

)Transformation matrix (

`T`

).Inverse transformation matrix(

`Tinv`

).

- Tuple of the form
- rtype:
tuple of np.ndarrays

References

[1] Anthoulas, A.C.. Approximation of Large Scale Dynamical Systems. Chapter 7. Advances in Design and Control. SIAM. 2005.

[2] Gawronski, W.. Dynamics and control of structures. New York: Springer. 1998