计算R中矩阵行列式的替代方法

时间:2013-08-08 03:00:52

标签: r determinants

因此,如果矩阵的行列式等于零,那么矩阵必须是奇异的(不可逆)是一个数学事实。现在,我遇到的问题是,当我计算矩阵的行列式时,它等于零,但是,当我计算逆矩阵时,它就存在了。我认为这与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

1 个答案:

答案 0 :(得分:4)

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

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

determinant(R, logarithm=TRUE)

或直接,特征值

eigen(R, only.values=TRUE)