🔴 Сложный ⏱️ 55 минут

Диагонализация матриц

📋 Содержание урока

Диагонализация матриц 💎

Урок 172 закончился ровно в той точке, где стало интересно. Мы научились находить собственные векторы и собственные значения любой квадратной матрицы, разобрали алгебраическую и геометрическую кратности — и наткнулись на трещину: иногда собственных векторов ровно столько, сколько нужно для базиса всего пространства, а иногда их катастрофически не хватает. Этот урок — про то, что происходит в первом, счастливом случае, и почему второй случай на самом деле редкость, а не норма.

Идея простая и мощная одновременно. Если у матрицы $A$ порядка $n$ нашлось $n$ линейно независимых собственных векторов, из них можно собрать новый базис — координатную систему, в которой сама матрица $A$ перестаёт быть матрицей в привычном смысле и превращается в умножение на числа по каждой оси отдельно. Формально это записывается как $A = PDP^{-1}$, где $P$ — матрица, составленная из собственных векторов, а $D$ — диагональная матрица из собственных значений. Слева сложная матрица со всеми её перекрёстными взаимодействиями координат, справа — то же самое преобразование, увиденное под правильным углом.

Практическая польза этой конструкции огромна, и именно она оправдывает трудозатраты на поиск собственных векторов. Хочешь посчитать $A$ в сотой степени? В лоб это девяносто девять умножений матриц. Через диагонализацию — ровно два умножения матриц и возведение $n$ чисел в сотую степень, потому что $D^k$ считается поэлементно. Это не теоретическая экономия: именно так по матрице переходов марковской цепи предсказывают состояние системы через много шагов, именно так строго обосновывается сходимость степенного метода из прошлого урока, и именно на этом разложении держится связка PCA — SVD, к которой мы придём в следующих уроках.

А ещё диагонализация отвечает на вопрос «а что, если собственных векторов не хватает?» — и ответ там неожиданно содержательный: недиагонализуемые (дефектные) матрицы существуют, их степени растут иначе, и понимание того, почему они «ломаются», проясняет саму суть диагонализации лучше, чем ещё десяток удачных примеров.

🎯 Ты узнаешь:

  • Что такое диагонализация матрицы и как разложение $A = PDP^{-1}$ следует из равенств $Av_i = \lambda_i v_i$ для собственных векторов, взятых в столбцы $P$

  • Критерий диагонализуемости: $n$ линейно независимых собственных векторов, он же — равенство геометрической и алгебраической кратности для каждого собственного значения

  • Пошаговый алгоритм диагонализации с полной проверкой, и почему матрицы с $n$ различными собственными значениями диагонализуемы автоматически

  • Как считать $A^k$ через $PD^kP^{-1}$ — точный прогноз марковской цепи на много шагов вперёд и вывод формулы Бине для чисел Фибоначчи

  • Что такое дефектная (недиагонализуемая) матрица, чем плоха жорданова клетка и как выглядят её степени вместо простой формулы $PD^kP^{-1}$

  • Почему симметричные матрицы никогда не бывают дефектными — и что это значит для ковариационных матриц в PCA

  • Как диагонализация объясняет, почему вообще сходится степенной метод и PageRank — через разложение начального вектора по собственному базису

История: откуда это взялось?

Сама идея «заменить переменные так, чтобы система распалась на независимые куски» старше матричной алгебры лет на сто. Лагранж и Лаплас в конце XVIII века, разбирая взаимные возмущения планетных орбит (см. урок 172), фактически искали такую замену координат, в которой связанная система линейных уравнений становится набором независимых уравнений — по одному на каждую частоту векового движения. Немецкий математик Карл Густав Якоб Якоби в 1830–1840-х годах систематизировал этот приём для механических систем со связанными колебаниями: он показал, что колебания системы грузов на пружинах, как бы сложно они ни были связаны друг с другом, всегда раскладываются на независимые «нормальные моды» — и поиск этих мод есть в точности диагонализация матрицы жёсткости системы. Физики до сих пор называют собственные векторы такой матрицы нормальными модами, а не собственными векторами — терминологическое эхо той эпохи.

Артур Кэли формализовал язык матриц в 1858 году и одним из первых явно записал преобразование подобия $B = C^{-1}AC$ — то самое, которое лежит в основе диагонализации. Но настоящий вопрос «когда именно это возможно» потребовал ещё двадцати лет работы. Карл Вейерштрасс в 1868 году построил теорию элементарных делителей — полную классификацию того, к какому простейшему виду приводится любая квадратная матрица, диагонализуема она или нет. Двумя годами позже, в 1870-м, Камиль Жордан независимо пришёл к эквивалентному результату в геометрической форме — так называемой жордановой нормальной форме, с которой мы сегодня столкнёмся на примере простейшей дефектной матрицы. Оба результата говорят одно и то же: диагональная форма — это идеальный, но не всегда достижимый случай общей канонической формы, и «не достижима» она ровно тогда, когда собственных векторов не хватает на базис.

В XX веке диагонализация превратилась из теоретической красоты в вычислительный инструмент. Андрей Марков в 1906 году ввёл цепи, названные его именем, — последовательности состояний, где вероятность следующего шага зависит только от текущего. Поведение такой цепи через много шагов описывается степенями матрицы переходов, а предсказать это поведение без диагонализации значило бы умножать матрицы сотни раз подряд. Спустя почти век, в 1998 году, Сергей Брин и Ларри Пейдж применили тот же аппарат к графу ссылок интернета: их PageRank — это собственный вектор матрицы переходов с собственным значением 1, а сама сходимость степенного метода к нему, о которой шла речь в уроке 172, строго обосновывается именно диагонализацией — разложением начального вектора по собственному базису и убыванием всех слагаемых, кроме доминирующего. Та же идея — быстрое вычисление больших степеней матрицы через её спектр — сегодня стоит за анализом устойчивости рекуррентных нейросетей, случайными блужданиями по графам и матричной экспонентой в непрерывных марковских моделях.

Идея диагонализации: собственный базис как простейшая система координат

Интуиция

Возьми облако точек, вытянутое по диагонали — например, рост и вес выборки людей: они коррелируют, и разброс на графике выглядит как наклонённый эллипс. В координатах $x, y$ (рост, вес) описать этот эллипс неудобно: оси координат не совпадают с осями самого эллипса, и разброс по $x$ перемешан с разбросом по $y$. Но если повернуть оси так, чтобы они легли вдоль большой и малой осей эллипса, разброс по каждой новой оси станет независимым — эллипс превратится в описание «столько-то разброса по первой оси, столько-то по второй», без всякого смешивания. Именно так выглядит диагонализация: это не изменение самого преобразования (или самого облака точек), а замена взгляда на него — выбор базиса, в котором сложное превращается в набор независимых растяжений.

Формализуем. Пусть у матрицы $A$ порядка $n$ нашлись $n$ линейно независимых собственных векторов $v_1, \dots, v_n$ с собственными значениями $\lambda_1, \dots, \lambda_n$. Составим из них матрицу $P$, записав векторы столбцами:

$$P = \begin{pmatrix} v_1 & v_2 & \dots & v_n \end{pmatrix}$$

Что происходит при умножении $A$ на $P$? Умножение матрицы на матрицу — это умножение на каждый столбец по отдельности (урок 157), а каждый столбец $P$ — это собственный вектор:

$$AP = \begin{pmatrix} Av_1 & Av_2 & \dots & Av_n \end{pmatrix} = \begin{pmatrix} \lambda_1 v_1 & \lambda_2 v_2 & \dots & \lambda_n v_n \end{pmatrix}$$

