矩陣的 QR 分解在電腦運算中可能造成誤差,本文探討一下一種改進版本的 Gram-Schmidt 正交化方法。
經典的 Gram-Schmidt 方法可能造成數值不穩定性。在電腦中,舍入誤差可能會累積,造成得到的正交基並不具有正交性。
我們先來回顧一下經典的 Gram-Schmidt 方法:
1 | for j = 1 : n |
最終我們將 歸一化得到標準正交基 。
注意:CGS 始終使用原始向量 與之前的基向量計算投影
簡單進行數學證明
定義第 步生成的向量
選取任意一個之前的基向量 (其中 ),計算它與 的內積 :
利用內積的線性性質,將 乘進去:
由於前提假設 是兩兩正交的,所以在求和符號 中:
因此,求和項中只剩下 這一項:
分子分母中的標量 相互抵消:
證畢
如果在 CGS(經典格拉姆-施密特正交化)中計算 時發生誤差,導致 是一個很小但非零的數值,這個誤差將不會在隨後的任何計算中被修正:
我們可以看出 與 或 都不正交。
1 | for j = 1 : n |
最終我們將 歸一化得到標準正交基 。
區別在於,一旦算出來一個向量 ,立即用它去更新後面所有的向量(減去向量在 上的投影),使得後面所有的向量與這個向量 正交。
假設 MGS 出現: 很小但非零。
對於第三個向量 :
此時 是第三個向量在歸一化之前的最終形式。
讓我們檢查正交性,假設不再產生其他誤差:
所以,我們保留了對 的正交性。
接下來看 :
由此可得:
由於 非常小, 就更小了。因此 中的誤差和 CGS 差不多,但我們消除了 中的誤差,使得誤差更小。
在電腦中,由於浮點運算的特殊性,有許多數學方法需要重新考慮,儘量提高數值穩定性。這使得我們有必要重新審視我們學習過的數學知識,針對電腦的特殊性進行重新設計與優化。
矩陣的 QR 分解在電腦運算中可能造成誤差,本文探討一下一種改進版本的 Gram-Schmidt 正交化方法。
經典的 Gram-Schmidt 方法可能造成數值不穩定性。在電腦中,舍入誤差可能會累積,造成得到的正交基並不具有正交性。
我們先來回顧一下經典的 Gram-Schmidt 方法:
1 | for j = 1 : n |
最終我們將 歸一化得到標準正交基 。
注意:CGS 始終使用原始向量 與之前的基向量計算投影
簡單進行數學證明
定義第 步生成的向量
選取任意一個之前的基向量 (其中 ),計算它與 的內積 :
利用內積的線性性質,將 乘進去:
由於前提假設 是兩兩正交的,所以在求和符號 中:
因此,求和項中只剩下 這一項:
分子分母中的標量 相互抵消:
證畢
如果在 CGS(經典格拉姆-施密特正交化)中計算 時發生誤差,導致 是一個很小但非零的數值,這個誤差將不會在隨後的任何計算中被修正:
我們可以看出 與 或 都不正交。
1 | for j = 1 : n |
最終我們將 歸一化得到標準正交基 。
區別在於,一旦算出來一個向量 ,立即用它去更新後面所有的向量(減去向量在 上的投影),使得後面所有的向量與這個向量 正交。
假設 MGS 出現: 很小但非零。
對於第三個向量 :
此時 是第三個向量在歸一化之前的最終形式。
讓我們檢查正交性,假設不再產生其他誤差:
所以,我們保留了對 的正交性。
接下來看 :
由此可得:
由於 非常小, 就更小了。因此 中的誤差和 CGS 差不多,但我們消除了 中的誤差,使得誤差更小。
在電腦中,由於浮點運算的特殊性,有許多數學方法需要重新考慮,儘量提高數值穩定性。這使得我們有必要重新審視我們學習過的數學知識,針對電腦的特殊性進行重新設計與優化。