Skip to main content
`Ctrl`+`K`
scipy.linalg.

# fiedler_companion

scipy.linalg.fiedler_companion(a)

  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`.

  Array argument(s) of this function may have additional “batch” dimensions prepended to the core shape. In this case, the array is treated as a batch of lower-dimensional slices; see Batched Linear Operations for details.

  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. N-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

      Resulting companion matrix. 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.

  See also

  `companion`

  Notes

  Similar to `companion`, each leading coefficient along the last axis of the input should be nonzero. If 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])