如何解决R 中的矩阵运算:我有一个行列式为零的方阵,我需要在 R 编程中找到它的逆矩阵是否可能,如果是,如何?
我有一个行列式为零的方阵,我需要在 R 编程中找到该矩阵的逆矩阵。是否可能,如果是,如何? 当我使用 solve() 函数时,由于行列式为 0,因此出现错误。
解决方法
行列式为 0 的矩阵没有逆矩阵,但可以计算出 generalized inverse(另见 Moore Penrose inverse),这不是真正的逆矩阵,但可能有用,具体取决于您想要做什么。请参阅 MASS 包(随 R 一起提供)中的 ginv
函数。
M <- matrix(1:9,3)
det(M)
## [1] 0
solve(M) # can't invert
## Error in solve.default(M) :
## Lapack routine dgesv: system is exactly singular: U[3,3] = 0
library(MASS)
ginv(M)
## [,1] [,2] [,3]
## [1,] -0.6388889 -5.555556e-02 0.5277778
## [2,] -0.1666667 -5.551115e-17 0.1666667
## [3,] 0.3055556 5.555556e-02 -0.1944444
虽然 M %*% ginv(M)
不是单位矩阵 ginv(M)
是这样的 M %*% ginv(M) %*% M
等于 M
。
all.equal(M %*% ginv(M) %*% M,M)
## [1] TRUE
,
由于矩阵的求逆包括每个单元格除以它的行列式,所以不可能求行列式为零的矩阵。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。