scipy.linalg.

fiedler_companion#

scipy.linalg.fiedler_companion(a)[источник]#

Возвращает матрицу Фидлера-компаньона

Для заданного массива полиномиальных коэффициентов a, эта функция формирует пятидиагональную матрицу со специальной структурой, чьи собственные значения совпадают с корнями a.

Параметры:
a(…, N) array_like

1-D массив коэффициентов полинома в порядке убывания с ненулевым старшим коэффициентом. Для N < 2, возвращается пустой массив. N-мерные массивы обрабатываются как пакет: каждый срез по последней оси является 1-D массивом полиномиальных коэффициентов.

Возвращает:
c(..., N-1, N-1) ndarray

Результирующая сопровождающая матрица. Для пакетного ввода каждый срез формы (N-1, N-1) по последним двум измерениям выхода соответствует срезу формы (N,) вдоль последнего измерения входных данных.

Смотрите также

companion

Примечания

Аналогично companion, каждый старший коэффициент вдоль последней оси входных данных должен быть ненулевым. Если старший коэффициент не равен 1, другие коэффициенты масштабируются перед генерацией массива. Чтобы избежать числовых проблем, лучше предоставить приведённый полином.

Добавлено в версии 1.3.0.

Ссылки

[1]

M. Fiedler, "Заметка о сопровождающих матрицах", Linear Algebra and its Applications, 2003, DOI:10.1016/S0024-3795(03)00548-2

Примеры

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