scipy.linalg.

companion#

scipy.linalg.companion(a)[source]#

Create a companion matrix.

Create the companion matrix [1] associated with the polynomial whose coefficients are given in a.

Parameters:
a(…, N) array_like

1-D array of polynomial coefficients. The length of a must be at least two, and a[0] must not be zero. M-dimensional arrays are treated as a batch: each slice along the last axis is a 1-D array of polynomial coefficients.

Returns:
c(…, N-1, N-1) ndarray

For 1-D input, the first row of c is -a[1:]/a[0], and the first sub-diagonal is all ones. The data-type of the array is the same as the data-type of 1.0*a[0]. For batch input, each slice of shape (N-1, N-1) along the last two dimensions of the output corresponds with a slice of shape (N,) along the last dimension of the input.

Raises:
ValueError

If any of the following are true: a) a.shape[-1] < 2; b) a[..., 0] == 0.

Notes

Added in version 0.8.0.

References

[1]

R. A. Horn & C. R. Johnson, Matrix Analysis. Cambridge, UK: Cambridge University Press, 1999, pp. 146-7.

Examples

>>> from scipy.linalg import companion
>>> companion([1, -10, 31, -30])
array([[ 10., -31.,  30.],
       [  1.,   0.,   0.],
       [  0.,   1.,   0.]])