scipy.linalg.

eigvalsh#

scipy.linalg.eigvalsh(a, b=None, *, lower=True, overwrite_a=False, overwrite_b=False, тип=1, check_finite=True, subset_by_index=None, subset_by_value=None, драйвер=None)[источник]#

Решает стандартную или обобщённую задачу на собственные значения для комплексной эрмитовой или вещественной симметричной матрицы.

Найти массив собственных значений w массива a, где b является положительно определённой, так что для каждого собственного значения λ (i-й элемент w) и его собственного вектора vi (i-й столбец v) выполняется:

              a @ vi = λ * b @ vi
vi.conj().T @ a @ vi = λ
vi.conj().T @ b @ vi = 1

В стандартной задаче предполагается, что b является единичной матрицей.

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

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

Комплексная эрмитова или вещественная симметричная матрица, чьи собственные значения будут вычислены.

b(M, M) array_like, опционально

Комплексная эрмитова или вещественная симметричная положительно определенная матрица. Если опущена, предполагается единичная матрица.

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

Берутся ли соответствующие данные массива из нижнего или верхнего треугольника a и, если применимо, b. (По умолчанию: lower)

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

Перезаписывать ли данные в a с предоставленными параметрами конфигурации и другими подходящими настройками. В некоторых случаях доверительные пределы могут быть NaN из-за вырожденной повторной выборки, и это типично для очень маленьких выборок (~6 наблюдений).

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

Перезаписывать ли данные в b с предоставленными параметрами конфигурации и другими подходящими настройками. В некоторых случаях доверительные пределы могут быть NaN из-за вырожденной повторной выборки, и это типично для очень маленьких выборок (~6 наблюдений).

типint, необязательный

Для обобщённых задач этот ключевой параметр определяет тип решаемой задачи для w и v (принимает только 1, 2, 3 в качестве возможных входных данных):

1 =>     a @ v = w @ b @ v
2 => a @ b @ v = w @ v
3 => b @ a @ v = w @ v

Этот ключевой параметр игнорируется для стандартных задач.

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

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

subset_by_indexiterable, optional

Если предоставлен, этот двухэлементный итерируемый объект определяет начальный и конечный индексы желаемых собственных значений (по возрастанию и с нумерацией с 0). Чтобы вернуть только второе наименьшее до пятого наименьшего собственных значений, [1, 4] используется. [n-3, n-1] возвращает три наибольших. Доступно только с драйверами “evr”, “evx” и “gvx”. Элементы непосредственно преобразуются в целые числа через int().

subset_by_valueiterable, optional

Если предоставлено, этот двухэлементный итерируемый объект определяет полуоткрытый интервал (a, b] что, если есть, только собственные значения между этими значениями возвращаются. Доступно только с драйверами "evr", "evx" и "gvx". Используйте np.inf для незакреплённых концов.

драйверstr, optional

Определяет, какой драйвер LAPACK следует использовать. Допустимые варианты: «ev», «evd», «evr», «evx» для стандартных задач и «gv», «gvd», «gvx» для обобщённых (где b не None) задач. См. раздел Notes в scipy.linalg.eigh.

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

Выбранные N (N<=M) собственных значений в порядке возрастания, каждое повторяется согласно своей кратности.

Вызывает:
LinAlgError

Если вычисление собственных значений не сходится, произошла ошибка, или матрица b не является положительно определенной. Заметьте, что если входные матрицы не симметричны или не эрмитовы, ошибка не будет сообщена, но результаты будут неверными.

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

eigh

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

eigvals

собственные значения общих массивов

eigvals_banded

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

eigvalsh_tridiagonal

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

Примечания

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

Эта функция служит однострочным сокращением для scipy.linalg.eigh с опцией eigvals_only=True чтобы получить собственные значения, а не собственные векторы. Здесь он сохранён для обратной совместимости. Может быть полезно использовать основную функцию для полного контроля и большей питоничности.

Примеры

Дополнительные примеры см. в scipy.linalg.eigh.

>>> import numpy as np
>>> from scipy.linalg import eigvalsh
>>> A = np.array([[6, 3, 1, 5], [3, 0, 5, 1], [1, 5, 6, 2], [5, 1, 2, 2]])
>>> w = eigvalsh(A)
>>> w
array([-3.74637491, -0.76263923,  6.08502336, 12.42399079])