【问题标题】:Ruby Matrix::Eigenvalue Decomposition errorRuby Matrix::特征值分解错误
【发布时间】:2012-09-21 00:22:29
【问题描述】:

我查看了给定矩阵的特征向量矩阵,但是当我尝试对其求逆时,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 中的一些特殊的东西吗?

【问题讨论】:

    标签: ruby hessian-matrix matrix-decomposition


    【解决方案1】:

    当你做特征值问题时,你不会反转矩阵。算法有很多,但反演不是其中之一。

    你的矩阵有点奇怪:你有两个正对角元素和两个负对角元素。我认为具有复杂条目的特征向量表明它不是您通常拥有的:具有实特征向量的实特征值。

    要么您的矩阵不正确,要么您选择了错误的算法。看看你有没有 Hessian 矩阵,然后看看合适的算法。

    【讨论】:

    • 我想要复共轭特征值,这不是问题。问题是:为什么 Ruby 会抱怨?
    • 检查 Ruby 在幕后使用的算法。它可能不适合这种矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多