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 の場合、 |
eps |
|
tol |
ゼロ特異値を検出するための相対許容誤差 |
MASS |
= 0 の場合、 |
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 ]