Правая часть — это в точности произведение $P$ на диагональную матрицу. Проверить стоит руками: если $D = \operatorname{diag}(\lambda_1,\dots,\lambda_n)$, то $j$-й столбец $PD$ — это $j$-й столбец $P$, умноженный на $\lambda_j$ (умножение матрицы на диагональную справа масштабирует столбцы). Значит:

$$AP = PD$$

Поскольку векторы $v_1,\dots,v_n$ независимы, матрица $P$ невырождена и обратима (урок 169). Домножим обе части равенства $AP = PD$ справа на $P^{-1}$:

$$A = PDP^{-1}$$

Вот и вся конструкция. Ничего не «выдумано» — это прямое следствие определения собственного вектора, записанное сразу для всех $n$ векторов одновременно.

Определение: Квадратная матрица $A$ порядка $n$ называется диагонализируемой, если она представима в виде

$$A = PDP^{-1},$$

где $P$ — невырожденная матрица, а $D$ — диагональная. Столбцы $P$ — это собственные векторы $A$, диагональные элементы $D$ — отвечающие им собственные значения, взятые в том же порядке.

Пример 1 (полная диагонализация и проверка)

Диагонализируем матрицу

$$A = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix}$$

След и определитель: $\operatorname{tr} A = 7$, $\det A = 12 - 2 = 10$. Характеристический многочлен $\lambda^2 - 7\lambda + 10 = (\lambda - 5)(\lambda - 2)$ (техника урока 172). Корни: $\lambda_1 = 5$, $\lambda_2 = 2$.

Для $\lambda_1 = 5$: $A - 5I = \begin{pmatrix} -1 & 1 \\ 2 & -2 \end{pmatrix}$, уравнение $-x_1 + x_2 = 0$, откуда $x_1 = x_2$. Берём $v_1 = (1,1)^T$.

Для $\lambda_2 = 2$: $A - 2I = \begin{pmatrix} 2 & 1 \\ 2 & 1 \end{pmatrix}$, уравнение $2x_1 + x_2 = 0$, откуда $x_2 = -2x_1$. Берём $v_2 = (1,-2)^T$.

Собираем:

$$P = \begin{pmatrix} 1 & 1 \\ 1 & -2 \end{pmatrix}, \qquad D = \begin{pmatrix} 5 & 0 \\ 0 & 2 \end{pmatrix}$$

Находим $P^{-1}$: $\det P = 1\cdot(-2) - 1\cdot 1 = -3$, значит

$$P^{-1} = \frac{1}{-3}\begin{pmatrix} -2 & -1 \\ -1 & 1 \end{pmatrix} = \begin{pmatrix} 2/3 & 1/3 \\ 1/3 & -1/3 \end{pmatrix}$$

Проверяем полное равенство. Сначала $PD$: масштабируем столбцы $P$ на $5$ и на $2$ соответственно:

$$PD = \begin{pmatrix} 5 & 2 \\ 5 & -4 \end{pmatrix}$$

Теперь $PDP^{-1}$:

$$\text{строка 1: } \left(5\cdot\tfrac{2}{3} + 2\cdot\tfrac{1}{3},\ 5\cdot\tfrac{1}{3} + 2\cdot(-\tfrac{1}{3})\right) = \left(\tfrac{12}{3}, \tfrac{3}{3}\right) = (4, 1)$$$$\text{строка 2: } \left(5\cdot\tfrac{2}{3} + (-4)\cdot\tfrac{1}{3},\ 5\cdot\tfrac{1}{3} + (-4)\cdot(-\tfrac{1}{3})\right) = \left(\tfrac{6}{3}, \tfrac{9}{3}\right) = (2, 3)$$$$PDP^{-1} = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix} = A \checkmark$$

Разложение восстановило исходную матрицу поэлементно, без единой натяжки.

Почему это важно

Разложение $A = PDP^{-1}$ — это не «ещё один факт про собственные векторы», а конкретный алгебраический объект, с которым можно работать дальше: обращать, возводить в степень, подставлять в многочлены. Всё, что мы делали в уроке 172 как отдельные наблюдения («у $A^k$ собственные значения $\lambda^k$», «у $A^{-1}$ значения $1/\lambda$»), отсюда следует одной строчкой алгебры, а не отдельным доказательством для каждого случая. Дальше в этом уроке мы именно так и поступим.

Критерий диагонализуемости: когда собственных векторов достаточно

Интуиция

Не любая квадратная матрица даёт $n$ независимых собственных векторов — урок 172 закончился именно на этом наблюдении, разобрав дефектные матрицы, у которых геометрическая кратность меньше алгебраической. Диагонализация возможна ровно тогда, когда такого дефицита нет ни у одного собственного значения.

Теорема (критерий диагонализуемости). Квадратная матрица $A$ порядка $n$ диагонализируема тогда и только тогда, когда у неё есть $n$ линейно независимых собственных векторов. Эквивалентно: для каждого собственного значения $\lambda$ его геометрическая кратность равна алгебраической, $m_g(\lambda) = m_a(\lambda)$, и сумма алгебраических кратностей по всем собственным значениям равна $n$.

Отсюда сразу два практических следствия.

Следствие 1. Если у матрицы порядка $n$ ровно $n$ различных собственных значений, она диагонализируема автоматически. Причина — теорема из урока 172: собственные векторы, отвечающие различным собственным значениям, всегда линейно независимы. Раз значений $n$ и все разные, соответствующие им векторы независимы по этой теореме, и проверять ранги вообще не нужно.

Следствие 2 (забегая вперёд). У симметричной матрицы всегда есть $n$ линейно независимых (и даже ортогональных) собственных векторов, вне зависимости от того, сколько среди собственных значений совпадающих. Полное доказательство — спектральная теорема — будет в уроке 175. Практический вывод для этого урока: симметричная матрица диагонализируема всегда, дефектной она не бывает никогда. Это особенно приятная новость для ML: ковариационные и корреляционные матрицы всегда симметричны.

Пример 2 (диагонализуемость через различные собственные значения)

$$A = \begin{pmatrix} 2 & 1 & 1 \\ 0 & 3 & 1 \\ 0 & 0 & 5 \end{pmatrix}$$

Матрица верхнетреугольная, собственные значения читаются с диагонали: $\lambda_1 = 2$, $\lambda_2 = 3$, $\lambda_3 = 5$ — все различны, значит диагонализуемость уже гарантирована, и можно сразу искать векторы, не тратя время на ранги.

Для $\lambda_1 = 2$: $A - 2I = \begin{pmatrix} 0&1&1\\0&1&1\\0&0&3 \end{pmatrix}$. Из третьей строки $x_3 = 0$, из первой — $x_2 = 0$, $x_1$ свободна: $v_1 = (1,0,0)^T$.

Для $\lambda_2 = 3$: $A - 3I = \begin{pmatrix} -1&1&1\\0&0&1\\0&0&2 \end{pmatrix}$. Из второй строки $x_3 = 0$, из первой $-x_1+x_2=0$, то есть $x_1=x_2$: $v_2 = (1,1,0)^T$.

Для $\lambda_3 = 5$: $A - 5I = \begin{pmatrix} -3&1&1\\0&-2&1\\0&0&0 \end{pmatrix}$. Из второй строки $x_3 = 2x_2$, из первой $-3x_1+x_2+x_3=0 \Rightarrow -3x_1 + 3x_2 = 0 \Rightarrow x_1=x_2$. Берём $x_2=1$: $v_3=(1,1,2)^T$.

