Spec-Zone.ru › NumPy 1.20

numpy.linalg.eigh

linalg.eigh(a, UPLO='L') [source]

Возвращает собственные значения и собственные векторы комплексной эрмитовой (сопряжённо-симметричной) или вещественной симметричной матрицы.

Возвращает два объекта: 1-мерный массив, содержащий собственные значения a, и 2-мерный квадратный массив или матрицу (в зависимости от типа входных данных) соответствующих собственных векторов (в столбцах).

Parameters
a(…, M, M) array

Эрмитовы или вещественные симметричные матрицы, для которых необходимо вычислить собственные значения и собственные векторы.

UPLO{‘L’, ‘U’}, optional

Указывает, вычисление выполняется с использованием нижней треугольной части a (‘L’, по умолчанию) или верхней треугольной части (‘U’). Независимо от этого значения, в вычислении будут учитываться только вещественные части диагонали для сохранения понятия эрмитовой матрицы. Следовательно, мнимая часть диагонали всегда будет рассматриваться как ноль.

Returns
w(…, M) ndarray

Собственные значения в порядке возрастания, каждое повторяется в соответствии со своей кратностью.

v{(…, M, M) ndarray, (…, M, M) matrix}

Столбец v[:, i] представляет нормированный собственный вектор, соответствующий собственному значению w[i]. Будет возвращена матрица, если a является матрицей.

Raises
LinAlgError

Если вычисление собственных значений не сходится.

См. также

eigvalsh

собственные значения вещественных симметричных или комплексных эрмитовых (сопряжённо-симметричных) массивов.

eig

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

eigvals

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

scipy.linalg.eigh

Аналогичная функция в SciPy (но также решает обобщённую задачу нахождения собственных значений).

Примечания

Введено в версии 1.8.0.

Применяются правила широковещательной передачи, см. документацию по numpy.linalg для получения подробной информации.

Собственные значения/собственные векторы вычисляются с помощью подпрограмм LAPACK _syevd, _heevd.

Собственные значения вещественных симметричных или комплексных эрмитовых матриц всегда вещественные. [1] Массив v (столбцы) собственных векторов является унитарным и a, w, и v удовлетворяют уравнениям dot(a, v[:, i]) = w[i] * v[:, i].

Ссылки

1

G. Strang, Линейная алгебра и её приложения, 2-е изд., Орландо, Флорида, Издательство Academic Press, Inc., 1980, стр. 222.

Примеры

>>> from numpy import linalg as LA
>>> a = np.array([[1, -2j], [2j, 5]])
>>> a
array([[ 1.+0.j, -0.-2.j],
       [ 0.+2.j,  5.+0.j]])
>>> w, v = LA.eigh(a)
>>> w; v
array([0.17157288, 5.82842712])
array([[-0.92387953+0.j        , -0.38268343+0.j        ], # may vary
       [ 0.        +0.38268343j,  0.        -0.92387953j]])
>>> np.dot(a, v[:, 0]) - w[0] * v[:, 0] # verify 1st e-val/vec pair
array([5.55111512e-17+0.0000000e+00j, 0.00000000e+00+1.2490009e-16j])
>>> np.dot(a, v[:, 1]) - w[1] * v[:, 1] # verify 2nd e-val/vec pair
array([0.+0.j, 0.+0.j])
>>> A = np.matrix(a) # what happens if input is a matrix object
>>> A
matrix([[ 1.+0.j, -0.-2.j],
        [ 0.+2.j,  5.+0.j]])
>>> w, v = LA.eigh(A)
>>> w; v
array([0.17157288, 5.82842712])
matrix([[-0.92387953+0.j        , -0.38268343+0.j        ], # may vary
        [ 0.        +0.38268343j,  0.        -0.92387953j]])
>>> # demonstrate the treatment of the imaginary part of the diagonal
>>> a = np.array([[5+2j, 9-2j], [0+2j, 2-1j]])
>>> a
array([[5.+2.j, 9.-2.j],
       [0.+2.j, 2.-1.j]])
>>> # with UPLO='L' this is numerically equivalent to using LA.eig() with:
>>> b = np.array([[5.+0.j, 0.-2.j], [0.+2.j, 2.-0.j]])
>>> b
array([[5.+0.j, 0.-2.j],
       [0.+2.j, 2.+0.j]])
>>> wa, va = LA.eigh(a)
>>> wb, vb = LA.eig(b)
>>> wa; wb
array([1., 6.])
array([6.+0.j, 1.+0.j])
>>> va; vb
array([[-0.4472136 +0.j        , -0.89442719+0.j        ], # may vary
       [ 0.        +0.89442719j,  0.        -0.4472136j ]])
array([[ 0.89442719+0.j       , -0.        +0.4472136j],
       [-0.        +0.4472136j,  0.89442719+0.j       ]])

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.linalg.eigh.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API