gradma_JPH {lazy.symbolic} | R Documentation |
関数の解析的な一階導関数の数値値を計算
Description
英語のヘルプファイルは: gradma
Arguments
expr |
微分対象となる関数 |
... |
name=value の形式での数値の割り当て |
values |
数値の割り当てを文字列で与える |
dexpr |
解析的に得られた expr の X に関する一階導関数 |
sym |
=1 の場合は X が対称行列であることを指定 |
ntogoback |
行列が定義されている環境までの階層数 |
print |
=1 の場合は結果を表示 |
debug |
=1 の場合は中間結果を表示 |
Examples
## Not run:
# 微分対象となる関数
func1="tr(A%*%X)"
# 変数の数値値
Xn=demomat(3,2)
An=demomat(2,3)
Gradmn1 <- gradmn( func1, X=Xn, A=An, print=1, debug=0 )
Gradma1 <- gradma( func1, X=Xn, A=An, print=1, debug=0 )
printm(Gradmn1,Gradma1, fmt="9.5")
printm(max(abs(Gradmn1-Gradma1)))
# X が対称行列の場合
Xn=demomat(3,3, shape="sym")
An=demomat(3,3)
Gradmn1s <- gradmn( func1, X=Xn, A=An, sym=1, print=1, debug=0 )
Gradma1s <- gradma( func1, X=Xn, A=An, sym=1, print=1, debug=0 )
printm(Gradmn1s,Gradma1s, fmt="9.5")
printm(max(abs(Gradmn1s-Gradma1s)))
# 微分対象となる関数
func5="tr(A%*%t(X)%*%B%*%X%*%C)"
# X に関する解析的導関数
dexpr5="B%*%X%*%C%*%A+t(B)%*%X%*%t(A)%*%t(C)"
# 変数の数値値
set.seed(1701)
Xn=matrix(rnorm(3*2),3,2)
An=matrix(rnorm(3*2),3,2)
Bn=matrix(rnorm(3*3),3,3)
Cn=matrix(rnorm(3*2),2,3)
Gradmn5 <- gradmn( func5, X=Xn, A=An, B=Bn, C=Cn, print=1, debug=0 )
Gradma5 <- gradma( func5, dexpr=dexpr5, X=Xn, A=An, B=Bn, C=Cn
, print=1, debug=0 )
printm(Gradmn5,Gradma5, fmt="9.5")
printm(max(abs(Gradmn5-Gradma5)))
# X が対称行列の場合
# 変数の数値値
set.seed(1701)
Xn=matrix(rnorm(3*3),3,3)
Xn=Xn+t(Xn)
An=matrix(rnorm(3*3),3,3)
Bn=matrix(rnorm(3*3),3,3)
Cn=matrix(rnorm(3*3),3,3)
Gradmn5s <- gradmn( func5, X=Xn, A=An, B=Bn, C=Cn, sym=1, print=1, debug=0 )
Gradma5s <- gradma( func5, dexpr=dexpr5, X=Xn, A=An, B=Bn, C=Cn, sym=1
, print=1, debug=0 )
printm(Gradmn5s,Gradma5s, fmt="9.5")
printm(max(abs(Gradmn5s-Gradma5s)))
## End(Not run)
[Package lazy.symbolic version 1.0.0.20250830 ]