Eigenvalues and eigenvectors#

Любая квадратная матрица \(\boldsymbol A\) задаёт линейное преобразование пространства \(\mathbb R^n\) по правилу \(\boldsymbol x \mapsto \boldsymbol{Ax}\). В результате такого преобразования векторы обычно меняют как направление, так и длину. Однако бывает так, что у некоторые векторов направление сохраняется, либо же меняется на противоположное. Такие векторы называются собственными векторами матрицы.

Пусть \(\boldsymbol A \in \mathbb R^{n\times n}\). Если \(\boldsymbol{Ax} = \lambda \boldsymbol x\) при некотором \(\boldsymbol x \ne \boldsymbol 0\), то число \(\lambda\) называют собственным значением (числом) матрицы \(\boldsymbol A\), а вектор \(\boldsymbol x \in \mathbb R^n\) — собственным вектором. Множество всех собственных значений матрицы \(\boldsymbol A\) называют её спектром и обозначают \(\sigma(\boldsymbol A)\) или \(\mathrm{spec}(\boldsymbol A)\). Поскольку первое обозначение конфликтует с применением сигмоиды к матрице \(\boldsymbol A\), далее будем пользоваться вторым.

Равенство \(\boldsymbol{Ax} = \lambda \boldsymbol x\) эквивалентно равенству \((\boldsymbol A - \lambda \boldsymbol I)\boldsymbol x = \boldsymbol 0\). Таким образом, собственный вектор \(\boldsymbol x\), отвечающий собственному значению \(\lambda\), лежит в ядре матрицы \(\boldsymbol A - \lambda \boldsymbol I\), и поэтому эта матрица должна быть вырожденной. Итак,

\[ \lambda \in \mathrm{spec}(\boldsymbol A) \iff \vert\boldsymbol A - \lambda \boldsymbol I\vert = 0. \]

In NumPy both eigenvalues and eigenvectors are computed by the function np.linalg.eig:

import numpy as np
A = np.array([[1, 4], [2, 3]])
eig_result = np.linalg.eig(A)
print("Eigenvalues:", eig_result.eigenvalues)
print("Eigenvectors:", eig_result.eigenvectors[:, 0], eig_result.eigenvectors[:, 1])
Eigenvalues: [-1.  5.]
Eigenvectors: [-0.89442719  0.4472136 ] [-0.70710678 -0.70710678]

Characteristic polynomial#

Собственные значения матрицы \(\boldsymbol A\) — это в точности корни её характеристического многочлена

\[ \chi_{\boldsymbol A} (\lambda) = \det(\boldsymbol A - \lambda \boldsymbol I), \]

представляющего собой многочлен степени \(n\) от \(\lambda\). Основная теорема алгебры гласит, что всякий многочлен степени \(n\) имеет \(n\) комплексных корней, однако, действительных среди них может быть меньше или не быть вовсе. Например, у матрицы поворота на 90° градусов

\[\begin{split} \boldsymbol A = \begin{pmatrix} 0 & -1 \\ 1 & 0 \\ \end{pmatrix} \end{split}\]

нет действительных собственных значений и векторов, поскольку нет таких векторов на плоскости, которые после поворота на 90° градусов остались бы лежать на той же прямой. И действительно,

\[\begin{split} \vert\boldsymbol A - \lambda \boldsymbol I\vert = \begin{vmatrix} -\lambda & -1 \\ 1 & -\lambda \\ \end{vmatrix} = \lambda^2 + 1 = 0 \text{ при } \lambda = \pm i. \end{split}\]

Получилось два сопряжённых мнимых собственных значения. Похожее верно для любой вещественной матрицы: если у неё есть комплексные собственные числа, то они разбиваются на пары взаимно сопряжённый значений.

Применяя теорему Виета к характеристическому многочлену матрицы \(\boldsymbol A\in \mathbb R^{n\times n}\), получаем, что её собственные значения \(\lambda_1, \ldots, \lambda_n\) удовлетворяют соотношениям

\[ \lambda_1\cdot \ldots\cdot \lambda_n = \det \boldsymbol A, \quad \lambda_1 + \ldots + \lambda_n = \mathrm{tr}(\boldsymbol A). \]

Complex eigenvalues also can be calculated in NumPy:

A = np.array([[1, -2], [3, 4]])
np.linalg.eig(A)
eig_result = np.linalg.eig(A)
print("Eigenvalues:", eig_result.eigenvalues)
print("Eigenvectors:", eig_result.eigenvectors[:, 0], eig_result.eigenvectors[:, 1])
Eigenvalues: [2.5+1.93649167j 2.5-1.93649167j]
Eigenvectors: [ 0.38729833-0.5j -0.77459667+0.j ] [ 0.38729833+0.5j -0.77459667-0.j ]

Multiplicity of eigenvalues#

Геометрическая кратность собственного значения \(\lambda \in \mathrm{spec}(\boldsymbol A)\) равна размерности ядра матрицы \(\boldsymbol A - \lambda \boldsymbol I\):

\[ \gamma_{\boldsymbol A}(\lambda) = \dim N(\boldsymbol A - \lambda \boldsymbol I). \]

Алгебраическая кратность \(\mu_{\boldsymbol A}(\lambda)\) собственного числа \(\lambda \in \mathrm{spec}(\boldsymbol A)\) — это его кратность как корня характеристического многочлена \(\chi_{\boldsymbol A}(\lambda)\).

Теорема. Если \(\lambda \in \mathrm{spec}(\boldsymbol A)\), \(\boldsymbol A \in \mathbb R^{n\times n}\), то \(1 \leqslant \gamma_{\boldsymbol A}(\lambda) \leqslant \mu_{\boldsymbol A}(\lambda) \leqslant n\).

Exercises#

  1. Find all eigenvalues of the following matrices:

  • zero matrix \(\boldsymbol 0_n\)

  • identity matrix \(\boldsymbol I_n\)

  • diagonal matrix \(\mathrm{diag}\{\lambda_1, \ldots, \lambda_n\}\)

  • upper/lower triangular matrix

  • ones matrix \(\boldsymbol 1_n\)

  1. Find all eigenvalues of a one-rank matrix \(\boldsymbol A = \boldsymbol{uv}^\mathsf{T}\), \(\boldsymbol u, \boldsymbol v \in \mathbb R^n\).

  2. Prove that all eigenvalues of a projection matrix \(\boldsymbol P\) are equal to \(0\) or \(1\).

  3. Prove that if \(\lambda\) is an eigenvalue of an orthogonal matrix \(\boldsymbol Q\) then \(\vert \lambda\vert= 1\).

  4. Let \(\mathrm{spec}(\boldsymbol A) = \{\lambda_1, \ldots, \lambda_n\}\). Show that \(\mathrm{spec}(\boldsymbol A^k) = \{\lambda^k_1, \ldots, \lambda^k_n\}\) for all \(k\in \mathbb N.\)

  5. Prove that \(\mathrm{spec}(\boldsymbol A) = \mathrm{spec}(\boldsymbol B)\) if \(\boldsymbol A \sim \boldsymbol B\).

  6. Give an example of a \(2\times 2\) matrix \(\boldsymbol A\) and its eigenvalue \(\lambda\) such that \(\gamma_{\boldsymbol A}(\lambda) < \mu_{\boldsymbol A}(\lambda)\).