МатВектор

Command Palette

Search for a command to run...

🔢 Численные методы30 минСложность 3/5+60 XP

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

Степенной метод: итерации с умножением на матрицу выдают максимальное по модулю собственное число и вектор. Ручной прогон, Рэлей, сдвиги, обратный метод.

5 интерактива3 квизаУрок 10 из 11Обновлено 05.10.2026Обычный

У Google миллиарды веб-страниц, и каждой нужен рейтинг важности. Рейтинг — это компоненты собственного вектора матрицы ссылок размером в миллиарды строк: PageRank — гигантский степенной метод на матрице переходов цепи Маркова, крутящийся на обычном железе. Умножай вектор на матрицу, нормируй, повторяй — и спектр сам проявится. Здесь разбираем эту идею в миниатюре: от итераций в столбик до отношения Рэлея, сдвигов и моста к QR-алгоритму.

Почему характеристический многочлен — тупик#

В курсе линейной алгебры собственные значения ищут через характеристическое уравнение: для матрицы 2×2 это квадратное уравнение, для 3×3 — кубическое. Логичный ход — продолжить и для больших матриц. Упираемся в стену: начиная с пятой степени формул корней не существует в принципе (теорема Абеля—Руффини), а характеристическое уравнение степени 1000 — это 1001 коэффициент, миллион слагаемых в старших и никакого шанса на честное решение.

Даже если многочлен как-то выписать, корни катастрофически чувствительны к коэффициентам. Классический пример Уилкинсона: у многочлена все корни — целые числа от 1 до 20. Сдвиньте коэффициент при на — и пара вещественных корней 10 и 11 превращается в комплексные . Коэффициенты характеристического многочлена считаются через определители с округлениями — спектр оказывается испорчен ещё до решения уравнения. Отсюда железное правило численной линейной алгебры: не превращай матрицу в многочлен, работай с ней напрямую.

Степенной метод: одно умножение за итерацию#

Степенной метод игнорирует многочлен целиком. Нужна одна операция — умножение матрицы на вектор. Стартуем с любого вектора и повторяем:

умножили — нормировали — и снова: вектор ползёт к главному собственному направлению

Почему это вообще работает? Разложим стартовый вектор по собственным векторам: Каждое умножение тянет из слагаемого свой множитель, и после шагов Если строго больше остальных модулей, слагаемое с обгоняет всех: нормированный вектор поворачивается к , а норма тянется к . Из каждой итерации выжимают три вещи:

  • оценка по норме: — длина вектора до нормирования
  • оценка по компонентам: — частное соответствующих компонент
  • критерий остановки: — приращение оценки застопорилось; тот же принцип, что в методе Ньютона

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

Прогоняем руками: матрица с корнями 5 и 2#

Достаточно теории — посчитаем. Берём матрицу, которую уже щупали в интерактиве:

спектр известен заранее — с ним будем сверять итерации

Собственные значения и , векторы и . Проверьте умножением: и . Отношение модулей обещает сходимость к пятёрке со скоростью «ошибка в 2,5 раза меньше за шаг». Стартуем с .

  1. Умножаем:
  2. Норма до нормирования: — первая оценка
  3. Нормируем: — направление уже развернулось от оси к биссектрисе
  4. Вторая итерация: , норма , нормируем:
  5. Угол между и — около , хотя на старте было
$k$$x_k$$\|A x_{k-1}\|$$r(x_k)$ Рэлеяугол к $v_1$
0(1; 0)—4,00045°
1(0,894; 0,447)4,4725,00018,4°
2(0,789; 0,614)5,0995,0777,1°
3(0,741; 0,672)5,0915,0422,8°
4(0,721; 0,693)5,0445,0181,1°
5(0,713; 0,702)5,0195,0080,4°
6(0,709; 0,705)5,0085,0030,2°
Шесть итераций степенного метода: вектор ползёт к (0,707; 0,707), оценки λ — к пятёрке

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

Ошибка тает в 2,5 раза за итерацию#

Скорость степенного метода зашита в спектре: ошибка примерно пропорциональна — отношению модулей первого соперника и лидера. Здесь : 0,4; 0,16; 0,064; 0,026… Углы в таблице послушно делятся на 2,5: . Перевод в знаки: при , то есть каждые два-три шага метод выигрывает один верный десятичный знак.

Медленно? По меркам Гаусса — да, но сравнение нечестное. Итерация стоит умножений для плотной матрицы, а для разреженной — числа ненулевых элементов, которых может быть вместо . Память — один вектор, . Именно поэтому метод жив на гигантских разреженных задачах, где плотные алгоритмы не помещаются ни во время, ни в диски: PageRank с демпфированием 0,85 жмёт ошибку в раз — за сотню итераций в раз, и этого хватает на весь веб.

Отношение Рэлея и сдвиг: точность и наведение#

Норма — грубая оценка собственного числа. Существует точный скалярный функционал:

