Jump to content

Итерация Арнольди

В числовой линейной алгебре является итерация Арнольди алгоритмом собственных значений и важным примером итерационного метода . Арнольди находит приближение к собственным значениям и собственным векторам общих (возможно, неэрмитовых ) матриц путем построения ортонормированного базиса подпространства Крылова , что делает его особенно полезным при работе с большими разреженными матрицами .

Метод Арнольди принадлежит к классу алгоритмов линейной алгебры, которые дают частичный результат после небольшого числа итераций, в отличие от так называемых прямых методов , которые должны завершиться, чтобы дать какие-либо полезные результаты (см., например, преобразование Хаусхолдера ). Частичным результатом в этом случае являются первые несколько векторов основы, которую строит алгоритм.

Применительно к эрмитовым матрицам он сводится к алгоритму Ланцоша . Итерация Арнольди была изобретена WE Arnoldi в 1951 году. [1]

Подпространства Крылова и степенная итерация

[ редактировать ]

Интуитивный метод поиска наибольшего (по абсолютному значению) собственного значения заданной m × m. матрицы размера итерация степени : начиная с произвольного начального вектора b , вычисляем Ab , A 2 б , А 3 b ... нормализуя результат после каждого применения матрицы A. ,

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

Столбцы этой матрицы, как правило, не ортогональны , но мы можем извлечь ортогональный базис с помощью такого метода, как ортогонализация Грама – Шмидта . Таким образом, полученный набор векторов является ортогональным базисом подпространства Крылова , . Мы можем ожидать, что векторы этого базиса будут охватывать хорошие аппроксимации собственных векторов, соответствующих наибольшие собственные значения по той же причине, что аппроксимирует доминирующий собственный вектор.

Итерация Арнольда

[ редактировать ]

Итерация Арнольди использует модифицированный процесс Грама-Шмидта для создания последовательности ортонормированных векторов q 1 , q 2 , q 3 , ..., называемых векторами Арнольди , таких, что для каждого n векторы q 1 , ... , q n охватывают подпространство Крылова . В явном виде алгоритм выглядит следующим образом:

Start with an arbitrary vector q1 with norm 1.
Repeat for k = 2, 3, ...
  qk := A qk−1
  for j from 1 to k − 1
    hj,k−1 :=  qj* qk
    qk := qk − hj,k−1 qj
  hk,k−1 := ‖qkqk := qk / hk,k−1

- петля J проецирует компонент в направлениях . Это обеспечивает ортогональность всех сгенерированных векторов.

Алгоритм не работает, когда q k является нулевым вектором. Это происходит, когда полином A минимальный имеет степень k . В большинстве приложений итерации Арнольди, включая приведенный ниже алгоритм собственных значений и GMRES , алгоритм сходится в этой точке.

Каждый шаг k -цикла требует одного произведения матрицы на вектор и примерно 4 мк операций с плавающей запятой.

На языке программирования Python с поддержкой библиотеки NumPy :

import numpy as np

def arnoldi_iteration(A, b, n: int):
    """Compute a basis of the (n + 1)-Krylov subspace of the matrix A.

    This is the space spanned by the vectors {b, Ab, ..., A^n b}.

    Parameters
    ----------
    A : array_like
        An m × m array.
    b : array_like
        Initial vector (length m).
    n : int
        One less than the dimension of the Krylov subspace, or equivalently the *degree* of the Krylov space. Must be >= 1.
    
    Returns
    -------
    Q : numpy.array
        An m x (n + 1) array, where the columns are an orthonormal basis of the Krylov subspace.
    h : numpy.array
        An (n + 1) x n array. A on basis Q. It is upper Hessenberg.
    """
    eps = 1e-12
    h = np.zeros((n + 1, n))
    Q = np.zeros((A.shape[0], n + 1))
    # Normalize the input vector
    Q[:, 0] = b / np.linalg.norm(b, 2)  # Use it as the first Krylov vector
    for k in range(1, n + 1):
        v = np.dot(A, Q[:, k - 1])  # Generate a new candidate vector
        for j in range(k):  # Subtract the projections on previous vectors
            h[j, k - 1] = np.dot(Q[:, j].conj(), v)
            v = v - h[j, k - 1] * Q[:, j]
        h[k, k - 1] = np.linalg.norm(v, 2)
        if h[k, k - 1] > eps:  # Add the produced vector to the list, unless
            Q[:, k] = v / h[k, k - 1]
        else:  # If that happens, stop iterating.
            return Q, h
    return Q, h

Свойства итерации Арнольди

[ редактировать ]

Пусть Q n обозначает m x матрицу размером n, образованную первыми n векторами Арнольди q 1 , q 2 , ..., q n , и пусть H n будет (верхней ) матрицей Хессенберга , образованной числами h j , k вычисляется по алгоритму:

Метод ортогонализации должен быть выбран таким образом, чтобы младшие компоненты Арнольди/Крылова были удалены из старших векторов Крылова. Как могут быть выражены через q 1 , ..., q i +1 по построению, они ортогональны q i +2 , ..., q n ,

Тогда у нас есть

