从solve()和ginv()得到错误的逆矩阵

Yuk*_*kun -1 r matrix inverse

`我试图得到一个逆矩阵

      [,1]  [,2]  [,3]
[1,]    1    rou   0
[2,]  rou  1+rou^2 rou
[3,]    0    rou   1
Run Code Online (Sandbox Code Playgroud)

手工计算的逆矩阵应该是

                 1     rou  rou^2
 1/(1-rou)       rou    1   rou
                 rou^2 rou   1
Run Code Online (Sandbox Code Playgroud)

以rou = 0.3为例

a=matrix(c(1,0.3,0,0.3,1.09,0.3,0,0.3,1),nrow=3)

a [,1] [,2] [,3] [1,] 1.0 0.30 0.0 [2,] 0.3 1.09 0.3 [3,] 0.0 0.30 1.0

其手动计算的逆矩阵是以下矩阵

      [,1]       [,2]       [,3]
[1,]  1.0989011  0.3296703  0.0989011
[2,]  0.3296703  1.0989011 0.3296703
[3,]  0.0989011  0.3296703  1.0989011
Run Code Online (Sandbox Code Playgroud)

通过使用solve(a)ginv(a)在R中,我得到了

   [,1]       [,2]       [,3]
[1,]  1.0989011 -0.3296703  0.0989011
[2,] -0.3296703  1.0989011 -0.3296703
[3,]  0.0989011 -0.3296703  1.0989011
Run Code Online (Sandbox Code Playgroud)

我想知道为什么有负面迹象.以前有人遇到过这个问题吗?怎么解决?

提前致谢!

跟进:我检查了%*%求解(a)并且确实如此

          [,1]      [,2] [,3]
[1,]  1.000000e+00    0    0
[2,] -6.938894e-18    1    0
[3,]  0.000000e+00    0    1
Run Code Online (Sandbox Code Playgroud)

跟进2:我发现我的错误是我在计算辅助因子矩阵时忘了为某些元素添加负号

ely*_*ase 5

我认为你在手算中犯了一个错误.这是正确的结果:

在此输入图像描述

单击此处可以轻松进行这些计算.

  • @Yukun但是它!这是一个数值结果,所以你可能会遇到一些错误.7e-18非常小. (2认同)