scipy.linalg.fiedler_companion#

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

Returns a Fiedler companion matrix

Given a polynomial coefficient array a, this function forms a pentadiagonal matrix with a special structure whose eigenvalues coincides with the roots of a.

Parameters:
a(N,) array_like

1-D array of polynomial coefficients in descending order with a nonzero leading coefficient. For N < 2, an empty array is returned.

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

Resulting companion matrix

See also

companion

Notes

Similar to companion the leading coefficient should be nonzero. In the case the leading coefficient is not 1, other coefficients are rescaled before the array generation. To avoid numerical issues, it is best to provide a monic polynomial.

Added in version 1.3.0.

References

[1]

M. Fiedler, “ A note on companion matrices”, Linear Algebra and its Applications, 2003, DOI:10.1016/S0024-3795(03)00548-2

Examples

>>> import numpy as np
>>> from scipy.linalg import fiedler_companion, eigvals
>>> p = np.poly(np.arange(1, 9, 2))  # [1., -16., 86., -176., 105.]
>>> fc = fiedler_companion(p)
>>> fc
array([[  16.,  -86.,    1.,    0.],
       [   1.,    0.,    0.,    0.],
       [   0.,  176.,    0., -105.],
       [   0.,    1.,    0.,    0.]])
>>> eigvals(fc)
array([7.+0.j, 5.+0.j, 3.+0.j, 1.+0.j])