Проблема с функцией разложения Jama по собственным значениям

StackOverflow https://stackoverflow.com/questions/720061

  •  23-08-2019
  •  | 
  •  

Вопрос

Я получаю неправильный собственный вектор (также проверяется путем многократного запуска, чтобы быть уверенным), когда я использую matrix.eig().Матрица - это:

1.2290 1.2168 2.8760 2.6370 2.2949 2.6402
1.2168 0.9476 2.5179 2.1737 1.9795 2.2828
2.8760 2.5179 8.8114 8.6530 7.3910 8.1058
2.6370 2.1737 8.6530 7.6366 6.9503 7.6743
2.2949 1.9795 7.3910 6.9503 6.2722 7.3441 
2.6402 2.2828 8.1058 7.6743 7.3441 7.6870

Функция возвращает собственные векторы:

-0.1698  0.6764  0.1442 -0.6929 -0.1069  0.0365
-0.1460  0.6478  0.1926  0.6898  0.0483 -0.2094
-0.5239  0.0780 -0.5236  0.1621 -0.2244  0.6072
-0.4906 -0.0758 -0.4573 -0.1279  0.2842 -0.6688
-0.4428 -0.2770  0.4307  0.0226 -0.6959 -0.2383
-0.4884 -0.1852  0.5228 -0.0312  0.6089  0.2865

Matlab выдает следующий собственный вектор для того же ввода:

0.1698 -0.6762 -0.1439  0.6931  0.1069  0.0365
0.1460 -0.6481 -0.1926 -0.6895 -0.0483 -0.2094
0.5237 -0.0780  0.5233 -0.1622  0.2238  0.6077
0.4907  0.0758  0.4577  0.1278 -0.2840 -0.6686
0.4425  0.2766 -0.4298 -0.0227  0.6968 -0.2384
0.4888  0.1854 -0.5236  0.0313 -0.6082  0.2857

Собственные значения для matlab и jama совпадают, но собственные векторы первых 5 столбцов имеют обратный знак, и только последний столбец является точным.

Есть ли какие-либо проблемы с типом входных данных, которые Jama.Matrix.EigenvalueDecomposition.eig() принимает или какая-либо другая проблема с тем же самым?Пожалуйста, скажите мне, как я могу исправить ошибку.Заранее благодарю.

Это было полезно?

Решение

Здесь нет ошибки, оба результата верны - как и любой другой скаляр, умноженный на собственные векторы.

Существует бесконечное количество собственных векторов, которые работают - это просто соглашение, согласно которому большинство программ сообщают о векторах, длина которых равна единице.То, что Jama сообщает о собственных векторах, равных в -1 раз больше, чем в Matlab, вероятно, является просто артефактом используемого ими алгоритма.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top