A=matrix(c(1,2,3,4,5,6,7,8,1),3);A
det(A); dim(A); min(dim(A)) 
A1=solve(A)
round(A%*,4)

#pivot1 : 한 행에 실수배
p1=function(AA,ii,aa){
AA[ii,]=aa*AA[ii,]
return(AA) 
}
p1(A,2,10)

#pivot2 
p2=function(AA,ii1,ii2) {
 tmptmp=AA[ii1,]
 AA[ii1,]=AA[ii2,]
 AA[ii2,]=tmptmp
 return(AA)
}
p2(A,3,1)

#pivot3
p3=function(AA,aa,ii1,ii2) {
 AA[ii2,]=aa*AA[ii1,]+AA[ii2,]
return(AA) 
}
p3(A,-2,1,2)
#######################################
gg=function(AAA){
           ll=1:(dim(AAA)[1])
           flag=0
           for(ii in 1:(min(dim(AAA)))){
                     aaa=AAA[ii-flag,ii]
                     if(round(aaa,8)==0){
                                ii3=ll[abs(round(AAA[,ii],8))>0 & ll>ii-flag]
                                if(length(ii3)!=0){
                                          AAA=p2(AAA,ii-flag,max(ii3))
#                                         print(paste("if.",ii,", flag=",flag))</div><div style="margin: 0px; padding: 0px; color: rgb(64, 64, 64); font-family: gulim, sans-serif; font-size: 13px; line-height: 22.1px;">#                                         print(AAA)
                                          aaa=AAA[ii-flag,ii]
                                          AAA=p1(AAA,ii-flag,1/aaa)
#                                         print(paste("for.",ii))
#                                         print(AAA)
                                          for(ii2 in (ii-flag+1):(dim(AAA)[1])){
aaa=-AAA[ii2,ii]
AAA=p3(AAA,aaa,ii-flag,ii2)
# print(paste("for.",ii,"-",ii2))
# print(AAA)
                                          }
                                }else{
                                          flag=flag+1
                                }
                     }else{
                                AAA=p1(AAA,ii-flag,1/aaa)
#                              print(paste("for.",ii))
#                              print(AAA)
                                if((ii-flag)!=min(dim(AAA))){
                                for(ii2 in (ii-flag+1):(dim(AAA)[1])){
                                          aaa=-AAA[ii2,ii]
                                          AAA=p3(AAA,aaa,ii-flag,ii2)
#                                         print(paste("for.",ii,"-",ii2))
#                                         print(AAA)
                                }
                                }
                     }
           }
           return(AAA)
}
#######################################

위와 같은 행렬을 입력하면 역삼각행렬을 출력하는 gg() 함수를 만들었는데요.

gg(A)=A* 라고 명명한다면

B** = A* x A의역행렬  이라 할때 

B** 를 구하는 함수를 만들고 싶습니다. 

어떻게 해야 좋을까요