2013-03-18 60 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