Итерация мощности — очень простой алгоритм, но он может сходиться медленно. Самой трудоемкой операцией алгоритма является умножение матрицы на вектор, поэтому он эффективен для очень большой разреженной матрицы при соответствующей реализации. Скорость сходимости такая же (см. следующий раздел). Другими словами, сходимость является экспоненциальной, а основанием является спектральный разрыв .
Метод
Алгоритм итерации мощности начинается с вектора , который может быть приближением к доминирующему собственному вектору или случайному вектору. Метод описывается рекуррентным соотношением
Итак, на каждой итерации вектор умножается на матрицу и нормализуется.
Если мы предположим, что имеет собственное значение, которое строго больше по величине, чем другие его собственные значения, и стартовый вектор имеет ненулевой компонент в направлении собственного вектора, связанного с доминирующим собственным значением, то подпоследовательность сходится к собственному вектору, связанному с доминирующим собственным значением.
Без двух приведенных выше предположений последовательность не обязательно сходится. В этой последовательности
,
где - собственный вектор, связанный с доминирующим собственным значением, и . Наличие слагаемого подразумевает, что не сходится, если только . При двух перечисленных выше предположениях последовательность, определяемая формулой
Это можно вычислить с помощью следующего алгоритма (показанного в Python с NumPy):
#!/usr/bin/env python3импортировать numpy как npdef power_iteration ( A , num_iterations : int ): # В идеале выберите случайный вектор # Чтобы уменьшить вероятность того, что наш вектор # ортогонален собственному вектору b_k = np . случайный . ранд ( A . форма [ 1 ])for _ in range ( num_iterations ): # вычисление произведения матрицы на вектор Ab b_k1 = np . точка ( A , b_k )# вычисляем норму b_k1_norm = np . линалг . норма ( b_k1 )# повторно нормализуем вектор b_k = b_k1 / b_k1_normвернуть б_кpower_iteration ( np . array ([[ 0.5 , 0.5 ], [ 0.2 , 0.8 ]]), 10 )
Вектор сходится к соответствующему собственному вектору. В идеале для получения соответствующего собственного значения следует использовать коэффициент Рэлея .
Этот алгоритм используется для расчета PageRank Google .
Этот метод также можно использовать для расчета спектрального радиуса (собственного значения наибольшей величины для квадратной матрицы) путем вычисления коэффициента Рэлея.
Анализ
Разложим его в жордановую каноническую форму : , где первый столбец - собственный вектор , соответствующий доминирующему собственному значению . Поскольку , как правило , доминирующее собственное значение уникально, первый жордановый блок представляет собой матрицу , где является наибольшим собственным значением A по величине. Начальный вектор можно записать как линейную комбинацию столбцов V :
По предположению имеет ненулевой компонент в направлении доминирующего собственного значения, поэтому .
где выражение: более поддается следующему анализу.
Выражение выше упрощается как
Предел следует из того факта, что собственное значение меньше 1 по величине, поэтому
Следует, что:
Используя этот факт, можно записать в форме, подчеркивающей ее связь с большим k :
где и как
Последовательность ограничена, поэтому она содержит сходящуюся подпоследовательность. Обратите внимание, что собственный вектор, соответствующий доминирующему собственному значению, уникален только с точностью до скаляра, поэтому, хотя последовательность может и не сходиться, она почти является собственным вектором A для больших k .
Альтернативно, если A диагонализуемо , то следующее доказательство дает тот же результат
Пусть λ 1 , λ 2 , ..., λ m — m собственных значений (подсчитанных с кратностью) оператора A , и пусть v 1 , v 2 , ..., v m — соответствующие собственные векторы. Предположим, что это доминирующее собственное значение, так что для .
Исходный вектор можно записать:
Если выбрано случайно (с равномерной вероятностью), то c 1 ≠ 0 с вероятностью 1 . Сейчас,
С другой стороны:
Следовательно, сходится к (кратному числу) собственному вектору . Сходимость геометрическая с отношением
где обозначает второе доминирующее собственное значение. Таким образом, метод сходится медленно, если существует собственное значение, близкое по величине к доминирующему собственному значению.
Приложения
Хотя метод степенной итерации аппроксимирует только одно собственное значение матрицы, он остается полезным для некоторых вычислительных задач . Например, Google использует его для расчета PageRank документов в своей поисковой системе, [2] а Twitter использует его, чтобы показывать пользователям рекомендации о том, кому следовать. [3] Метод степенной итерации особенно подходит для разреженных матриц , таких как веб-матрица, или в качестве безматричного метода , который не требует явного сохранения матрицы коэффициентов, но вместо этого может получить доступ к функции, оценивающей произведение матрицы-вектора . Для несимметричных матриц, которые хорошо обусловлены, метод степенной итерации может превзойти более сложную итерацию Арнольди . Для симметричных матриц метод степенной итерации используется редко, поскольку его скорость сходимости можно легко увеличить, не жертвуя при этом небольшой стоимостью итерации; см., например, итерацию Ланцоша и LOBPCG .
Некоторые из более продвинутых алгоритмов собственных значений можно понимать как вариации степенной итерации. Например, метод обратной итерации применяет степенную итерацию к матрице . Другие алгоритмы рассматривают все подпространство, порожденное векторами . Это подпространство известно как подпространство Крылова . Его можно вычислить с помощью итерации Арнольди или итерации Ланцоша . Итерация по Граму [4] — это суперлинейный и детерминированный метод вычисления наибольшей собственной пары.
^ Рихард фон Мизес и Х. Поллачек-Гейрингер, Praktische Verfahren der Gleichungsauflösung , ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152-164 (1929).
^ Ипсен, Ильза и Ребекка М. Уиллс (5–8 мая 2005 г.). «7-й Международный симпозиум IMACS по итеративным методам научных вычислений» (PDF) . Институт Филдса, Торонто, Канада.{{cite news}}: CS1 maint: multiple names: authors list (link)
^ Панкадж Гупта, Ашиш Гоэл, Джимми Лин, Аниш Шарма, Донг Ван и Реза Босаг Заде WTF: Система «за кем следить» в Твиттере, Материалы 22-й международной конференции по Всемирной паутине
^ Делатр, Б.; Бартелеми, К.; Араужо, А.; Аллаузен, А. (2023), «Эффективная оценка константы Липшица для сверточных слоев путем итерации по Граму», Материалы 40-й Международной конференции по машинному обучению