Матрицу H n можно рассматривать как A в подпространстве с векторами Арнольди в качестве ортогонального базиса; A ортогонально проецируется на . Матрицу H n можно охарактеризовать следующим условием оптимальности. Характеристический полином H || n минимизирует п ( А ) q 1 || 2 среди всех монических полиномов степени n . Эта проблема оптимальности имеет единственное решение тогда и только тогда, когда итерация Арнольди не дает сбоев.

Связь между матрицами Q на последующих итерациях определяется выражением

где

( n +1)-n матрица , образованная добавлением дополнительной строки к H n .

Нахождение собственных значений с помощью итерации Арнольди

[ редактировать ]

Идея итерации Арнольди как алгоритма собственных значений состоит в вычислении собственных значений в подпространстве Крылова. Собственные значения H n называются собственными значениями Ритца . Поскольку H n представляет собой матрицу Хессенберга небольшого размера, ее собственные значения могут быть эффективно вычислены, например, с помощью алгоритма QR или несколько связанного с ним алгоритма Фрэнсиса . Также сам алгоритм Фрэнсиса можно считать связанным со степенными итерациями, работающими на вложенном подпространстве Крылова. Фактически, самая основная форма алгоритма Фрэнсиса, по-видимому, состоит в том, чтобы выбрать b равным Ae 1 и расширить n до полного измерения A . Улучшенные версии включают одно или несколько сдвигов, а более высокие степени A можно применять за один этап. [2]

Это пример метода Рэлея-Ритца .

На практике часто наблюдается, что некоторые собственные значения Ритца сходятся к собственным значениям A . Поскольку H n равен n -n , он имеет не более n собственных значений, и не все собственные значения A могут быть аппроксимированы. Обычно собственные значения Ритца сходятся к самым большим собственным значениям A . Чтобы получить наименьшие собственные значения A обратную (операцию) A. , вместо этого следует использовать Это может быть связано с характеристикой H n как матрицы, характеристический полином которой минимизирует || п ( А ) q 1 || следующим образом. Хороший способ добиться малого p ( A ) — это выбрать полином p так, чтобы ( x ) было малым всякий раз, когда x является собственным значением A. p Следовательно, нули p (и, следовательно, собственные значения Ритца) будут близки к собственным значениям A .

Однако детали еще не до конца изучены. Это контрастирует со случаем, когда A является эрмитовым . В этой ситуации итерация Арнольди становится итерацией Ланцоша , для которой теория является более полной.

Итерация Арнольди, демонстрирующая сходимость значений Ритца (красный) к собственным значениям (черный) матрицы 400x400, состоящей из однородных случайных значений в области [-0,5 +0,5]

Перезапущена итерация Арнольди.

[ редактировать ]

Из практических соображений хранения общие реализации методов Арнольди обычно перезапускаются после фиксированного количества итераций. Одним из подходов является метод неявного перезапуска Арнольди (IRAM). [3] от Lehoucq и Sorensen, который был популяризирован в бесплатном пакете программного обеспечения с открытым исходным кодом ARPACK . [4] Другой подход — алгоритм Крылова-Шура Г. В. Стюарта, который более стабилен и прост в реализации, чем IRAM. [5]

См. также

[ редактировать ]

Обобщенный метод минимальных невязок (GMRES) — это метод решения Ax = b, основанный на итерации Арнольди.

  1. ^ Арнольди, МЫ (1951). «Принцип минимизации итераций при решении матричной проблемы собственных значений» . Ежеквартальный журнал прикладной математики . 9 (1): 17–29. дои : 10.1090/qam/42792 . ISSN   0033-569X .
  2. ^ Дэвид С. Уоткинс. Алгоритм Фрэнсиса, Университет штата Вашингтон. Проверено 14 декабря 2022 г.
  3. ^ РБ Лехук и Д.С. Соренсен (1996). «Методы дефляции для неявно перезапущенной итерации Арнольди». Журнал SIAM по матричному анализу и его приложениям . 17 (4): 789–821. дои : 10.1137/S0895479895281484 . hdl : 1911/101832 .
  4. ^ РБ Лехук; Округ Колумбия Соренсен и К. Ян (1998). «Руководство пользователя ARPACK: Решение крупномасштабных задач на собственные значения с помощью неявно перезапущенных методов Арнольди» . СИАМ. Архивировано из оригинала 26 июня 2007 г. Проверено 30 июня 2007 г.
  5. ^ Стюарт, GW (2002). «Алгоритм Крылова-Шура для решения больших собственных задач» . Журнал SIAM по матричному анализу и его приложениям . 23 (3): 601–614. дои : 10.1137/S0895479800371529 . ISSN   0895-4798 .
  • У. Е. Арнольди, «Принцип минимизации итераций в решении проблемы собственных значений матрицы», Ежеквартальный журнал прикладной математики , том 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() .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 498decdeb04035b8d804126c9b5236b5__1717050060
URL1:https://arc.ask3.ru/arc/aa/49/b5/498decdeb04035b8d804126c9b5236b5.html
Заголовок, (Title) документа по адресу, URL1:
Arnoldi iteration - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)