Функция linalg.eig
Функция linalg.eig вычисляет собственные значения
и собственные векторы квадратной матрицы.
Первым параметром функция принимает квадратную матрицу
или массив, который можно интерпретировать как матрицу.
Возвращает кортеж из двух элементов: массив собственных значений
и массив собственных векторов, где каждый столбец соответствует
собственному вектору.
Синтаксис
np.linalg.eig(a)
Пример
Вычислим собственные значения и векторы для матрицы 2x2:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(arr)
print("eigenvalues:", eigenvalues)
print("eigenvectors:")
print(eigenvectors)
Результат выполнения кода:
eigenvalues: [-0.37228132 5.37228132]
eigenvectors:
[[-0.82456484 -0.41597356]
[ 0.56576746 -0.90937671]]
Пример
Используем функцию для проверки соотношения A·v = λ·v для первого собственного вектора:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(arr)
v = eigenvectors[:, 0]
lambda_ = eigenvalues[0]
res = np.dot(arr, v)
expected = lambda_ * v
print("A * v:", res)
print("lambda * v:", expected)
print("difference:", np.allclose(res, expected))
Результат выполнения кода:
A * v: [0.30697009 -0.21062466]
lambda * v: [0.30697009 -0.21062466]
difference: True
Пример
Рассмотрим случай вырожденной матрицы с кратными собственными значениями:
import numpy as np
arr = np.array([[2, 1], [0, 2]])
eigenvalues, eigenvectors = np.linalg.eig(arr)
print("eigenvalues:", eigenvalues)
print("eigenvectors:")
print(eigenvectors)
Результат выполнения кода:
eigenvalues: [2. 2.]
eigenvectors:
[[1. 0.]
[0. 1.]]
Пример
Работа с комплексными собственными значениями для вещественной матрицы:
import numpy as np
arr = np.array([[0, -1], [1, 0]])
eigenvalues, eigenvectors = np.linalg.eig(arr)
print("eigenvalues:", eigenvalues)
print("eigenvectors:")
print(eigenvectors)
Результат выполнения кода:
eigenvalues: [0.+1.j 0.-1.j]
eigenvectors:
[[0.70710678+0.j 0.70710678-0.j ]
[0. -0.70710678j 0. +0.70710678j]]
Смотрите также
-
функцию
eigh,
которая вычисляет собственные значения и векторы для эрмитовых и симметричных матриц -
функцию
eigvals,
которая вычисляет только собственные значения без векторов -
функцию
eigvalsh,
которая вычисляет собственные значения для эрмитовых матриц -
функцию
svd,
которая выполняет сингулярное разложение матрицы