control.place_varga

control.place_varga(A, B, p, dtime=False, alpha=None)[source]

Place closed loop eigenvalues using Varga method.

K = place_varga(A, B, p, dtime=False, alpha=None)

Parameters
A2D array_like

Dynamics matrix.

B2D array_like

Input matrix.

p1D array_like

Desired eigenvalue locations.

dtimebool, optional

False (default) for continuous-time pole placement or True for discrete time.

alphafloat, 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
K2D array

Gain such that A - B K has eigenvalues given in p.

See also

place, place_acker

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])