Проверка каждой пары прямой подстановкой в $A$ (без вычисления $P^{-1}$ — для проверки этого достаточно): $Av_1 = (2,0,0)^T = 2v_1$; $Av_2 = (2+1,3,0)^T=(3,3,0)^T=3v_2$; $Av_3 = (2+1+2,3+2,10)^T=(5,5,10)^T=5v_3$. Всё сходится.

$$P = \begin{pmatrix} 1&1&1\\0&1&1\\0&0&2 \end{pmatrix}, \qquad D = \begin{pmatrix} 2&0&0\\0&3&0\\0&0&5 \end{pmatrix}$$

Почему это важно

Проверка «$n$ различных собственных значений» — это самый дешёвый тест на диагонализуемость: не нужно считать ни одного ранга. Она же — самая частая ситуация в учебных и даже в реальных задачах: случайно взятая матрица почти никогда не имеет совпадающих собственных значений. А вот если корень характеристического многочлена оказался кратным, экономии больше нет — придётся честно считать ранг $A - \lambda I$ для этого $\lambda$, и именно это мы сделаем в следующем разделе на примере, где что-то идёт не так.

Алгоритм диагонализации: пошагово

Соберём всё в чёткую последовательность действий.

  1. Найти характеристический многочлен $\det(A - \lambda I)$ и его корни $\lambda_1,\dots$ с учётом кратностей — техника урока 172.

  2. Для каждого различного собственного значения $\lambda$ решить однородную систему $(A-\lambda I)x = \mathbf{0}$ и найти базис пространства решений (ФСР) — это и есть собственные векторы, отвечающие $\lambda$.

  3. Посчитать геометрическую кратность $m_g(\lambda) = n - \operatorname{rank}(A-\lambda I)$ для каждого $\lambda$ и сравнить её с алгебраической кратностью $m_a(\lambda)$. Если хотя бы для одного $\lambda$ выполнено $m_g < m_a$ — матрица не диагонализируема, алгоритм останавливается.

  4. Если для всех $\lambda$ выполнено $m_g = m_a$ — собрать все найденные собственные векторы (их будет ровно $n$) в столбцы матрицы $P$, в том же порядке записав собственные значения на диагональ $D$.

  5. Вычислить $P^{-1}$ методом присоединённой матрицы или методом Гаусса (урок 161).

  6. Проверить результат — убедиться, что $AP = PD$, а ещё лучше явно перемножить $PDP^{-1}$ и сравнить с исходной $A$.

Пример 3 (полный цикл алгоритма, сложный случай)

$$A = \begin{pmatrix} 1 & 2 & 0 \\ 0 & 3 & 0 \\ 2 & -4 & 2 \end{pmatrix}$$

Шаг 1. Третий столбец матрицы $A - \lambda I$ содержит только один ненулевой элемент — $(2-\lambda)$ в позиции $(3,3)$. Раскладываем определитель по этому столбцу:

$$\det(A-\lambda I) = (2-\lambda)\det\begin{pmatrix} 1-\lambda & 2 \\ 0 & 3-\lambda \end{pmatrix} = (2-\lambda)(1-\lambda)(3-\lambda)$$

Корни: $\lambda_1 = 1$, $\lambda_2 = 2$, $\lambda_3 = 3$ — все различны, диагонализуемость уже гарантирована (следствие 1 из предыдущего раздела), но пройдём весь алгоритм, чтобы увидеть его целиком.

Шаг 2. Для $\lambda_1=1$: $A-I=\begin{pmatrix}0&2&0\\0&2&0\\2&-4&1\end{pmatrix}$. Первые две строки одинаковы: $2x_2=0 \Rightarrow x_2=0$. Третья строка: $2x_1-4x_2+x_3=0 \Rightarrow 2x_1+x_3=0 \Rightarrow x_3=-2x_1$. При $x_1=1$: $v_1=(1,0,-2)^T$.

Для $\lambda_2=2$: $A-2I=\begin{pmatrix}-1&2&0\\0&1&0\\2&-4&0\end{pmatrix}$. Вторая строка даёт $x_2=0$, первая — $-x_1+2x_2=0 \Rightarrow x_1=0$. Третья строка при этом автоматически выполнена. $x_3$ свободна: $v_2=(0,0,1)^T$.

Для $\lambda_3=3$: $A-3I=\begin{pmatrix}-2&2&0\\0&0&0\\2&-4&-1\end{pmatrix}$. Первая строка: $-2x_1+2x_2=0 \Rightarrow x_1=x_2$. Третья строка: $2x_1-4x_2-x_3=0$, подставляя $x_1=x_2$: $-2x_2-x_3=0 \Rightarrow x_3=-2x_2$. При $x_2=1$: $v_3=(1,1,-2)^T$.

Шаг 3. Все три собственных значения различны, значит $m_a=m_g=1$ для каждого автоматически (кратный корень не встретился, проверять ранг на дефицит не нужно).

Шаг 4.

$$P = \begin{pmatrix} 1 & 0 & 1 \\ 0 & 0 & 1 \\ -2 & 1 & -2 \end{pmatrix}, \qquad D = \begin{pmatrix} 1&0&0\\0&2&0\\0&0&3 \end{pmatrix}$$

Шаг 5. Считаем $P^{-1}$ через присоединённую матрицу. Сначала $\det P$: раскладываем по второй строке $(0,0,1)$ — единственный ненулевой элемент даёт

$$\det P = 1 \cdot (-1)^{2+3}\det\begin{pmatrix}1&0\\-2&1\end{pmatrix} = -1\cdot(1) = -1$$

Определитель ненулевой — это независимое подтверждение того, что $P$ обратима, а значит, векторы действительно независимы. Считаем миноры и кофакторы для всех девяти позиций:

$$C_{11}=\begin{vmatrix}0&1\\1&-2\end{vmatrix}=-1,\ C_{12}=-\begin{vmatrix}0&1\\-2&-2\end{vmatrix}=-2,\ C_{13}=\begin{vmatrix}0&0\\-2&1\end{vmatrix}=0$$$$C_{21}=-\begin{vmatrix}0&1\\1&-2\end{vmatrix}=1,\ C_{22}=\begin{vmatrix}1&1\\-2&-2\end{vmatrix}=0,\ C_{23}=-\begin{vmatrix}1&0\\-2&1\end{vmatrix}=-1$$$$C_{31}=\begin{vmatrix}0&1\\0&1\end{vmatrix}=0,\ C_{32}=-\begin{vmatrix}1&1\\0&1\end{vmatrix}=-1,\ C_{33}=\begin{vmatrix}1&0\\0&0\end{vmatrix}=0$$

Присоединённая матрица — транспонированная матрица кофакторов:

$$\operatorname{adj}(P) = \begin{pmatrix} -1&1&0\\-2&0&-1\\0&-1&0 \end{pmatrix}$$$$P^{-1} = \frac{1}{\det P}\operatorname{adj}(P) = \frac{1}{-1}\begin{pmatrix} -1&1&0\\-2&0&-1\\0&-1&0 \end{pmatrix} = \begin{pmatrix} 1&-1&0\\2&0&1\\0&1&0 \end{pmatrix}$$

Быстрая проверка: строка 2 матрицы $P$ есть $(0,0,1)$, а столбец 2 матрицы $P^{-1}$ есть $(-1,0,1)^T$; их произведение по определению должно дать элемент $(2,2)$ единичной матрицы — и действительно, $0\cdot(-1)+0\cdot 0+1\cdot 1=1$. Полную проверку $PP^{-1}=I$ можно провести аналогично по всем девяти позициям.

