我在matlab中进行实现来计算给定矩阵A的Hessenberg矩阵。 我理解数学并且我手工计算它,但我一直在采用相同的解决方案。
矩阵A =
-149.0000 -42.2037 -156.3165
537.6783 152.5511 554.9272
0 -0.0728 2.4489
我的结果=
-149.0000 -42.2037 -156.3165
537.6783 152.5511 554.9272
0 -0.0728 2.4489
matlab中的hess结果=
-149.0000 42.2037 -156.3165
-537.6783 152.5511 -554.9272
0 0.0728 2.4489
我获得的结果来自仅使用一个给定旋转
∈{1}(3,4)
1.0000 0 0
0 0.9987 0.0502
0 -0.0502 0.9987
G {1}(3,4).transpose * A * G {1}(3,4)应该得到正确的解决方案。
正如您所看到的,我获得的结果有一些不属于他们的减号。 我的实现是错误的还是hess实现错误还是它们都有效?
非常感谢提前!
答案 0 :(得分:0)
两者都有效。请注意:
A
已经处于Hessenberg上层状态。没有什么需要做到让它进入上Hessenberg形式;您可以P = I
和H = A
。我猜测Matlab使用Householder变换而不是Givens旋转来将矩阵减少到Hessenberg上层。 Householder变换是反思,因此具有负面决定因素。这可以翻转一些非对角线的标志。