如何找到R中矩阵的逆矩阵?
矩阵的逆可以借助solve函数在R中进行计算,大多数情况下,不使用R的人经常会错误地使用inv函数来实现此目的,但是在基R中没有称为inv的函数来找到逆矩阵
示例
请看以下矩阵及其逆数-
> M1<-1:4> M1<-matrix(1:4,nrow=2)
> M1
[,1] [,2]
[1,] 1 3
[2,] 2 4
> solve(M1)
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
> M2<-matrix(1:4,nrow=2,byrow=TRUE)
> M2
[,1] [,2]
[1,] 1 2
[2,] 3 4
> solve(M2)
[,1] [,2]
[1,] -2.0 1.0
[2,] 1.5 -0.5
> M3<-matrix(c(12,14,16,18,20,22,24,26,28,30,32,34),nrow=3)
> M3
[,1] [,2] [,3] [,4]
[1,] 12 18 24 30
[2,] 14 20 26 32
[3,] 16 22 28 34
> solve(M3)
Error in solve.default(M3) : 'a' (3 x 4) must be square
在这里,由于不能计算非平方矩阵的逆,因此函数求解会产生错误。
> M4<-matrix(c(12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42),nrow=4)> M4
[,1] [,2] [,3] [,4]
[1,] 12 20 28 36
[2,] 14 22 30 38
[3,] 16 24 32 40
[4,] 18 26 34 42
> solve(M4)
Error in solve.default(M4) :
Lapack routine dgesv: system is exactly singular: U[3,3] = 0
该输出显示错误,因为虽然矩阵M4是平方矩阵,但不存在矩阵M4的逆,但有时甚至不存在平方的逆。
让我们看一下一些具有更高维度的矩阵,它们具有相反的值-
> M5<-matrix(c(1,8,4,2,4,5,5,1,2,2,5,4,4,1,1,2),nrow=4)> M5
[,1] [,2] [,3] [,4]
[1,] 1 4 2 4
[2,] 8 5 2 1
[3,] 4 5 5 1
[4,] 2 1 4 2
> solve(M5)
[,1] [,2] [,3] [,4]
[1,] -0.07086614 0.17322835 -0.1417323 0.1259843
[2,] 0.11023622 -0.04724409 0.2204724 -0.3070866
[3,] -0.09448819 -0.10236220 0.1443570 0.1679790
[4,] 0.20472441 0.05511811 -0.2572178 0.1916010
> M6<-matrix(c(2,3,5,4,7,4,5,6,5,2,1,4,5,6,6,2,5,5,4,5,4,7,5,7,3),ncol=5)
> M6
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 1 2 4
[2,] 3 5 4 5 7
[3,] 5 6 5 5 5
[4,] 4 5 6 4 7
[5,] 7 2 6 5 3
> solve(M6)
[,1] [,2] [,3] [,4] [,5]
[1,] 5.000000e-01 -0.24000000 -0.2200000 1.194481e-16 0.260000000
[2,] 1.457168e-16 -0.20000000 0.4000000 -8.500145e-17 -0.200000000
[3,] -4.285714e-01 -0.12571429 0.1942857 2.857143e-01 -0.125714286
[4,] -3.571429e-01 0.50857143 0.1685714 -4.285714e-01 0.008571429
[5,] 2.857143e-01 0.09714286 -0.4228571 1.428571e-01 0.097142857
以上是 如何找到R中矩阵的逆矩阵? 的全部内容, 来源链接: utcz.com/z/357619.html