отношение Рэлея: среднее растяжение матрицы в направлении x

Если отклонён от собственного вектора на угол , то ошибка — второй порядок против первого у нормы. В таблице это видно: на шаге 2 угол , и Рэлей даёт — ошибка против по норме; на шестом шаге Рэлей уже . Отношение Рэлея — это ещё и способ остановиться красиво: когда нужен с запасом точности, итерации завершают по нему, а не по норме.

Вторая работа скаляра — наведение. Матрица имеет собственные значения : векторы те же, спектр сдвинут целиком. Подбирая , можно сделать наибольшим по модулю нужное число. Пример: сдвиг даёт для матрицы-героя числа и — теперь доминирует , то есть то самое , к которому исходный метод не собирался. Бонус: отношение модулей улучшается с до — сходимость почти втрое резвее. Нашли — прибавьте сдвиг: .

Обратный степенной метод: где взять вектор#

Практика ставит задачу наоборот: приближение найдено — сдвигом, QR, из постановки задачи, — а нужен собственный вектор. Ответ изящен: итерировать с обратной матрицей. Собственные значения суть , собственные векторы — те же. Для матрицы-героя:

доминанта обратной матрицы — 0,5, это 1/2: вектор направления λ = 2

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

От степенного метода — к QR-алгоритму#

Одну мысль стоит унести с собой: возведение в степень само ищет собственные направления. Считаем степени матрицы-героя: , , . Отношение второй компоненты к первой внутри столбцов: и , затем и , затем и . Столбцы сползают друг к другу — оба поворачиваются к направлению . Матрица, возведённая в большую степень, забывает всё, кроме доминирующего направления.

QR-алгоритм — промышленное продолжение этой идеи. На каждом шаге матрицу раскладывают в произведение ортогональной и треугольной и переставляют множители: . Ортогональность заменяет жёсткое нормирование степенного метода, и процесс сходится сразу ко всем собственным значениям — фактически диагонализация без единого характеристического многочлена. Современные реализации (приведение к Хессенбергу плюс сдвиги) находят весь спектр плотной матрицы за , а векторы дочитывают уже знакомыми обратными итерациями со сдвигами.

Когда степенной метод не сходится#

СитуацияЧто видитеЧто делать
, знаки разные ( и )итерации прыгают между двумя направлениями, оценка λ дрожитсдвиг : числа и , модули разведены — сходится к
комплексная пара (поворотная матрица)вектор вращается по кругу, норма стоит на местесдвиг нарушает равенство модулей пары
дефектная матрица, жорданова клетка сходится к пятёрке, но вязко: ошибка сдвиги или QR; степенной в лоб — страдание
(соперники близки)формально сходится, фактически — ждёте вечностьсдвиг рядом с нужным и обратные итерации
Четыре болезни степенного метода — и их лечение

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

  • Степенной метод: умножай на , нормируй, повторяй — сходится к наибольшему по модулю , если спектр честно разделён
  • Оценки числа: норма , частное компонент, отношение Рэлея — точнее всех, ошибка
  • Скорость — ; сдвиг перестраивает спектр и наводит метод на нужный корень
  • Обратный степенной метод достаёт векторы; пара «QR + обратные итерации» — сердце numpy.linalg.eig и LAPACK
  • PageRank — тот же степенной метод на матрице миллиардов строк; ошибка сжимается в раз за итерацию

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

Проверь себя+10 XP

Матрица имеет собственные значения , и . К какому числу сойдётся степенной метод?

Проверь себя+10 XP

Для матрицы-героя ошибка убывает как . Сколько итераций выигрывают один дополнительный десятичный знак?

Проверь себя+10 XP

Степенной метод применили к , где — матрица-герой . Он сошёлся к числу . Какое собственное значение это даёт?

Частые вопросы

Почему степенной метод находит наибольшее по модулю собственное значение?

Каждое умножение на умножает -ю компоненту разложения на . После итераций соотношение слагаемых — : всё, что по модулю меньше единицы, гаснет. Выживает слагаемое с максимальным модулем — вектор поворачивается к , а норма тянется к . Метод слышит только самый громкий голос спектра; второй по громкости определяет скорость затухания.

Что делать, если два собственных значения равны по модулю, например 5 и −5?

Итерации зажаты между двумя направлениями: чётные шаги тянут к одному вектору, нечётные — к другому, оценка λ дрожит и не сходится. Лечение — сдвиг: у числа и , модули разведены, метод сходится к , откуда . Комплексная пара лечится тем же приёмом: сдвиг нарушает равенство модулей. Внутри QR-алгоритма сдвиги применяют на каждом шаге.

Как численно найти наименьшее собственное значение матрицы?

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

Зачем нужен степенной метод, если есть QR-алгоритм?

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

Готовитесь к контрольной?

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

Открыть чеклист предмета →

Проверьте себя в бою

Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.

Начать босс-экзамен →