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