-2
gi<-function(A){
  p<-nrow(A)
  q<-ncol(A)
  rA<-qr(A)$rank

  if(p==q){
    if(det(A)!=0){
      return(solve(A))
    }}

  G<-matrix(0,p,q)
  P<-combn(p,rA)
  Q<-combn(q,rA)


  for(i in 1:(factorial(p)/factorial(rA)/factorial(p-rA))){
    for(j in 1:(factorial(q)/factorial(rA)/factorial(q-rA))){

      if(det(matrix(A[P[,i],Q[,j]],rA,rA))!=0){
        G[P[,j],Q[,i]]<-t(solve(A[P[,i],Q[,j]]))
      }

      return(G)
    }}

}

我做了函数来找到 A 的广义逆但是如果我输入矩阵

b<-matrix(c(1,0,-1,0,2,4,-1,2,5,1,2,3),3,4)

有错误

4

1 回答 1

0

可以使用包中的函数计算矩阵的广义ginvMASS

b <- matrix(c(1,0,-1,0,2,4,-1,2,5,1,2,3),3,4)

library(MASS)
ginv(b)

结果:

            [,1]        [,2]          [,3]
[1,]  0.27777778  0.11111111 -5.555556e-02
[2,]  0.05555556  0.05555556  5.555556e-02
[3,] -0.22222222 -0.05555556  1.111111e-01
[4,]  0.33333333  0.16666667  2.775558e-17
于 2013-05-27T07:17:30.907 回答