eig#
- scipy.linalg.eig(a, b=None, left=False, правый=True, overwrite_a=False, overwrite_b=False, check_finite=True, homogeneous_eigvals=False)[источник]#
Решить обычную или обобщенную задачу на собственные значения для квадратной матрицы.
Найти собственные значения w и правые или левые собственные векторы общей матрицы:
a vr[:,i] = w[i] b vr[:,i] a.H vl[:,i] = w[i].conj() b.H vl[:,i]
где
.Hявляется эрмитовым сопряжением.Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.
- Параметры:
- a(M, M) array_like
Комплексная или вещественная матрица, чьи собственные значения и собственные векторы будут вычислены.
- b(M, M) array_like, опционально
Правая часть матрицы в обобщенной проблеме собственных значений. По умолчанию None, предполагается единичная матрица.
- leftbool, необязательно
Определяет, нужно ли вычислять и возвращать левые собственные векторы. По умолчанию False.
- правыйbool, необязательно
Вычислять и возвращать правые собственные векторы или нет. По умолчанию True.
- overwrite_abool, необязательно
Перезаписывать ли a; может улучшить производительность. По умолчанию False.
- overwrite_bbool, необязательно
Перезаписывать ли b; может улучшить производительность. По умолчанию False.
- check_finitebool, необязательно
Проверять ли, что входные матрицы содержат только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, бесконечному выполнению), если входные данные содержат бесконечности или NaN.
- homogeneous_eigvalsbool, необязательно
Если True, вернуть собственные значения в однородных координатах. В этом случае
wявляется массивом (2, M), так что:w[1,i] a vr[:,i] = w[0,i] b vr[:,i]
По умолчанию False.
- Возвращает:
- w(M,) или (2, M) double или complex ndarray
Собственные значения, каждое повторяется в соответствии с его кратностью. Форма (M,) если не указано иное
homogeneous_eigvals=True.- vl(M, M) double или complex ndarray
Левый собственный вектор, соответствующий собственному значению
w[i]является столбцомvl[:,i]. Возвращается только еслиleft=True. Левый собственный вектор не нормализован.- vr(M, M) double или complex ndarray
Нормированный правый собственный вектор, соответствующий собственному значению
w[i]является столбцомvr[:,i]. Возвращается только еслиright=True.
- Вызывает:
- LinAlgError
Если вычисление собственных значений не сходится.
Смотрите также
eigvalsсобственные значения общих массивов
eighСобственные значения и правые собственные векторы для симметричных/эрмитовых массивов.
eig_bandedсобственные значения и правые собственные векторы для симметричных/эрмитовых ленточных матриц
eigh_tridiagonalсобственные значения и правые собственные векторы для симметричных/эрмитовых трёхдиагональных матриц
Примеры
>>> import numpy as np >>> from scipy import linalg >>> a = np.array([[0., -1.], [1., 0.]]) >>> linalg.eigvals(a) array([0.+1.j, 0.-1.j])
>>> b = np.array([[0., 1.], [1., 1.]]) >>> linalg.eigvals(a, b) array([ 1.+0.j, -1.+0.j])
>>> a = np.array([[3., 0., 0.], [0., 8., 0.], [0., 0., 7.]]) >>> linalg.eigvals(a, homogeneous_eigvals=True) array([[3.+0.j, 8.+0.j, 7.+0.j], [1.+0.j, 1.+0.j, 1.+0.j]])
>>> a = np.array([[0., -1.], [1., 0.]]) >>> linalg.eigvals(a) == linalg.eig(a)[0] array([ True, True]) >>> linalg.eig(a, left=True, right=False)[1] # normalized left eigenvector array([[-0.70710678+0.j , -0.70710678-0.j ], [-0. +0.70710678j, -0. -0.70710678j]]) >>> linalg.eig(a, left=False, right=True)[1] # normalized right eigenvector array([[0.70710678+0.j , 0.70710678-0.j ], [0. -0.70710678j, 0. +0.70710678j]])