Шаг 6. Собираем $PDP^{-1}$. Сначала $PD$ — масштабируем столбцы $P$ на $1$, $2$, $3$ соответственно:

$$PD = \begin{pmatrix} 1&0&3\\0&0&3\\-2&2&-6 \end{pmatrix}$$

Теперь умножаем на $P^{-1}$ построчно.

Строка 1: $(1,0,3)$ на столбцы $P^{-1}=\big[(1,2,0)^T,\ (-1,0,1)^T,\ (0,1,0)^T\big]$: $1\cdot1+0\cdot2+3\cdot0=1$; $1\cdot(-1)+0\cdot0+3\cdot1=2$; $1\cdot0+0\cdot1+3\cdot0=0$. Строка $(1,2,0)$.

Строка 2: $(0,0,3)$: $0$; $0\cdot(-1)+0\cdot0+3\cdot1=3$; $0$. Строка $(0,3,0)$.

Строка 3: $(-2,2,-6)$: $-2\cdot1+2\cdot2+(-6)\cdot0=2$; $-2\cdot(-1)+2\cdot0+(-6)\cdot1=2-6=-4$; $-2\cdot0+2\cdot1+(-6)\cdot0=2$. Строка $(2,-4,2)$.

$$PDP^{-1} = \begin{pmatrix} 1&2&0\\0&3&0\\2&-4&2 \end{pmatrix} = A \checkmark$$

Совпадение поэлементное — диагонализация подтверждена от начала и до конца.

Почему это важно

Этот пример проведён полностью, включая шаг, который чаще всего пропускают в учебных решениях, — явное вычисление $P^{-1}$ и финальную проверку. Именно на вычислении присоединённой матрицы и знаках кофакторов совершается больше всего арифметических ошибок во всей теме, и без финальной проверки $PDP^{-1}=A$ такая ошибка остаётся незамеченной.

Вычисление степеней матрицы: $A^k = PD^kP^{-1}$

Интуиция

Наивное вычисление $A^{100}$ — это 99 последовательных умножений матриц $n\times n$, каждое стоимостью порядка $n^3$ операций. Диагонализация меняет расклад радикально: если $A=PDP^{-1}$ уже найдено, то

$$A^k = \underbrace{(PDP^{-1})(PDP^{-1})\cdots(PDP^{-1})}_{k \text{ раз}} = PD\underbrace{(P^{-1}P)}_{=I}D\underbrace{(P^{-1}P)}_{=I}\cdots DP^{-1} = PD^kP^{-1}$$

Каждая внутренняя пара $P^{-1}P$ схлопывается в единичную матрицу, и от произведения остаётся ровно два умножения на $P$ и $P^{-1}$ по краям, а в середине — $D^k$. А степень диагональной матрицы считается покоординатно: если $D=\operatorname{diag}(\lambda_1,\dots,\lambda_n)$, то

$$D^k = \operatorname{diag}(\lambda_1^k,\dots,\lambda_n^k)$$

потому что при перемножении двух диагональных матриц соответствующие элементы просто перемножаются, а внедиагональные нули остаются нулями. Итог: вместо $k-1$ матричных умножений — два матричных умножения (одни и те же при любом $k$) и $n$ возведений чисел в степень.

Следствие. Если $A=PDP^{-1}$, то для любого целого $k$ (включая отрицательные, если $A$ обратима) выполнено $A^k = PD^kP^{-1}$, где $D^k=\operatorname{diag}(\lambda_1^k,\dots,\lambda_n^k)$.

Пример 4 (марковская цепь: погода через пять дней)

Пусть вероятность солнечного дня после солнечного равна $0{,}9$, после дождливого — $0{,}5$; вероятность дождя после солнечного дня — $0{,}1$, после дождливого — $0{,}5$. Матрица переходов (столбец — состояние сегодня, строка — состояние завтра):

$$A = \begin{pmatrix} 0{,}9 & 0{,}5 \\ 0{,}1 & 0{,}5 \end{pmatrix}$$

Каждый столбец суммируется в единицу — это стохастическая матрица, и для таких матриц число $1$ всегда входит в спектр (проверим прямо сейчас, а не примем на веру).

$\operatorname{tr} A = 1{,}4$, $\det A = 0{,}45-0{,}05=0{,}4$. Характеристический многочлен $\lambda^2-1{,}4\lambda+0{,}4=0$, дискриминант $1{,}96-1{,}6=0{,}36$, корень $0{,}6$. Отсюда $\lambda_1=\dfrac{1{,}4+0{,}6}{2}=1$, $\lambda_2=\dfrac{1{,}4-0{,}6}{2}=0{,}4$.

Для $\lambda_1=1$: $A-I=\begin{pmatrix}-0{,}1&0{,}5\\0{,}1&-0{,}5\end{pmatrix}$, уравнение $-0{,}1x_1+0{,}5x_2=0 \Rightarrow x_1=5x_2$. Берём $v_1=(5,1)^T$.

Для $\lambda_2=0{,}4$: $A-0{,}4I=\begin{pmatrix}0{,}5&0{,}5\\0{,}1&0{,}1\end{pmatrix}$, уравнение $x_1=-x_2$. Берём $v_2=(1,-1)^T$.

$$P=\begin{pmatrix}5&1\\1&-1\end{pmatrix}, \qquad D=\begin{pmatrix}1&0\\0&0{,}4\end{pmatrix}, \qquad \det P = -6$$$$P^{-1} = \frac{1}{-6}\begin{pmatrix}-1&-1\\-1&5\end{pmatrix} = \begin{pmatrix}1/6&1/6\\1/6&-5/6\end{pmatrix}$$

Хотим узнать распределение погоды через пять дней: считаем $A^5=PD^5P^{-1}$. Здесь $D^5=\operatorname{diag}(1^5,\ 0{,}4^5)=\operatorname{diag}(1,\ 0{,}01024)$ — единственная нетривиальная арифметика во всём вычислении, никакого пятикратного перемножения матриц.

$$PD^5 = \begin{pmatrix}5 & 0{,}01024\\1&-0{,}01024\end{pmatrix}$$$$A^5 = PD^5P^{-1} \approx \begin{pmatrix} 0{,}83504 & 0{,}82480 \\ 0{,}16496 & 0{,}17520 \end{pmatrix}$$

Проверка на здравый смысл: каждый столбец должен суммироваться в единицу (это по-прежнему стохастическая матрица) — $0{,}83504+0{,}16496=1$ и $0{,}82480+0{,}17520=1$, сходится.

Устреми $k\to\infty$: слагаемое с $\lambda_2^k=0{,}4^k$ стремится к нулю, и $A^k \to P\operatorname{diag}(1,0)P^{-1}$ — предельная матрица, в обоих столбцах которой стоит одно и то же стационарное распределение, пропорциональное $v_1=(5,1)$, то есть $(5/6,\ 1/6)\approx(0{,}833,\ 0{,}167)$. Это ровно тот же ответ, который в уроке 172 находился степенным методом, — здесь он получен точной формулой, а не итерациями.

Числа Фибоначчи: ещё один классический пример

В 1843 году Жак Филипп Мари Бине вывел явную формулу для чисел Фибоначчи, хотя матриц в современном виде тогда не существовало — по сути он продиагонализовал линейную рекуррентность. Сделаем это на языке матриц: рекуррентность $F_{n+1}=F_n+F_{n-1}$ переписывается как

