Как выполнить вращение Якоби (методы Якоби) для данной матрицы J(p,q,theta)
Существует вращение (c = cos (theta) и s = sin (theta))
[c s
-s c]
Например, как мы можем оценить вращение для следующей матрицы
A = [-17.7147 -38.4117 30.6475
-51.3024 17.3859 -10.0354
-19.3323 -38.8931 30.3686
-51.2891 18.9043 -11.1523
-21.42 -39.2796 29.9065
-51.1701 20.7146 -12.4891
-24.2543 -39.5276 29.3515
-51.0782 22.9095 -14.1458]
Используя C ++ Eigen libaray, результат будет следующим: http://eigen.tuxfamily.org/dox -3.2 / classEigenJ(p,q,theta)
1JacobiRotation.html
Result = [ 110.564 -7.77137 -0.308057
0 87.445 -64.7691
0 0 1.86159
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0]
Использование встроенной функции matlab qr
([~,R]=qr(A)
) дает мне следующее:
R = [ 110.5645 -7.7714 -0.3081
0 -87.4451 64.7691
0 0 -1.8616
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0]
Как видно, результат первой строки одинаков в C ++ и Matlab. тогда как знаки второго и третьего ряда не совпадают. Какое правильное решение или как его можно реализовать в Matlab? Спасибо!!