4

因此,如果矩阵的行列式等于 0,则矩阵必须是奇异的(不可逆),这是一个数学事实。现在,我遇到的问题是,当我计算矩阵的行列式时,它等于零,但是,当我计算逆时它存在。我认为这与 R 计算两者不一致的决定因素的方式有关。这是我正在尝试的代码(我不会打印求解的结果,因为矩阵是 100 x 100)。

> Rinv = solve(R)
> 
> det(R)
[1] 0
> 
> #Using a Cholesky Factorization
> L = chol(R)
> Q = t(L)
> 
> det(L)*det(Q)
[1] 0
4

1 回答 1

8

对于大型矩阵,行列式可能太大或太小并溢出double精度。行列式是特征值的乘积:例如,如果它们都是 .0001,则您的矩阵是可逆的,但行列式是1e-400,它太小了,只能表示为 0。

您可以改为查看行列式的对数,

determinant(R, logarithm=TRUE)

或者,直接,特征值

eigen(R, only.values=TRUE)
于 2013-08-08T06:38:14.950 回答