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