R 从solve()和ginv()中获取错误的逆矩阵
`我想得到一个矩阵的逆R 从solve()和ginv()中获取错误的逆矩阵,r,matrix,inverse,R,Matrix,Inverse,`我想得到一个矩阵的逆 [,1] [,2] [,3] [1,] 1 rou 0 [2,] rou 1+rou^2 rou [3,] 0 rou 1 手动计算的逆矩阵应为 1 rou rou^2 1/(1-rou) rou 1 rou rou^2 rou 1 以rou=0.3为例 a=矩阵(c(1,0.3,0,0.3,1.09,0.3,0
[,1] [,2] [,3]
[1,] 1 rou 0
[2,] rou 1+rou^2 rou
[3,] 0 rou 1
手动计算的逆矩阵应为
1 rou rou^2
1/(1-rou) rou 1 rou
rou^2 rou 1
以rou=0.3为例
a=矩阵(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
通过在R中使用solve(a)
或ginv(a)
,我得到了
[,1] [,2] [,3]
[1,] 1.0989011 -0.3296703 0.0989011
[2,] -0.3296703 1.0989011 -0.3296703
[3,] 0.0989011 -0.3296703 1.0989011
我想知道为什么会有负面的迹象。以前有人遇到过这个问题吗?如何修复它
提前谢谢
跟进:我检查了%*%解决方案(a),结果是
[,1] [,2] [,3]
[1,] 1.000000e+00 0 0
[2,] -6.938894e-18 1 0
[3,] 0.000000e+00 0 1
后续行动2:
我发现我的错误是,在计算辅因子矩阵时,我忘了为某些元素添加负号。我认为您在手工计算中犯了一个错误。这是正确的结果:
单击此处可获得进行此类计算的简单方法。您是否考虑过您的数学可能不正确?您是否检查了
a%*%您的\u反向
是否接近身份a%*%solve(a)
is.R不是Mathematica。如果你想要符号代数,请使用不同的工具。不,你不想反转矩阵。但这与R输出也不一致:(@Yukun,但它是!这是一个数值结果,所以你可以预期会有一些错误。7e-18非常小。也请查看?zapsmall