4

したがって、行列式がゼロに等しい場合、行列は特異でなければならない (可逆ではない) というのは数学的な事実です。今、私が直面している問題は、マトリックスの行列式を計算するとゼロに等しいが、逆行列を計算するとそれが存在することです。両者が一致していないのは、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 に答える