$$\begin{pmatrix}F_{n+1}\\F_n\end{pmatrix} = A\begin{pmatrix}F_n\\F_{n-1}\end{pmatrix}, \qquad A=\begin{pmatrix}1&1\\1&0\end{pmatrix}$$

$\operatorname{tr}A=1$, $\det A=-1$, характеристическое уравнение $\lambda^2-\lambda-1=0$ даёт золотое сечение $\varphi=\dfrac{1+\sqrt5}{2}$ и его сопряжённое $\psi=\dfrac{1-\sqrt5}{2}$. Раскладывая начальный вектор $(F_1,F_0)=(1,0)$ по собственному базису $A$ и применяя $A^n=PD^nP^{-1}$, вторая координата $A^n(1,0)^T$ даёт знаменитую формулу Бине:

$$F_n = \frac{\varphi^n - \psi^n}{\sqrt5}$$

Удивительный факт этой формулы в том, что $\varphi$ и $\psi$ иррациональны, а их комбинация при любом целом $n$ даёт ровно целое число — потому что мнимая и иррациональная части двух собственных значений устроены так, что при вычитании степеней всё, кроме целочисленной части, взаимно уничтожается.

Почему это важно

Формула $A^k=PD^kP^{-1}$ — это не просто вычислительный трюк, а прямое объяснение того, почему в принципе работает степенной метод и PageRank из урока 172: любой начальный вектор раскладывается по собственному базису, при возведении в степень доминирует слагаемое с наибольшим по модулю $\lambda$, а скорость, с которой остальные слагаемые исчезают, определяется отношением $|\lambda_2/\lambda_1|$ — тем самым отношением, которое в прошлом уроке управляло скоростью сходимости итераций.

Недиагонализуемые (дефектные) матрицы

Интуиция

Что происходит, если собственных векторов на самом деле меньше, чем $n$? Конструкция ломается не абстрактно, а буквально механически: столбцов для $P$ не хватает, и заполнить недостающие честно нечем.

Возьмём простейший пример — жорданову клетку:

$$J = \begin{pmatrix} 2 & 1 \\ 0 & 2 \end{pmatrix}$$

Характеристический многочлен: $(2-\lambda)^2=0$, единственное собственное значение $\lambda=2$ с алгебраической кратностью $m_a=2$. Ищем собственные векторы: $J-2I=\begin{pmatrix}0&1\\0&0\end{pmatrix}$, ранг равен 1, значит $m_g = 2-1=1$. Уравнение $0\cdot x_1+1\cdot x_2=0$ даёт $x_2=0$, $x_1$ свободна — единственное независимое направление $v=(1,0)^T$. Второго независимого собственного вектора не существует: $m_g=1 < 2 = m_a$, критерий из предыдущего раздела нарушен. Матрица $J$ не диагонализируема.

Обрати внимание, что дело не в самом повторяющемся собственном значении. Матрица $2I=\begin{pmatrix}2&0\\0&2\end{pmatrix}$ тоже имеет $\lambda=2$ с кратностью 2 — и при этом она уже диагональна, $P=I$ подходит без всяких усилий, а собственным является вообще любой ненулевой вектор плоскости. Ломает диагонализуемость не повторение $\lambda$ само по себе, а единица над диагональю в $J$: она «подмешивает» вторую координату в развитие первой, и именно это подмешивание не оставляет места для второго независимого направления.

Что происходит со степенями дефектной матрицы

Раз $J$ не диагонализуема, формулой $J^k=PD^kP^{-1}$ пользоваться нельзя — придётся считать степени напрямую. По индукции нетрудно проверить формулу

$$J^k = \begin{pmatrix} 2^k & k\cdot2^{k-1} \\ 0 & 2^k \end{pmatrix}$$

База $k=1$ совпадает с самой $J$. Переход: $J^{k+1}=J^k\cdot J = \begin{pmatrix}2^k&k2^{k-1}\\0&2^k\end{pmatrix}\begin{pmatrix}2&1\\0&2\end{pmatrix} = \begin{pmatrix}2^{k+1}&2^k+2k2^{k-1}\\0&2^{k+1}\end{pmatrix} = \begin{pmatrix}2^{k+1}&(k+1)2^k\\0&2^{k+1}\end{pmatrix}$ — формула подтверждена для $k+1$.

Это принципиально другой характер роста. У диагонализуемой матрицы каждая запись $A^k$ — это сумма слагаемых вида $c\cdot\lambda_i^k$, чистая экспонента. У дефектной матрицы в недиагонализуемом блоке появляется дополнительный множитель $k$ — рост не просто экспоненциальный, а «экспонента, умноженная на степень $k$». Внешне незаметная разница, но именно она отличает устойчивые динамические системы от систем на грани неустойчивости, где решения растут чуть быстрее, чем кажется на первый взгляд.

Что делать, если матрица дефектна

Полной диагональной формы у дефектной матрицы нет, но есть следующая по простоте вещь — жорданова нормальная форма, названная в честь Камиля Жордана (см. историю урока). Она представляет матрицу как $A=SJS^{-1}$, где $J$ уже не диагональна, а состоит из «жордановых клеток» вроде той, что мы только что разобрали, — блоков с собственным значением на диагонали и единицами непосредственно над ней. Формулы для $A^k$ через жорданову форму существуют, но требуют аппарата, который выходит за рамки этого урока; главное, что нужно унести отсюда, — дефектность не тупик, а просто более сложный случай той же самой идеи.

И ещё раз главная хорошая новость: симметричные матрицы дефектными не бывают никогда (следствие 2 из раздела про критерий диагонализуемости). Ковариационные матрицы, матрицы Грама, гессианы гладких функций — всё это симметричные матрицы по построению, и для них вопрос «а вдруг не хватит собственных векторов» не встаёт вообще.

Почему это важно

Матрицы, которые встречаются на практике «случайно» — с параметрами, оценёнными по данным, — почти никогда не оказываются в точности дефектными: совпадение собственных значений требует точного алгебраического совпадения, а не просто «похожих» чисел. Куда более частая практическая проблема — это матрица, которая формально диагонализуема, но близка к дефектной: два собственных значения почти равны, и матрица перехода $P$ почти вырождена. Численно это выглядит как большая обусловленность $P$ (урок 166) и приводит к неустойчивым, «шумным» собственным векторам при вычислении на компьютере — сигнал, который стоит уметь распознавать в выводе numpy.linalg.eig.

Диагонализация в машинном обучении

PCA: диагонализация ковариационной матрицы. Ковариационная матрица $\Sigma$ всегда симметрична, а значит, по следствию 2, всегда диагонализуема: $\Sigma=PDP^{-1}$, где столбцы $P$ — главные компоненты, а диагональ $D$ — дисперсии вдоль них (урок 172 разбирал это как факт про собственные значения; здесь это тот же факт, упакованный в явное разложение). Практическое следствие диагонализации: некоторые регуляризованные оценки ковариации требуют вычисления $\Sigma^k$ или $\Sigma^{-1/2}$ — и то и другое считается мгновенно через $D^k$ или $D^{-1/2}$, без единого лишнего умножения матриц.

