因此,如果矩阵的行列式等于零,那么矩阵必须是奇异的(不可逆)是一个数学事实。现在,我遇到的问题是,当我计算矩阵的行列式时,它等于零,但是,当我计算逆矩阵时,它就存在了。我认为这与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
答案 0 :(得分:4)
对于大型矩阵,行列式可能太大或太小,溢出double
精度。
行列式是特征值的乘积:例如,如果它们都是.0001,则矩阵是可逆的,但行列式是1e-400
,它太小了,只能表示为0。
您可以查看行列式的对数,
determinant(R, logarithm=TRUE)
或直接,特征值
eigen(R, only.values=TRUE)