廣義最小殘差 (GMRES) 法(Saad 和 Schultz 1986)是最小殘差法 (MINRES) 的擴充套件,後者僅適用於對稱系統,而前者適用於非對稱系統。與 MINRES 類似,它生成一個正交向量序列,但在缺少對稱性的情況下,這不再能用短遞推關係完成;相反,正交序列中所有先前計算的向量都必須保留。因此,使用了該方法的“重啟”版本。
在共軛梯度法中,殘差構成該空間的正交基
在 GMRES 中,這個基被顯式地構造出來
讀者可能會認識到這是一個改進的 Gram-Schmidt 正交化。應用於 Krylov 序列 的這種正交化被稱為“Arnoldi 方法”(Arnoldi 1951)。內積係數
和
儲存在一個上 Hessenberg 矩陣中。
GMRES 迭代被構造為
其中係數 的選擇是為了最小化殘差範數
。GMRES 演算法的特性是,即使迭代尚未形成,也可以計算此殘差範數。因此,形成迭代的昂貴操作可以推遲到殘差範數被認為足夠小的時候。
在此方案中,UPDATE 替換了以下計算
廣義最小殘差法旨在求解非對稱線性系統(Saad 和 Schultz 1986)。GMRES 最流行的形式是基於改進的 Gram-Schmidt 正交化程式,並使用重啟來控制儲存需求。
如果不使用重啟,GMRES(像任何正交化 Krylov 子空間方法一樣)將在不超過 步內收斂(假設精確算術)。當然,當
很大時,這沒有實際價值;此外,在沒有重啟的情況下,儲存和計算需求是令人望而卻步的。實際上,成功應用 GMRES(
) 的關鍵要素圍繞何時重啟的決定;也就是
的選擇。不幸的是,存在一些例子,其中該方法停滯不前,並且收斂僅發生在第
步。對於此類系統,任何小於
的
選擇都無法收斂。
Saad 和 Schultz (1986) 已經證明了幾個有用的結果。特別是,他們表明,如果係數矩陣 是實數且接近正定,則可以選擇
的“合理”值。下面討論
選擇的含義。
Saad 和 Schultz (1986) 提出了一種常見的 GMRES 實現,它依賴於使用改進的 Gram-Schmidt 正交化。Householder 變換雖然成本相對較高但很穩定,也被提出。Householder 方法導致與內積和向量更新相關的工作量增加三倍(不是與矩陣向量乘積);然而,收斂性可能會更好,特別是對於病態系統(Walker 1988)。從並行性的角度來看,Gram-Schmidt 正交化可能是首選,犧牲一些穩定性以獲得更好的並行化特性(Demmel et al. 1993)。在這裡,我們採用改進的 Gram-Schmidt 方法。
GMRES 的主要缺點是,每次迭代所需的工作量和儲存量隨著迭代次數線性增加。除非足夠幸運地獲得極快的收斂速度,否則成本將迅速變得令人望而卻步。克服此限制的常用方法是重啟迭代。在選定的迭代次數 後,累積的資料被清除,中間結果用作下一次
迭代的初始資料。重複此過程,直到實現收斂。困難在於為
選擇合適的值。如果
太小,則 GMRES(
) 可能收斂緩慢,或者完全無法收斂。大於必要的
值會涉及過多的工作(並使用更多的儲存空間)。不幸的是,沒有明確的規則來指導
的選擇;選擇何時重啟是一項經驗問題。
有關向量和共享記憶體計算機的 GMRES 的討論,請參閱 Dongarra et al. (1991)。有關更通用的架構,請參閱 Demmel et al. (1993)。