PageRank и степенной метод: почему он вообще сходится. В уроке 172 степенной метод был представлен как рецепт «умножай на вектор и нормируй», а сходимость к доминирующему собственному вектору принималась почти на веру. Теперь у неё есть строгое обоснование: если начальный вектор $x_0$ разложить по собственному базису, $x_0=c_1v_1+\dots+c_nv_n$, то $A^kx_0 = c_1\lambda_1^kv_1+\dots+c_n\lambda_n^kv_n$ — прямое следствие $A^k=PD^kP^{-1}$, применённого к вектору. Если $\lambda_1$ — наибольшее по модулю собственное значение, все остальные слагаемые затухают относительно него как $(\lambda_i/\lambda_1)^k$, и $A^kx_0$ выравнивается вдоль $v_1$. Для PageRank $\lambda_1=1$ (столбцы стохастической матрицы суммируются в единицу — мы проверили это явно в примере с погодой), и предел — это в точности собственный вектор с $\lambda=1$, то есть вектор PageRank.

Матричная экспонента и непрерывные модели. Для диагонализуемой $A$ определена матричная экспонента $e^{At}=Pe^{Dt}P^{-1}$, где $e^{Dt}=\operatorname{diag}(e^{\lambda_1t},\dots,e^{\lambda_nt})$ — прямой аналог $D^k$ для непрерывного времени. Она используется в непрерывных марковских моделях, в теории управления для анализа устойчивости линейных систем и в некоторых архитектурах нейросетей, где скрытое состояние эволюционирует непрерывно (neural ODE).

Графы и спектральная кластеризация. Быстрое вычисление больших степеней матрицы переходов через диагонализацию лежит в основе алгоритмов на графах, использующих случайные блуждания для построения векторных представлений вершин, а спектральная кластеризация использует собственные векторы матрицы Лапласа графа — родственную, тоже симметричную и потому всегда диагонализуемую конструкцию.

Практика: 30 заданий

Базовые задания (1–10)

Задание 1: Диагонализируй матрицу

$$A = \begin{pmatrix} 4 & 2 \\ 3 & 3 \end{pmatrix}$$

Задание 2: Диагонализируй матрицу

$$A = \begin{pmatrix} 0 & 1 \\ -2 & 3 \end{pmatrix}$$

Задание 3: Диагонализируй симметричную матрицу

$$A = \begin{pmatrix} 6 & -2 \\ -2 & 3 \end{pmatrix}$$

Задание 4: Диагонализируй матрицу

$$A = \begin{pmatrix} 2 & 3 \\ 2 & 1 \end{pmatrix}$$

Задание 5: Диагонализируй матрицу

$$A = \begin{pmatrix} 1 & 4 \\ 1 & 1 \end{pmatrix}$$

Задание 6: Диагонализируема ли матрица

$$A = \begin{pmatrix} 3 & 1 \\ 0 & 3 \end{pmatrix}?$$

Задание 7: Диагонализируй треугольную матрицу

$$A = \begin{pmatrix} -1 & 3 \\ 0 & 4 \end{pmatrix}$$

Задание 8: Диагонализируема ли матрица

$$A = \begin{pmatrix} 7 & -4 \\ 4 & -1 \end{pmatrix}?$$

Задание 9: Диагонализируй матрицу и проверь полное равенство $A=PDP^{-1}$

$$A = \begin{pmatrix} 7 & 2 \\ -4 & 1 \end{pmatrix}$$

Задание 10: Диагональна ли уже матрица $A=\begin{pmatrix}-3&0\\0&7\end{pmatrix}$, и что в этом случае представляют собой $P$ и $D$?


Средние задания (11–20)

Задание 11: Диагонализируй матрицу

$$A = \begin{pmatrix} 3 & 0 & 0 \\ 0 & 1 & 2 \\ 0 & 2 & 1 \end{pmatrix}$$

Задание 12: Диагонализируема ли матрица

$$A = \begin{pmatrix} 4 & 1 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 2 \end{pmatrix}?$$

Задание 13: Диагонализируй симметричную матрицу

$$A = \begin{pmatrix} 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \end{pmatrix}$$

Задание 14: Используя диагонализацию из задания 1 ($A=\begin{pmatrix}4&2\\3&3\end{pmatrix}$, $\lambda_1=6$, $\lambda_2=1$, $P=\begin{pmatrix}1&2\\1&-3\end{pmatrix}$), вычисли $A^{-1}$.


Задание 15: Используя диагонализацию из основного текста ($A=\begin{pmatrix}4&1\\2&3\end{pmatrix}$, $\lambda_1=5$, $\lambda_2=2$, $P=\begin{pmatrix}1&1\\1&-2\end{pmatrix}$, $P^{-1}=\begin{pmatrix}2/3&1/3\\1/3&-1/3\end{pmatrix}$), вычисли $A^4$.


Задание 16: Вычисли $A^3$ для матрицы из задания 11 ($A=\begin{pmatrix}3&0&0\\0&1&2\\0&2&1\end{pmatrix}$, $D=\operatorname{diag}(3,3,-1)$, $P=\begin{pmatrix}1&0&0\\0&1&1\\0&1&-1\end{pmatrix}$).


Задание 17: При каком значении параметра $t$ матрица $A=\begin{pmatrix}2&t\\0&2\end{pmatrix}$ диагонализируема?


Задание 18: Дано $P=\begin{pmatrix}2&1\\1&1\end{pmatrix}$ и $D=\begin{pmatrix}4&0\\0&-1\end{pmatrix}$. Найди матрицу $A=PDP^{-1}$.


Задание 19: Диагонализируй симметричную сингулярную матрицу

$$A = \begin{pmatrix} 1 & 1 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 2 \end{pmatrix}$$

Задание 20: Диагонализируема ли матрица

$$A = \begin{pmatrix} 2 & 0 & 0 \\ 1 & 2 & 0 \\ 0 & 1 & 2 \end{pmatrix}?$$

Продвинутые задания (21–30)

Задание 21: Докажи, что если $A$ диагонализуема, $A=PDP^{-1}$, и $x_0=c_1v_1+\dots+c_nv_n$ — разложение вектора по собственному базису, то $A^kx_0=c_1\lambda_1^kv_1+\dots+c_n\lambda_n^kv_n$ для любого $k$.


Задание 22: Модель переходов пользователей: $A=\begin{pmatrix}0{,}7&0{,}4\\0{,}3&0{,}6\end{pmatrix}$ (столбец — состояние сегодня). Найди стационарное распределение и явную формулу для распределения через $n$ шагов, если начальное состояние $x_0=(1,0)^T$.


Задание 23: Для матрицы погоды из основного текста ($A=\begin{pmatrix}0{,}9&0{,}5\\0{,}1&0{,}5\end{pmatrix}$, $\lambda_1=1$, $\lambda_2=0{,}4$, $P=\begin{pmatrix}5&1\\1&-1\end{pmatrix}$, $P^{-1}=\begin{pmatrix}1/6&1/6\\1/6&-5/6\end{pmatrix}$) найди явную формулу для $A^n$ и проверь её при $n=1$.


Задание 24: Найди PageRank-вектор (собственный вектор с $\lambda=1$) для графа из трёх страниц с матрицей переходов

$$A = \begin{pmatrix} 0 & 0{,}5 & 1 \\ 0{,}5 & 0 & 0 \\ 0{,}5 & 0{,}5 & 0 \end{pmatrix}$$

Задание 25: Докажи: если $A$ диагонализуема и обратима, то $A^{-1}$ тоже диагонализуема, с теми же собственными векторами и собственными значениями $1/\lambda_i$.


Задание 26: Докажи, что для диагонализуемой матрицы $A$ с собственными значениями $\lambda_1,\dots,\lambda_n$ выполнено $\operatorname{tr}(A^k)=\lambda_1^k+\dots+\lambda_n^k$ при любом целом $k\ge0$.


