scipy.linalg.

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