scipy.linalg.

eigvalsh_tridiagonal#

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

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

Найти собственные значения w of a:

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

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

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

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

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

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

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

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

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

select

рассчитано

‘a’

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

‘v’

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

‘i’

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

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

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

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

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

tolfloat

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

lapack_driverstr

Функция LAPACK для использования, может быть ‘auto’, ‘stemr’, ‘stebz’, ‘sterf’, ‘stev’ или ‘stevd’. Когда ‘auto’ (по умолчанию), будет использоваться ‘stevd’, если select='a' и 'stebz' в противном случае. 'sterf' и 'stev' могут использоваться только когда select='a'.

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

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

Вызывает:
LinAlgError

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

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

eigh_tridiagonal

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

Примеры

>>> import numpy as np
>>> from scipy.linalg import eigvalsh_tridiagonal, eigvalsh
>>> d = 3*np.ones(4)
>>> e = -1*np.ones(3)
>>> w = eigvalsh_tridiagonal(d, e)
>>> A = np.diag(d) + np.diag(e, k=1) + np.diag(e, k=-1)
>>> w2 = eigvalsh(A)  # Verify with other eigenvalue routines
>>> np.allclose(w - w2, np.zeros(4))
True