analyze_expr_JPH {lazy.symbolic} | R Documentation |
式の構造の表示
Description
英語のヘルプファイルは: analyze_expr
Arguments
expr |
文字列としての式。 |
sort |
= 1 ならば項を並べ替える。 |
print |
= 0 ならば結果を表示しない。 |
debug |
= 1 ならば途中結果を表示。 |
Details
結果は tab
という名前の行列になる。
.
以下の式
"-inv(A)+(B+C)+D%*%E+F%*%(G-(H)-(I)+J)"
の結果は:
topers o1 factor_1 o2 factor_2 ----------------------------------------------------- term_1 - inv(A) term_2 + (B+C) term_3 + D %*% E term_4 + F %*% (G-(H)-(I)+J)
各行は各項 term に対応しており、各項は因子 factor に分解される。
topers
と o1
は factor1 に掛かる符号.
(o1
は空の可能性がある。)
o2
は factor2
に掛かる符号, 等々.
topers
と o1
は加算的な演算子, + or -
, また op2, op3,...
, は乗算的演算子, *, %*%, .
もtの式は以下の様にして復元することが出来る:
paste( apply(tab,1, function(x){paste(x,collapse="")} ), collapse="")
Value
以下の要素からなるリスト
tab 結果の表,
valid 式と見なせるか否かのフラグ,
identical 復元した式が入力と等しいか否かのフラグ.
Examples
analyze_expr( "-inv(A)+(B+C)+D%*%E+F%*%(G-(H)-(I)+J)" )
analyze_expr( "-inv(A)+(B+C)+D%*%E+F%*%(G-(H)-(I)+J)", sort=1 )
# recovery
expr <- "-inv(A)+2*(B-C)+Psi(X)"
tab <- analyze_expr( expr )$tab
expr2 <- paste(apply(tab,1, function(x){paste(x,collapse="")}), collapse="")
identical(expr,expr2)
# scalar expressions
set.seed(1702)
nexpr=20
for( i in 1:nexpr ){
# generate expression
natom=10
expr=gen_random_expr( natom=natom, nparen=4, oper=c("*","+","-") )
if( runif(1) < 0.2 ) expr=sub( "a", "F(a)", expr )
if( runif(1) < 0.3 ) expr=sub( "d", "F1(d)", expr )
if( runif(1) < 0.2 ) expr=sub( letters[natom], "Ff2(x)", expr )
# analyze expression
res=analyze_expr( expr, print=1 )
}
# matrix expressions
set.seed(1702)
nexpr=20
for( i in 1:nexpr ){
# generate expression
natom=10
expr=gen_random_expr( natom=natom, nparen=4
, alpha=LETTERS[1:natom], oper=c("%*%","+","-") )
if( runif(1) < 0.3 ) expr=sub( "A", "inv(A)", expr )
if( runif(1) < 0.3 ) expr=sub( "C", "diag(C)", expr )
if( runif(1) < 0.3 ) expr=sub( LETTERS[natom], "ginv(X)", expr )
# analyze expression
res=analyze_expr( expr, print=1 )
}
[Package lazy.symbolic version 1.0.0.20250830 ]