ruby - 这是 Matrix 类中的 ruby​​ 错误吗?

标签 ruby matrix eigenvalue eigenvector

我使用 ruby​​ 中的 Matrix 类来计算特征值和特征向量。使用此代码:

m = Matrix[[0.6868,0.6067],[0.6067,0.5978]]
v, d, v_inv = m.eigensystem

正确的结果应该是:

[ 1.25057433  0.03398123]
[[ 0.73251454 -0.68075138]
 [ 0.68075138  0.73251454]]

我使用 Python 通过 numpy 确认了这一点。

但是,我得到的结果如下:

d=[[0.033970204576497576,   0],
 [0,    1.2506297954235022]]

v=[[0.6807528514962294, 0.7325131774785713],
 [-0.7325131774785713,  0.6807528514962294]]

这是 ruby​​ 的错误吗?我的 ruby 版本如下:

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

最佳答案

这绝不是一个答案,但为了格式化,我会把它放在这里:

说到数学,我会用 检查结果的正确性:

> entries <- c(0.6868, 0.6067, 0.6067, 0.5978)
> input <- matrix(entries, nrow=2, byrow=TRUE)
> input

#        [,1]   [,2]
# [1,] 0.6868 0.6067
# [2,] 0.6067 0.5978

> input_eigen <- eigen(input)
> input_eigen 

$values
# [1] 1.2506298 0.0339702

$vectors
#            [,1]       [,2]
# [1,] -0.7325132  0.6807529
# [2,] -0.6807529 -0.7325132

我相信上面的结果,这意味着 ruby​​ 可能比 python/numpy 做得更好。

关于ruby - 这是 Matrix 类中的 ruby​​ 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281924/

相关文章:

ruby-on-rails - 在 Ruby on Rails 中重构 group_by 的切换 block 语句

ruby-on-rails - Ruby 的 ERB 格式 "officially"在哪里定义的?

c - 在 C 中使用#define 定义全局 int 和二维矩阵

python - scipy eigh 给出正半定矩阵的负特征值

python - MATLAB 的 place 函数有 python 版本吗

ruby - 如何在 Ruby 中创建 "class cluster"(带有具体子类实例的工厂类)?

ruby-on-rails - Rails : JSON attribute is handled as a method. 无方法错误

c++ - 如何加快C++中2D三角矩阵的内存分配?

r - 为什么乔列斯基分解不能得到与简单矩阵求逆相同的结果?

python - numpy.linalg.eig 如何决定返回特征值的顺序?