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])