Итерация Арнольди - Arnoldi iteration
В числовой линейная алгебра, то Итерация Арнольди является алгоритм собственных значений и важный пример итерационный метод. Арнольди находит приближение к собственные значения и собственные векторы общего (возможно, не-Эрмитский ) матрицы построив ортонормированный базис Крыловское подпространство, что делает его особенно полезным при работе с большими разреженные матрицы.
Метод Арнольди относится к классу алгоритмов линейной алгебры, которые дают частичный результат после небольшого количества итераций, в отличие от так называемых прямые методы которые необходимо завершить, чтобы получить полезные результаты (см., например, Преобразование домохозяина ). Частичным результатом в данном случае являются первые несколько векторов основы, которую строит алгоритм.
Применительно к эрмитовым матрицам он сводится к Алгоритм Ланцоша. Итерация Арнольди была изобретена В. Э. Арнольди в 1951 г.[1]
Подпространства Крылова и степенная итерация
Интуитивно понятный метод поиска наибольшего (по модулю) собственного значения заданного м × м матрица это итерация мощности: начиная с произвольного инициала вектор брассчитать Ab, А2б, А3б,… Нормализация результата после каждого применения матрицы А.
Эта последовательность сходится к собственный вектор соответствующая собственному значению с наибольшим модулем, . Однако многие потенциально полезные вычисления тратятся впустую из-за использования только конечного результата, . Это говорит о том, что вместо этого мы формируем так называемый Матрица Крылова:
Столбцы этой матрицы, как правило, не ортогональный, но мы можем извлечь ортогональный основа, с помощью такого метода, как Ортогонализация Грама – Шмидта. Таким образом, полученный набор векторов является ортогональным базисом Крыловское подпространство, . Можно ожидать, что векторы этого базиса будут охватывать хорошие приближения собственных векторов, соответствующих наибольшие собственные значения по той же причине, что аппроксимирует доминантный собственный вектор.
Итерация Арнольди
Итерация Арнольди использует модифицированный процесс Грама – Шмидта для создания последовательности ортонормированных векторов, q1, q2, q3, …, называется Векторы Арнольди, так что для каждого п, векторы q1, …, qп покрывают подпространство Крылова . В явном виде алгоритм выглядит следующим образом:
- Начнем с произвольного вектора q1 с нормой 1.
- Повторите для k = 2, 3, …
- за j от 1 до k − 1
В j-loop проектирует компонент в направлениях . Это обеспечивает ортогональность всех сгенерированных векторов.
Алгоритм не работает, когда qk - нулевой вектор. Это происходит, когда минимальный многочлен из А имеет степень k. В большинстве приложений итерации Арнольди, включая алгоритм собственных значений ниже и GMRES, алгоритм к этому моменту сошелся.
Каждый шаг k-loop принимает одно матрично-векторное произведение и приблизительно 4мк операции с плавающей запятой.
В языке программирования Python:
импорт тупой в качестве нпdef arnoldi_iteration(А, б, п: int): "" "Вычисляет базис (n + 1) -подпространства Крылова в A: пространство натянутое на {b, Ab, ..., A ^ n b}. Аргументы A: массив m × m b: начальный вектор (длина m) n: размерность подпространства Крылова, должна быть> = 1 Возврат Q: m x (n + 1) массив, столбцы являются ортонормированным базисом Крыловское подпространство. h: (n + 1) x n массив, A на основе Q. Это верхний Hessenberg. """ м = А.форма[0] час = нп.нули((п + 1, п)) Q = нп.нули((м, п + 1)) q = б / нп.линалг.норма(б) # Нормализовать входной вектор Q[:, 0] = q # Использовать как первый вектор Крылова за k в классифицировать(п): v = А.точка(q) # Сгенерировать новый вектор кандидата за j в классифицировать(k): # Вычесть проекции на предыдущие векторы час[j, k] = нп.точка(Q[:, j].соединяется(), v) v = v - час[j, k] * Q[:, j] час[k + 1, k] = нп.линалг.норма(v) eps = 1e-12 # Если v короче этого порога, это нулевой вектор если час[k + 1, k] > eps: # Добавить полученный вектор в список, если q = v / час[k + 1, k] # создается нулевой вектор. Q[:, k + 1] = q еще: # Если это произойдет, прекратите итерацию. возвращаться Q, час возвращаться Q, час
Свойства итерации Арнольди
Позволять Qп обозначить м-к-п матрица, образованная первым п Векторы Арнольди q1, q2, …, qп, и разреши ЧАСп быть (верхним Hessenberg ) матрица, образованная числами часj,k вычисляется по алгоритму:
Метод ортогонализации должен быть выбран таким образом, чтобы нижние компоненты Арнольди / Крылова удалялись из высших векторов Крылова. В качестве можно выразить через q1, …, qя + 1 по построению они ортогональны qя + 2, …, qп,
Тогда у нас есть
Матрица ЧАСп можно рассматривать как А в подпространстве с векторами Арнольди в качестве ортогонального базиса; А ортогонально проецируется на . Матрица ЧАСп можно охарактеризовать следующим условием оптимальности. В характеристический многочлен из ЧАСп минимизирует ||п(А)q1||2 среди всего монические полиномы степени п. Эта проблема оптимальности имеет единственное решение тогда и только тогда, когда итерация Арнольди не дает сбоев.
Связь между Q матрицы в последующих итерациях имеет вид
куда
является (п+1) -по-п матрица, образованная добавлением дополнительной строки к ЧАСп.
Нахождение собственных значений с помощью итерации Арнольди
Идея итерации Арнольди как алгоритм собственных значений заключается в вычислении собственных значений в подпространстве Крылова. Собственные значения ЧАСп называются Собственные значения Ритца. С ЧАСп является матрицей Хессенберга небольшого размера, ее собственные значения можно эффективно вычислить, например, с помощью QR-алгоритм, или несколько похожий алгоритм Фрэнсиса. Также сам алгоритм Фрэнсиса можно рассматривать как относящийся к степенным итерациям, работающим на вложенном подпространстве Крылова. Фактически, самая основная форма алгоритма Фрэнсиса состоит в том, чтобы выбрать б быть равным Ae1, и расширение п в полном объеме А. Улучшенные версии включают одну или несколько смен и более высокие степени А можно наносить за один прием.[1]
Это пример Метод Рэлея-Ритца.
На практике часто наблюдается, что некоторые из собственных значений Ритца сходятся к собственным значениям А. С ЧАСп является п-к-п, у него не больше п собственные значения, а не все собственные значения А можно приблизить. Обычно собственные значения Ритца сходятся к наибольшим собственным значениям А. Чтобы получить наименьшие собственные значения А, обратная (операция) А следует использовать вместо этого. Это может быть связано с характеристикой ЧАСп как матрица, характеристический многочлен которой минимизирует ||п(А)q1|| следующим образом. Хороший способ получить п(А) small - выбрать полином п такой, что п(Икс) мало всякий раз, когда Икс является собственным значением А. Следовательно, нули п (и, следовательно, собственные значения Ритца) будут близки к собственным значениям А.
Однако детали еще не до конца изучены. Это контрастирует со случаем, когда А является симметричный. В этой ситуации итерация Арнольди становится Итерация Ланцоша, для которого теория более полная.
Неявно перезапускаемый метод Арнольди (IRAM)
Из-за практических соображений хранения общие реализации методов Арнольди обычно перезапускаются после некоторого количества итераций. Одним из основных нововведений в перезапуске стал Лехук и Соренсен, предложившие метод неявно перезапущенного Арнольди.[2] Они также реализовали алгоритм в свободно доступном программном пакете под названием ARPACK.[3] Это привело к появлению ряда других вариаций, включая неявно перезапускаемый метод Ланцоша.[4][5][6] Это также повлияло на то, как анализируются другие перезапускаемые методы.[7]Теоретические результаты показали, что сходимость улучшается с увеличением размерности подпространства Крылова п. Однако априорное значение п что привело бы к оптимальной сходимости, неизвестно. Недавно появилась стратегия динамического переключения[8] был предложен, который колеблется размер п перед каждым перезапуском и, таким образом, приводит к увеличению скорости сходимости.
Смотрите также
В обобщенный метод минимальной невязки (GMRES) - метод решения Топор = б на основе итерации Арнольди.
Рекомендации
- ^ В. Э. Арнольди, "Принцип минимизированных итераций при решении матричной проблемы собственных значений", Квартал прикладной математики, том 9, страницы 17–29, 1951 г.
- ^ Р. Б. Лехук и Д. К. Соренсен (1996). «Методы дефляции для неявно перезапущенной итерации Арнольди». СИАМ. Дои:10.1137 / S0895479895281484. HDL:1911/101832.
- ^ Р. Б. Лехук; Д. К. Соренсен и К. Ян (1998). «Руководство пользователя ARPACK: решение крупномасштабных проблем собственных значений с помощью неявно перезапускаемых методов Арнольди». СИАМ. Архивировано из оригинал на 2007-06-26. Получено 2007-06-30.
- ^ Д. Кальветти; Л. Райхель и Д.К. Соренсен (1994). "Неявно перезапущенный метод Ланцоша для больших симметричных задач на собственные значения". ETNA.
- ^ Э. Кокиопулу; К. Бекас и Э. Галлопулос (2003). "Неявно перезапущенный метод бидиагонализации Ланцоша для вычисления наименьших сингулярных триплетов" (PDF). СИАМ.
- ^ Чжунсяо Цзя (2002). «Уточненный гармонический метод Арнольди и неявно перезапущенный усовершенствованный алгоритм для вычисления внутренних собственных пар больших матриц». Appl. Нумер. Математика. Дои:10.1016 / S0168-9274 (01) 00132-5.
- ^ Андреас Статопулос, Юсеф Саад и Кешенг Ву (1998). «Динамический толстый перезапуск Дэвидсона и неявно перезапускаемые методы Арнольди». СИАМ. Дои:10.1137 / S1064827596304162.
- ^ К. Дукхитрам, Р. Буджхавон и М. Бхурут (2009). «Новый метод ускорения алгоритмов Арнольди для крупномасштабных собственных задач». Математика. Comput. Simulat. Дои:10.1016 / j.matcom.2009.07.009.
- В. Э. Арнольди, "Принцип минимизированных итераций при решении матричной проблемы собственных значений", Квартал прикладной математики, том 9, страницы 17–29, 1951.
- Юсеф Саад, Численные методы решения больших задач на собственные значения, Издательство Манчестерского университета, 1992. ISBN 0-7190-3386-1.
- Ллойд Н. Трефетен и Дэвид Бау, III, Числовая линейная алгебра, Общество промышленной и прикладной математики, 1997. ISBN 0-89871-361-7.
- Яшке, Леонхард: Предварительно обусловленные методы Арнольди для систем нелинейных уравнений. (2004). ISBN 2-84976-001-3
- Выполнение: Matlab поставляется со встроенным ARPACK. Как хранимые, так и неявные матрицы можно анализировать с помощью eigs () функция.