我查看了给定矩阵的特征向量矩阵,但当我尝试反转它时,我在eigenvector_matrix_inv()
中出错了。
require 'matrix'
m = Matrix[ [0.5703125, 1.8369140625, 0.0, 0.0],
[-0.6875, -0.4609375, 0.0, 0.0],
[0.0, 0.0, -2.1796875, 8.7119140625],
[0.0, 0.0, -0.6875, 2.2890625] ]
meigen = m.eigen.eigenvector_matrix
meiveni = m.eigen.eigenvector_matrix_inv
# .../matrix.rb:930:in `block in inverse_from': Not Regular Matrix (ExceptionForMatrix::ErrNotRegular)
它不应该是单数,与Mathematica
:
mruby = {{0.5703125, 1.8369140625, 0.0, 0.0}, {-0.6875, -0.4609375,
0.0, 0.0}, {0.0, 0.0, -2.1796875, 8.7119140625}, {0.0,
0.0, -0.6875, 2.2890625}};
Inverse[Eigenvectors[mruby]]
给
{{0.586146 - 0.302685 I, 0.586146 + 0.302685 I, 0. + 0. I,
0. + 0. I}, {0. - 1.07831 I, 0. + 1.07831 I, 0. + 0. I,
0. + 0. I}, {0. + 0. I, 0. + 0. I, 0.519354 + 1.16217 I,
0.519354 - 1.16217 I}, {0. + 0. I, 0. + 0. I, 0. - 4.53135 I,
0. + 4.53135 I}}
我做错了什么?
我应该特别注意Ruby中特定的东西吗?
答案 0 :(得分:0)
当您执行特征值问题时,不会反转矩阵。有很多算法,但反演不是其中之一。
你的矩阵有点奇怪:你有两个正对角线和两个负对角元素。我认为具有复杂条目的特征向量表明它不是你通常拥有的:具有真实特征向量的真实特征值。
您的矩阵不正确或您选择了错误的算法。看看你有什么Hessian矩阵并查看适当的算法。