【问题标题】:Alternative ways to calculate the determinant of a matrix in R在 R 中计算矩阵行列式的替代方法
【发布时间】:2013-08-09 15:30:20
【问题描述】:

因此,如果矩阵的行列式等于 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

【问题讨论】:

  • 可能是浮点问题(不打印到完整的十进制值。)。试试det(R) == 0L
  • > det(R)==0L [1] TRUE
  • 那是什么意思?
  • 如果可能的话,可能值得给你的矩阵 R 提供一个链接,以便人们可以检查它。
  • 我绝对可以做到。有简单的方法吗?

标签: r determinants


【解决方案1】:

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

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

determinant(R, logarithm=TRUE)

或者,直接,特征值

eigen(R, only.values=TRUE)

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2013-05-12
    • 2021-12-24
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2013-05-12
    相关资源
    最近更新 更多