Задание 27: Для жордановой клетки $J=\begin{pmatrix}3&1\\0&3\end{pmatrix}$ найди явную формулу для $J^n$ (по аналогии с примером в основном тексте) и вычисли $J^4$.


Задание 28: Для матрицы $A=\begin{pmatrix}1&a\\0&1\end{pmatrix}$ с параметром $a$ определи, при каком $a$ она диагонализуема, и найди $A^n$ в общем случае.


Задание 29: Дана ковариационная матрица двух признаков $\Sigma=\begin{pmatrix}4&2\\2&4\end{pmatrix}$. Объясни, почему она гарантированно диагонализуема, найди главные компоненты (собственные векторы) и дисперсии вдоль них, и запиши формулу для $\Sigma^k$.


Задание 30: Для матрицы диффузии $A=\begin{pmatrix}2&1\\1&2\end{pmatrix}$ найди $A^n$ в общем виде (символьно по $n$) и вычисли предел $\dfrac{1}{3^n}A^n$ при $n\to\infty$.


Частые ошибки

Ошибка 1. Думают, что любая квадратная матрица диагонализируема.

Как выглядит: при кратном корне характеристического многочлена сразу пишут $n$ собственных векторов, не проверяя ранг $A-\lambda I$, — а если вектора не хватает, «дособирают» его произвольно.

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

Как правильно: для каждого повторяющегося корня обязательно считать геометрическую кратность через ранг и сравнивать с алгебраической. Если хотя бы один раз $m_g

Ошибка 2. Путают порядок столбцов $P$ и элементов $D$.

Как выглядит: собственные векторы записаны в $P$ в одном порядке, а на диагональ $D$ их значения поставлены в другом.

Почему возникает: векторы и числа хранятся в голове или на черновике как два отдельных списка и сшиваются в конце по памяти.

Как правильно: $v_i$ должен быть $i$-м столбцом $P$ ровно тогда, когда $\lambda_i$ стоит $i$-м на диагонали $D$. Надёжнее всего записывать их сразу парами: нашёл $\lambda$ и его вектор — сразу вписал оба на подобающее место.

Ошибка 3. Считают, что $P$ обязана быть ортогональной или что собственные векторы нужно нормировать.

Как выглядит: тратят время на деление каждого собственного вектора на его длину «для аккуратности», прежде чем строить $P$.

Почему возникает: путают диагонализацию общего вида с ортогональной диагонализацией симметричных матриц (урок 175), где $P$ действительно берут ортонормированной.

Как правильно: для равенства $A=PDP^{-1}$ годится любой ненулевой скалярный множитель у каждого столбца $P$ — важна только линейная независимость столбцов, не их длина. Нормировка нужна лишь тогда, когда отдельно требуется ортогональная матрица.

Ошибка 4. При вычислении $A^k$ путают $D^k$ с $kD$.

Как выглядит: пишут $D^3=3D$ вместо $\operatorname{diag}(\lambda_1^3,\lambda_2^3,\dots)$.

Почему возникает: визуальное сходство записи степени и умножения на число.

Как правильно: для диагональной матрицы $D^k$ получается возведением в степень $k$ каждого числа на диагонали по отдельности — это прямое следствие того, что при перемножении диагональных матриц соответствующие элементы просто перемножаются, а не складываются.

Ошибка 5. Проверяют только $Av_i=\lambda_iv_i$ для каждого вектора и считают диагонализацию завершённой, не вычисляя $P^{-1}$.

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

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

Как правильно: сама диагонализация — это конкретное разложение $A=PDP^{-1}$, а не факт существования собственных векторов (это была тема прошлого урока). Если просят именно диагонализовать матрицу, нужно явно выписать $P^{-1}$ и в идеале перемножить всё обратно, как в примерах 1 и 3.

Ошибка 6. Для дефектной матрицы всё равно пытаются «дособрать» $P$ до квадратной и невырожденной.

Как выглядит: не хватает одного собственного вектора — берут произвольный вектор, не лежащий в $\ker(A-\lambda I)$, лишь бы столбцов было ровно $n$.

Почему возникает: желание довести задачу до какого-то ответа любой ценой.

Как правильно: такая $P$ может оказаться невырожденной, но равенство $AP=PD$ для «чужого» столбца не выполнится, и вся конструкция развалится при проверке. Единственный честный ответ для дефектной матрицы — «не диагонализируема», при необходимости — с указанием жордановой формы.

Ошибка 7. Полагают, что комплексные собственные значения сами по себе запрещают диагонализацию.

Как выглядит: найдя $\lambda=a\pm bi$ (например, у матрицы поворота), сразу пишут «не диагонализируема».

Почему возникает: путают «нет вещественной диагонализации» с «нет диагонализации вообще».

Как правильно: над полем комплексных чисел матрица с $n$ различными собственными значениями (пусть и комплексными) диагонализуема — просто $P$ и $D$ будут комплексными. Препятствием служит не сам факт комплексности, а исключительно нехватка независимых собственных векторов при повторяющемся корне.

