Итерация мощности - Power iteration
В математика, итерация мощности (также известный как силовой метод) является алгоритм собственных значений: учитывая диагонализуемый матрица , алгоритм выдаст число , что является наибольшим (по абсолютной величине) собственное значение из , и ненулевой вектор , что является соответствующим собственный вектор из , это, .Алгоритм также известен как Итерация фон Мизеса.[1]
Степенная итерация - очень простой алгоритм, но он может медленно сходиться. Самая трудоемкая операция алгоритма - это умножение матрицы вектором, поэтому он эффективен для очень больших разреженная матрица при соответствующей реализации.
Метод
Алгоритм степенной итерации начинается с вектора , который может быть приближением к доминирующему собственному вектору или случайному вектору. Метод описывается отношение повторения
Итак, на каждой итерации вектор умножается на матрицу и нормализованный.
Если мы предположим имеет собственное значение, которое строго больше, чем его другие собственные значения, и начальный вектор имеет ненулевую компоненту в направлении собственного вектора, связанного с доминирующим собственным значением, тогда подпоследовательность сходится к собственному вектору, связанному с доминирующим собственным значением.
Без двух приведенных выше предположений последовательность не обязательно сходится. В этой последовательности
- ,
где - собственный вектор, связанный с доминирующим собственным значением, а . Наличие термина подразумевает, что не сходится, если . При двух перечисленных выше предположениях последовательность определяется
сходится к главному собственному значению.[требуется разъяснение ]
Это можно вычислить с помощью следующего алгоритма (показанного на Python с NumPy):
#! / usr / bin / env python3импорт тупой так как нпdef power_iteration(А, num_simulations: int): # В идеале выбираем случайный вектор # Чтобы уменьшить вероятность того, что наш вектор # Ортогонален собственному вектору b_k = нп.случайный.ранд(А.форма[1]) за _ в ассортимент(num_simulations): # вычисляем матричное произведение Ab b_k1 = нп.точка(А, b_k) # вычисляем норму b_k1_norm = нп.линалг.норма(b_k1) # повторно нормализовать вектор b_k = b_k1 / b_k1_norm вернуть b_kpower_iteration(нп.массив([[0.5, 0.5], [0.2, 0.8]]), 10)
Вектор в связанный собственный вектор. В идеале следует использовать Фактор Рэлея чтобы получить соответствующее собственное значение.
Этот алгоритм используется для расчета Google PageRank.
Метод также можно использовать для расчета спектральный радиус (собственное значение с наибольшей величиной для квадратной матрицы) путем вычисления отношения Рэлея
Анализ
Позволять разложить на Иорданская каноническая форма: , где первый столбец является собственным вектором соответствующее доминирующему собственному значению . Поскольку доминирующее собственное значение уникальна, первая жорданова блок это матрица где является наибольшим собственным значением А по величине. Стартовый вектор можно записать как линейную комбинацию столбцов V:
По предположению, имеет ненулевую компоненту в направлении доминирующего собственного значения, поэтому .
Вычислительно полезный отношение повторения за можно переписать как:
где выражение: более поддается следующему анализу.
Выражение выше упрощается как
Предел следует из того, что собственное значение меньше единицы по величине, поэтому
Это следует из того:
Используя этот факт, можно записать в форме, подчеркивающей его связь с когда k большой:
где и так как
Последовательность ограничен, поэтому он содержит сходящуюся подпоследовательность. Обратите внимание, что собственный вектор, соответствующий доминирующему собственному значению, уникален только с точностью до скаляра, поэтому, хотя последовательность может не сходиться, является почти собственным вектором А для больших k.
В качестве альтернативы, если А является диагонализуемый, то следующее доказательство дает тот же результат
Пусть λ1, λ2, ..., λм быть м собственные значения (с учетом кратности) А и разреши v1, v2, ..., vм - соответствующие собственные векторы. Предположим, что является доминантным собственным значением, так что за .
Начальный вектор можно написать:
Если выбирается случайно (с равномерной вероятностью), то c1 ≠ 0 с вероятность 1. Сейчас же,
С другой стороны:
Следовательно, сходится к (кратному) собственному вектору . Сходимость геометрический, с соотношением
где обозначает второе доминирующее собственное значение. Таким образом, метод сходится медленно, если имеется собственное значение, близкое по величине к доминирующему собственному значению.
Приложения
Хотя метод степенной итерации приближает только одно собственное значение матрицы, он остается полезным для некоторых вычислительные проблемы. Например, Google использует его для расчета PageRank документов в их поисковой системе,[2] и Twitter использует его, чтобы показать пользователям рекомендации, которым следует следовать.[3] Метод степенной итерации особенно подходит для разреженные матрицы, например веб-матрицу или безматричный метод не требующий хранения матрицы коэффициентов явно, но вместо этого может получить доступ к функции, оценивающей произведение матрица-вектор . Для несимметричных матриц, которые хорошо кондиционированный метод степенной итерации может превзойти более сложные Итерация Арнольди. Для симметричных матриц метод степенных итераций используется редко, поскольку его скорость сходимости может быть легко увеличена без ущерба для небольших затрат на итерацию; см., например, Итерация Ланцоша и LOBPCG.
Некоторые из более продвинутых алгоритмов собственных значений можно рассматривать как вариации степенной итерации. Например, обратная итерация метод применяет степенную итерацию к матрице . Другие алгоритмы смотрят на все подпространство, созданное векторами . Это подпространство известно как Крыловское подпространство. Его можно вычислить Итерация Арнольди или Итерация Ланцоша.
Смотрите также
использованная литература
- ^ Рихард фон Мизес и Х. Поллачек-Гейрингер,Praktische Verfahren der Gleichungsauflösung, ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik 9, 152–164 (1929).
- ^ Ипсен, Ильзе и Ребекка М. Уиллс (5–8 мая 2005 г.). «7-й Международный симпозиум IMACS по итерационным методам в научных вычислениях» (PDF). Институт Филдса, Торонто, Канада.CS1 maint: несколько имен: список авторов (ссылка на сайт)
- ^ Панкадж Гупта, Ашиш Гоэль, Джимми Лин, Аниш Шарма, Донг Ван и Реза Босаг Заде WTF: Система отслеживания подписчиков в Twitter, Материалы 22-й международной конференции по всемирной паутине