scipy.linalg.

eigh_tridiagonal#

scipy.linalg.eigh_tridiagonal(d, e, eigvals_only=False, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[источник]#

Решение проблемы собственных значений для вещественной симметричной трехдиагональной матрицы.

Найти собственные значения w и, опционально, правые собственные векторы v of a:

a v[:,i] = w[i] v[:,i]
v.H v    = identity

Для вещественной симметричной матрицы a с диагональными элементами d и недиагональные элементы e.

Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.

Параметры:
dndarray, форма (ndim,)

Диагональные элементы массива.

endarray, форма (ndim-1,)

Внедиагональные элементы массива.

eigvals_onlybool, необязательно

Вычислить только собственные значения без собственных векторов. (По умолчанию: также вычисляются собственные векторы)

select{‘a’, ‘v’, ‘i’}, опционально

Какие собственные значения вычислять

select

рассчитано

‘a’

Все собственные значения

‘v’

Собственные значения в интервале (min, max]

‘i’

Собственные значения с индексами min <= i <= max

select_range(min, max), опционально

Диапазон выбранных собственных значений

check_finitebool, необязательно

Проверять ли, что входная матрица содержит только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, незавершению) если входные данные содержат бесконечности или NaN.

tolfloat

Абсолютная точность, с которой требуется каждое собственное значение (используется только когда 'stebz' является lapack_driver). Собственное значение (или кластер) считается сошедшимся, если оно лежит в интервале такой ширины. Если <= 0. (по умолчанию), значение eps*|a| используется, где eps - машинная точность, и |a| является 1-нормой матрицы a.

lapack_driverstr

Используемая функция LAPACK, может быть 'auto', 'stemr', 'stebz', 'sterf', 'stev' или 'stevd'. При 'auto' (по умолчанию) будет использоваться 'stevd', если select='a' и 'stebz' в противном случае. Когда 'stebz' используется для нахождения собственных значений и eigvals_only=False, затем второй вызов LAPACK (к ?STEIN) используется для нахождения соответствующих собственных векторов. ‘sterf’ можно использовать только когда eigvals_only=True и select='a'. ‘stev’ может использоваться только когда select='a'.

Возвращает:
w(M,) ndarray

Собственные значения в порядке возрастания, каждое повторяется в соответствии с его кратностью.

v(M, M) ndarray

Нормированный собственный вектор, соответствующий собственному значению w[i] является столбцом v[:,i]. Возвращается только если eigvals_only=False.

Вызывает:
LinAlgError

Если вычисление собственных значений не сходится.

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

eigvalsh_tridiagonal

собственные значения симметричных/эрмитовых трёхдиагональных матриц

eig

собственные значения и правые собственные векторы для несимметричных массивов

eigh

собственные значения и правые собственные векторы для симметричных/эрмитовых массивов

eig_banded

собственные значения и правые собственные векторы для симметричных/эрмитовых ленточных матриц

Примечания

Эта функция использует LAPACK S/DSTEMR функций.

Примеры

>>> import numpy as np
>>> from scipy.linalg import eigh_tridiagonal
>>> d = 3*np.ones(4)
>>> e = -1*np.ones(3)
>>> w, v = eigh_tridiagonal(d, e)
>>> A = np.diag(d) + np.diag(e, k=1) + np.diag(e, k=-1)
>>> np.allclose(A @ v - v @ np.diag(w), np.zeros((4, 4)))
True