矩阵反向出错

时间:2015-02-13 22:46:58

标签: 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]
  

" solve.default(l)中的错误:系统在计算上是单数的:   互惠条件数= 2.14511e-22"。

然而,Matlab在不给出任何错误消息的情况下进行逆向计算。有谁知道R给我错误的原因?是否有任何其他计算逆的方法

1 个答案:

答案 0 :(得分:5)

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)