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



我有一个行列式为零的方阵,我需要在 R 编程中找到该矩阵的逆矩阵。有可能吗,如果是,如何? 当我使用 solve() 函数时,由于行列式为 0,因此会出现错误。

行列式为 0 的矩阵没有逆矩阵,但可以计算广义逆矩阵(请查阅摩尔彭罗斯逆矩阵),它不是真正的逆矩阵,但可能有用,具体取决于您要做什么。 请参阅 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

由于矩阵的反转包括每个单元格按其行列式除法,因此不可能反转行列式为零的矩阵。

相关内容

最新更新