control.place_varga
- control.place_varga(A, B, p, dtime=False, alpha=None)[source]
- Parameters
A (2D array_like) – Dynamics matrix
B (2D array_like) – Input matrix
p (1D array_like) – Desired eigenvalue locations
dtime (bool, optional) – False for continuous time pole placement or True for discrete time. The default is dtime=False.
alpha (float, optional) –
If dtime is false then place_varga will leave the eigenvalues with real part less than alpha untouched. If dtime is true then place_varga will leave eigenvalues with modulus less than alpha untouched.
By default (alpha=None), place_varga computes alpha such that all poles will be placed.
- Returns
K – Gain such that A - B K has eigenvalues given in p.
- Return type
2D array (or matrix)
Notes
This function is a wrapper for the slycot function sb01bd, which implements the pole placement algorithm of Varga [1]. In contrast to the algorithm used by place(), the Varga algorithm can place multiple poles at the same location. The placement, however, may not be as robust.
References
- 1
Varga A. “A Schur method for pole assignment.” IEEE Trans. Automatic Control, Vol. AC-26, pp. 517-519, 1981.
Examples
>>> A = [[-1, -1], [0, 1]] >>> B = [[0], [1]] >>> K = ct.place_varga(A, B, [-2, -5])