Главное запомнить

  • Диагонализация — это представление $A=PDP^{-1}$, где столбцы $P$ — собственные векторы, диагональ $D$ — отвечающие им собственные значения в том же порядке.

  • Матрица диагонализируема тогда и только тогда, когда у неё есть $n$ линейно независимых собственных векторов, то есть $m_g(\lambda)=m_a(\lambda)$ для каждого собственного значения.

  • Если у матрицы $n$ различных собственных значений, она диагонализируема автоматически — независимость векторов разных $\lambda$ гарантирована уроком 172.

  • Симметричные матрицы диагонализируемы всегда, вне зависимости от кратностей — полное доказательство впереди, в уроке 175 (спектральная теорема).

  • Алгоритм: характеристический многочлен → корни → для каждого $\lambda$ решить $(A-\lambda I)x=0$ и найти ФСР → сравнить геометрическую и алгебраическую кратности → собрать $P$ и $D$ → вычислить $P^{-1}$ → проверить $AP=PD$.

  • Степени матрицы считаются мгновенно: $A^k=PD^kP^{-1}$, где $D^k$ — поэлементное возведение диагональных элементов в степень $k$. Это главная практическая причина, ради которой диагонализацию вообще стоит проводить.

  • Дефектная (недиагонализуемая) матрица — та, где для какого-то $\lambda$ не хватает собственных векторов ($m_g

  • $P$ не обязана быть ортогональной или содержать нормированные векторы — важна только линейная независимость столбцов. Порядок векторов в $P$ и чисел в $D$ должен быть согласован.

  • Сходимость степенного метода и PageRank строго объясняется диагонализацией: начальный вектор раскладывается по собственному базису, и при возведении в степень все слагаемые, кроме отвечающего наибольшему по модулю $\lambda$, затухают.

  • В ML: диагонализация ковариационной матрицы — это PCA, диагонализация матрицы переходов лежит в основе анализа марковских цепей и PageRank, а матричная экспонента через диагонализацию используется в непрерывных динамических моделях.

Связь с другими темами курса

Что нужно было знать до этого урока

Урок целиком опирается на уже пройденную технику. Из урока 157 — умножение матрицы на матрицу столбец за столбцом, на котором держится вывод $AP=PD$. Из урока 161 — обращение матрицы и правило обращения произведения в обратном порядке, использованное при выводе $A^{-1}=PD^{-1}P^{-1}$. Из урока 162 — ранг, которым проверяется геометрическая кратность. Из уроков 163–164 — метод Гаусса, на котором решаются системы $(A-\lambda I)x=0$. Из урока 167 — критерий существования нетривиального решения однородной системы, ядро и ФСР. Из уроков 169–170 — линейная независимость и базис, гарантирующие обратимость $P$. Из урока 171 — подобие матриц $C^{-1}AC$ и инварианты (след, определитель), использованные в проверках ответов. И, конечно, из урока 172 целиком — собственные значения и векторы, характеристическое уравнение, алгебраическая и геометрическая кратности, свойства спектра $A^k$ и $A^{-1}$, а также степенной метод, чья сходимость в этом уроке получила строгое обоснование.

Что изучить дальше

Урок 174 «Квадратичные формы» использует диагонализацию симметричной матрицы формы, чтобы привести квадратичную форму к каноническому виду и определить её знакоопределённость — тот самый инструмент, который в оптимизации отличает минимум от седловой точки по гессиану. Урок 175 «Евклидово пространство» доказывает спектральную теорему — усиленную версию факта, принятого в этом уроке без доказательства: у симметричной матрицы собственные векторы можно выбрать не просто независимыми, а взаимно ортогональными и единичной длины, и тогда $P$ становится ортогональной матрицей, а $P^{-1}=P^T$. Дальше по курсу — сингулярное разложение (SVD), обобщающее диагонализацию на прямоугольные (в том числе несимметричные и недиагонализуемые) матрицы, и жорданова нормальная форма — полная теория для случая, который в этом уроке был обозначен лишь на примере одной клетки.

Где это нужно в жизни

💻 Программирование. numpy.linalg.eig возвращает $P$ и $D$ напрямую; scipy.linalg.expm вычисляет матричную экспоненту, для диагонализуемых матриц сводящуюся к $Pe^{D}P^{-1}$. При известном заранее спектре явное вычисление $PD^kP^{-1}$ зачастую быстрее и устойчивее встроенного numpy.linalg.matrix_power для больших $k$. В компьютерной графике декомпозиция матрицы трансформации на собственные направления используется для плавной интерполяции анимаций.

🤖 ML/AI. PCA — это диагонализация ковариационной матрицы; сходимость PageRank и степенного метода строго объясняется разложением по собственному базису; спектральная нормализация весов в GAN опирается на то, что наибольшее по модулю собственное значение управляет ростом $A^k$; устойчивость рекуррентных сетей анализируется через то же самое — если $|\lambda_{\max}|>1$, скрытое состояние растёт пропорционально $\lambda_{\max}^k$.

📊 Data Science. Марковские модели пользовательского поведения (переходы между шагами воронки продаж) — распределение через $k$ шагов считается диагонализацией, а не $k$ умножениями; проверка стационарности AR-процесса через спектральный радиус матрицы авторегрессии; регуляризованные оценки ковариации, где нужна степень или корень матрицы.

🔬 Наука. Нормальные моды колебаний (идея Якоби, см. историю урока) — от молекулярной спектроскопии до расчёта резонансов зданий и мостов; диагонализация гамильтониана в квантовой механике даёт стационарные состояния и уровни энергии; в химической кинетике диагонализация матрицы констант скоростей реакций даёт явную формулу для концентраций во времени.

💰 Финансы. Марковские модели кредитных рейтингов: матрица переходов между рейтинговыми категориями диагонализуется, чтобы посчитать распределение рейтингов портфеля через много лет вперёд без итеративного перемножения матриц; похожая техника применяется в актуарных расчётах к моделям смертности и страховых состояний.

Интересные факты

  • Дефектные матрицы — редкость в куда более строгом смысле, чем кажется: множество недиагонализуемых матриц имеет меру нуль среди всех квадратных матриц заданного порядка. Дефектность требует точного алгебраического совпадения собственных значений плюс специальной структуры внедиагональных элементов, а «случайно взятая» матрица (с коэффициентами из непрерывного распределения) почти никогда не удовлетворяет этому условию. На практике дефектные матрицы почти всегда конструируют специально, а не встречают случайно.

  • Формула Бине для чисел Фибоначчи (1843) появилась за пятнадцать лет до того, как Кэли формализовал понятие матрицы, — Бине фактически продиагонализовал линейную рекуррентность, не имея для этого современного языка. Похожий приём независимо использовали Абрахам де Муавр ещё в 1730-х для других линейных рекуррентностей, и в этом смысле диагонализация как техника решения рекуррентных соотношений старше самой матричной алгебры.

  • Диагонализуемость не имеет никакого отношения к тому, вещественны собственные значения или комплексны. Матрица поворота плоскости на угол, отличный от 0° и 180°, не имеет вещественных собственных значений (урок 172), но диагонализуема над полем комплексных чисел — у неё два различных комплексно-сопряжённых собственных значения и, соответственно, диагонализуемость гарантирована тем же следствием 1, что и для вещественного случая.

  • Google никогда не вычисляет явную диагонализацию для PageRank — матрица переходов интернета имеет триллионы строк и столбцов, и хранить $P$ и $P^{-1}$ такого размера физически невозможно. Вместо этого используется степенной метод (урок 172), который приближает тот же самый предел, что дала бы точная диагонализация, ни разу не вычисляя её явно. Диагонализация здесь работает как теория, объясняющая, почему метод сходится, а не как алгоритм, который реально выполняется.

Лайфхаки и полезные трюки

  1. Проверяй различность собственных значений раньше, чем считаешь ранги. Если все $n$ корней характеристического многочлена различны, диагонализуемость уже гарантирована — не трать время на вычисление $\operatorname{rank}(A-\lambda I)$, это нужно только при повторяющихся корнях.

  2. Собирай $P$ и $D$ сразу парами, а не двумя отдельными списками «сначала все векторы, потом все числа» — это убивает самую частую техническую ошибку темы: рассинхронизацию порядка столбцов и диагональных элементов.

  3. Для проверки результата не пересчитывай $PDP^{-1}$ с нуля — сравни $AP$ и $PD$ столбец за столбцом. Это то же самое равенство, но без явного вычисления $P^{-1}$, и оно ловит ошибку так же надёжно.

  4. При выводе общей формулы для $A^n$ держи $\lambda_i^n$ символьно как можно дольше, не подставляя числа раньше времени — это особенно окупается при выводе формул вроде Бине или явной формулы марковской цепи, где итоговое выражение красивее промежуточных.

  5. Симметричная матрица — сразу зелёный свет. Увидел $A=A^T$ — можешь не проверять критерий диагонализуемости вообще: она диагонализуема при любых кратностях, это гарантировано наперёд.

  6. В коде всегда проверяй результат numpy.linalg.eig явным перемножением. Строка np.allclose(A, P @ np.diag(vals) @ np.linalg.inv(P)) ловит не только опечатки, но и численную неустойчивость: если два собственных значения почти совпадают, матрица $P$ может оказаться почти вырожденной, и расхождение в проверке — первый сигнал об этом.

Диагонализация закрывает круг, начатый ещё в первых уроках о линейных преобразованиях: у каждой ли матрицы есть «естественный» базис, в котором она устроена предельно просто? Ответ — не у каждой, но у подавляющего большинства, и награда за поиск этого базиса огромна: сложное преобразование превращается в набор независимых растяжений, а любая его степень считается мгновенно. Держи в голове главный практический вывод: прежде чем умножать матрицу на себя сто раз, спроси, нельзя ли её продиагонализовать, — скорее всего, можно, и это сэкономит и время, и вычисления. В следующем уроке мы возьмём ту диагонализацию, которая работает для любой симметричной матрицы без исключений, и применим её к квадратичным формам — а оттуда рукой подать до PCA в его полном, строгом виде.

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!