如何在Math.NET Numerics中实现QR分解?
是Gram-Schimdt还是Givens旋转?我觉得它是用Gram-Schimdt实现的,但我不确定。我找不到实施方案。
根据结果,与Gram-Schimdt的QR分解与Givens旋转不同吗?
我使用Givens旋转为矩阵生成(手动)QR分解,然后使用MathNet.Numerics.LinearAlgebra.Generic.Factorization.QRMethod
(我相信实现Gram-Schimdt)生成QR分解,结果略有不同。数字之间的差异大约是1E-16(不是那么大),有些行的符号相反(* -1)(这是真正的问题 - 我认为这是因为MathNet.Numerics实现了不同的QR算法)。
你能建议一些使用Givens旋转执行QR分解的库吗?
答案 0 :(得分:0)
根据documentation,它是使用Householder reflections实现的:
QR分解的计算在施工时完成 通过Householder转型。
如您所述,不同的方法可以产生具有小数值差异或负行的答案。有关详细信息,请参阅Wikipedia article。