矩形行列の行列式
; 行列 (ただし, ) とする. の第成分をとする.
この行列式を
とする.
(i)
の場合
.
(ii)
の場合
,
ただし
はから第行と第列を除いた行列.
このように縦長の行列の行列が定義されている. このとき, Rでは, 次のように関数を作ればよい. PDF, Rのスクリプトファイル
Rでの矩形行列の定義 #Determinant of rectangular matrix
#Isamu Nagai
#Jun 1st. 2013
Det_for_rec_mat<-function(X){
#cat(X,"\n")
X<-as.matrix(X)
#cat(nrow(X),"\n")
if(ncol(X)==nrow(X)){return(det(X))}
if(nrow(X) if(ncol(X)==1){
return((-1)^(1:nrow(X))%*%X[,1])
}
else{
results<-0
for(i in 1:nrow(X)){
tempX<-as.matrix(X)
#cat("i=",i,",",nrow(tempX),"\n")
tempX<-tempX[-i,]
tempX<-tempX[,-1]
#cat(tempX,"\n")
results<-results+(-1)^(i-1)*X[i,1]*Det_for_rec_mat(tempX)
}
return(-results)
}
}
この色;行列として扱う変換を行う
この色;正方行列ならば組み込み関数のdetを使う
この色;行数>列数の仮定の下なので, 転置したものを使う
この色;列数が1の場合に定義 (i) の処理をするループ
この色;列数が2以上の場合に定義 (ii) の処理をする.
tempX[-i,]でi行目を消去, tempX[,-1]で1列目を消去している.
return(-results);なぜか符号が逆転するので, 修正
参考文献
R-Source 行列の扱い方
R-Source 行列の操作
R-Source 繰り返し文
たらたらたらり。 (覚書)列を削除・R
RWiki Rの関数定義の基本
Mapleでの関数の定義などはこちら
Matlabでの関数の定義などはこちら