【发布时间】:2014-09-22 07:33:01
【问题描述】:
M矩阵
1000 793504755
793504755 629649829362825
这是我在 R 中的矩阵 M
solve(M) 给出这个错误:
solve(M)
Error in solve.default(M) :
system is computationally singular: reciprocal condition number = 8.36282e-20
而 excel 中的 MMINV 为这个 2 x 2 矩阵提供所需的输出
R 是否使用某种分解算法进行逆运算?为什么它没有为我的矩阵提供输出?矩阵行列式也不为零。事实上它是一个很大的值。
【问题讨论】:
-
请提供 Excel 结果。我不相信它在合理的数字误差范围内是正确的。你为什么要计算这个矩阵的逆矩阵?也许你可以避免这一步?
-
@Roland,这确实很奇怪。您可以自己反转它并通过执行
M <- matrix(c(1000, 793504755, 793504755, 629649829362825), 2, 2); M2 <- matrix(c(629649829362825, -793504755, -793504755, 1000), 2, 2);(1/(M[1,1]*M[2,2] - M[1,2]*M[1,2]))*M2之类的操作来获得结果,这确实提供了所需的结果 -
你可以通过
solve(m,tol=1e-40)得到an答案,但我不相信它! -
@BenBolker,为什么不呢?它给出了正确的结果,就像你用手计算一样
-
@DavidArenburg 浮点精度是这里的一个问题。
标签: r matrix inverse matrix-inverse