Я пишу код, который включает поиск собственных векторов заданной матрицы, и был удивлен, что Ruby дает некоторые необоснованные результаты в простых случаях.
Например, следующая матрица имеет собственный вектор, связанный с собственным значением 1:
> m = Matrix[[0r, 1/2r, 1/2r, 1/3r],
[0r, 0r, 1/4r, 1/3r],
[0r, 1/4r, 0r, 1/3r],
[1r, 1/4r, 1/4r, 0r]]
Ruby достаточно хорошо находит собственные значения, но собственный вектор взрывается:
> m.eigen.eigenvalues[2]
=> 1.0000000000000009
m.eigen.eigenvectors[2]
=> Vector[5.957702309312754e+15, 5.957702309312748e+15, 5.957702309312743e+15, 5.957702309312753e+15]
Фактический собственный вектор должен быть (7, 4, 4, 9).
Разве это не беспокоит? Если Ruby не может обрабатывать крошечные матрицы, то как мы вообще можем ему доверять? Или я что-то не так делаю?
m*m.eigen.eigenvectors[2]
). Было бы полезно, если бы вы могли отправить отчет об ошибке, используя свой пример. Может быть, вы найдете даже небольшую матрицу, которая дает неверный результат? - person user1934428   schedule 13.12.2017