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)

See also

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