微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 中的矩阵运算:我有一个行列式为零的方阵,我需要在 R 编程中找到它的逆矩阵是否可能,如果是,如何?

如何解决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] 举报,一经查实,本站将立刻删除。