2013-03-18 56 views
1

如何在Math.NET Numerics中實現QR分解?Math.NET Numerics中的QR分解

它與Gram-Schimdt還是Givens旋轉?我有一種感覺,它與Gram-Schimdt一起實施,但我不確定。我找不到實施。

QR分解的Gram-Schimdt與Givens旋轉的區別在於結果?

我生成(手動)QR分解使用G​​ivens旋轉矩陣,然後生成QR分解使用MathNet.Numerics.LinearAlgebra.Generic.Factorization.QRMethod(我相信實施Gram-Schimdt),結果略有不同。數字之間的差別大約是1E-16(不是那麼大),有些行的符號相反(* -1)(這是真正的問題 - 我認爲這是因爲MathNet.Numerics實現了不同的QR算法)。

你可以推薦一些使用Givens旋轉執行QR分解的庫嗎?

回答

0

按照documentation,它使用Householder reflections實現:

QR分解的計算是在施工時間 通過Householder變換來完成。

正如您所描述的,不同的方法可以產生具有小數值差異或負數行的答案。有關更多信息,請參閱Wikipedia article