-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

ginv行列の一般化された逆行列は、MASSパッケージの関数を使用して計算できます。

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 に答える