remove_paren_JPH {lazy.symbolic} | R Documentation |
式から冗長な括弧を除去
Description
英語のヘルプファイルは: remove_paren
Arguments
expr |
式または文字列 |
debug |
= 1 の場合、中間結果を表示 |
Value
文字列
Examples
expr="A%*%(t(B)%*%(diag(C+D))%*%E)"
remove_paren(expr)
expr="E+(diag(F)%*%(G%*%(H-I+(t(J)-K-L))+(M*M))+diag(N))"
remove_paren(expr)
## Not run:
set.seed(1701)
nexpr <- 10
for( i in 1:nexpr ){
cat("."); if( i%%100 == 0 ) cat("\n")
# 元の式
expr1 <- gen_random_expr(natom=8, nparen=3, nparen2=3,
func=c("t","Diag"), pfunc=.5,
alpha=LETTERS[c(1:3,5:9)], oper=c("%*%","+","-"))
# remove_paren による変換
expr2 <- remove_paren(expr1)
# 古い Expand による変換
expr3 <- Expand(expr1, all=1)
# drop_parens による変換
expr12 <- safe_deparse(drop_parens(expr1, all=TRUE, in_biop=TRUE))
printm(expr12, expr2, expr3)
# 数値的確認
An <- demomat(2,2)
Bn <- demomat(2,2)+1
Cn <- demomat(2,2)+2
Dn <- demomat(2,2)+3
En <- demomat(2,2)+4
Fn <- demomat(2,2)+5
Gn <- demomat(2,2)+6
Hn <- demomat(2,2)+7
In <- diag(2)
values="A=An; B=Bn; C=Cn; D=Dn; E=En; F=Fn; G=Gn; H=Hn; I=In"
ee1 <- Eval(expr1, values=values, fullsymb=1)
ee2 <- Eval(expr2, values=values, fullsymb=1)
ee12 <- Eval(expr12, values=values, fullsymb=1)
ee3 <- Eval(expr3, values=values, fullsymb=1)
# エラーがあった場合のみ表示
MAD12 <- max(abs(ee1-ee2))
MAD112 <- max(abs(ee1-ee12))
MAD13 <- max(abs(ee1-ee3))
if( MAD12 > 1e-5 | MAD112 > 1e-5 | MAD13 > 1e-5 ){
printm(expr1, expr12, expr3, MAD12, MAD112, MAD13)
}
}
cat("\n")
## End(Not run)
[Package lazy.symbolic version 1.0.0.20250830 ]