Ginv_JPH {lazy.symbolic}R Documentation

一般化逆行列(Generalized Inverse)

Description

入力行列 X の一般化逆行列を計算します。

Arguments

X

入力行列

MP

= 1 の場合、Moore-Penrose 逆行列を計算

method

計算方法。詳細は下記参照

orth

QRGS 関数で QR またはランク分解を計算するオプション

MP1

この関数が再帰的に使用される場合の MP オプション値

method1

この関数が再帰的に使用される場合の method オプション値

MP2

この関数が再帰的に使用される場合の MP オプション値

method2

この関数が再帰的に使用される場合の method オプション値

nopermute

= 1 の場合、matSwp による行/列の置換を禁止

eps

matSwp におけるピボット許容誤差

tol

ゼロ特異値を検出するための相対許容誤差

MASS

= 0 の場合、MASS::ginv 相当の設定を使用しない

chkginv

= 1 の場合、結果が有効かチェック

epsc

chkinv 用の許容誤差

Details

英語のヘルプファイルは: Ginv

入力行列 X は実行列でなければなりません。

MP= および method= の組み合わせにより、Moore-Penrose 逆行列および一般化逆行列の計算方法が決まります。 MP=1 の場合、4つの方法はいずれも同じ行列を返します。 MP=0 の場合、結果は異なる場合があります。 詳細は元の説明を参照してください。

orth、MP1、method1、MP2、method2 は特定の組み合わせでのみ有効です。

注意: 旧バージョン(20200703以前)では MP=0 が常に matSwp を使用する意味でしたが、 現バージョンでは誤解を招くため修正されています。

また、一般化逆行列 ginvX から生成される行列も g1 条件を満たす一般化逆行列となります。

Examples

set.seed(1701)
nr=9; nc=6; num=0:9
A=matrix(sample(num,nr*nc,replace=1),nr,nc)
A=cbind(0,A[,1],0,A[,2],0,A[,1]+A[,2],0)
A=rbind(0,A[1,],0,A[2,],0,A[3:nrow(A),],0)
rownames(A)=paste("r",1:nrow(A),sep="")
colnames(A)=paste("c",1:ncol(A),sep="")

MP=1
for( method in 1:4 ){
  Print(MP,method)
  ginvA=Ginv(A, MP=MP, method=method, chkginv=2)
  Print(A,round(ginvA, 5))
}
MP=0
for( method in 1:4 ){
  Print(MP,method)
  ginvA=Ginv(A, MP=MP, method=method, chkginv=2)
  Print(A,round(ginvA, 5))
}

# 一般化逆行列から生成
set.seed(1701)
Y=matrix(sample(0:9, ncol(A)*nrow(A), replace=1), ncol(A), nrow(A))
ginvA=Ginv(A, MP=0, method=1)
Print(ginvA)
ginvA2=ginvA + Y%*%(diag(nrow(A))-A%*%ginvA)
temp=chkginv(A, ginvA2, print=2)
Print(ginvA2)

ginvA3=ginvA + (diag(ncol(A))-ginvA%*%A)%*%Y
temp=chkginv(A, ginvA3, print=2)
Print(ginvA3)

ginvA4=ginvA + Y%*%Q(A, Ginv=1)
temp=chkginv(A, ginvA4, print=1)
Print(ginvA4)


[Package lazy.symbolic version 1.0.0.20250830 ]