r - 逆矩阵中的误差

标签 r matlab matrix-inverse

我有协方差矩阵的估计

我想取这个矩阵的逆,R 给出了以下错误

A=[ 3529861.470  8785861.47  6920.344 17120.34;
     8785861.470 26209861.47 17120.344 51920.34;
    6920.344    17120.34    14.000    34.00;
    17120.344    51920.34    34.000   104.00]

"Error in solve.default(l) : system is computationally singular: reciprocal condition number = 2.14511e-22".

然而,Matlab 执行逆计算时没有给出任何错误消息。有谁知道 R 给我错误的原因吗?还有其他计算逆的方法

最佳答案

A <- matrix(c(3529861.470,8785861.47,6920.344,17120.34,
       8785861.470,26209861.47,17120.344,51920.34,
   6920.344,17120.34,14.000,34.00,
   17120.344,51920.34,34.000,104.00),
     nrow=4,byrow=TRUE)

solve(A) ## works on my system

##              [,1]         [,2]         [,3]        [,4]
## [1,]   -1.2515442    0.7617239     535.4871   -349.3141
## [2,]    0.7617072   -0.4635922    -325.9051    212.5957
## [3,]  535.4884664 -325.9130639 -229114.3516 149458.2734
## [4,] -349.3061387  212.5955306  149454.4973 -97492.7335

eigen(A)$values
## [1]  2.921525e+07  5.245875e+05  1.440703e+00 -3.061760e-06

rcond(A)  ## condition number
## [1] 7.516179e-14

如果您在反转矩阵时遇到问题,您应该能够调整 tol 参数,但这当然需要您自担风险 - 您将忽略矩阵运算的警告可能在数值上不稳定。

这是与

R Under development (unstable) (2015-02-11 r67792)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu precise (12.04.5 LTS)

关于r - 逆矩阵中的误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510046/

相关文章:

matlab - 如何在Matlab中使用allpassfilter消除声音中的噪音?

matlab - 在matlab中计算对角分块矩阵的逆矩阵

c++ - 逆矩阵 OpenCV。 Matrix.inv() 无法正常工作

r - 在 RHEL 6.5 上安装 RPostgreSQL libpq-fe.h 报错

windows - 在 R 的 expression() 命令中使用 Unicode

algorithm - 生成某些排列

r - R中有并行矩阵求逆的包吗

r - 如何计算arcsin(sgn(x)√|x|)?

r - 在剪贴板上放置一个没有换行符的字符串

matlab - 根据任意列的条目以非降序排列矩阵中的行