simplify/constant - 根号や厳密な数値を引数とする関数の定数式を簡単化する
使い方
simplify(expr, constant)
パラメータ
expr - 式
constant - 正確な名前: 定数
|
説明
|
|
•
|
使用されるアプローチは、つぎの2ステップで簡単化の手続き(Simplification Procedure:SP)のセットを適用することから構成されます。
|
|
1) 和、積、関数呼び出しの形のconstant オブジェクトは、SPを使用し、 最も内側から始めて各ステップでの簡単化を組み合わせて簡単化されます。ルーチンは、分数冪の積、指数関数、様々な関数呼び出しを乗法逆元と共にかなり効率よく取り扱うことができます。
|
|
2) 結果として得られた式も根号を含む場合、前のステップで各オブジェクトに適用された簡単化の手続きが、今度は式全体に再び適用されます。
|
•
|
上記の項目で使用される簡単化の手続き SP は、打ち消しやより簡単な式になる可能性について推定するために、式のReal と Imaginary 部分の簡単化を行います。さらに、式、または、部分式が、機械精度実数 hardware floats を使用して、数値的に高速に評価することが可能な場合、 この情報はそのオブジェクトに対する厳密な有理数 exact rational の値(このような値が存在する場合)を決定するための出発点として使用されます。
|
•
|
simplify に入力を行う定数の部分式の簡単化は、自動的に実行されます。しかし、この簡単化のルーチンのセットを起動するためには、さらに引数 constant とともにsimplify を呼び出してください。
|
|
|
例
|
|
>
|
e1 := 1+2*cos(2/7*Pi)-2*cos(3/7*Pi)-2*cos(1/7*Pi);
|
| (2.1) |
>
|
simplify(e1, constant);
|
| (2.2) |
簡単化の様子
| (2.3) |
より複雑なステップをもつ例
>
|
e2 := (-1)^(6/7)-(-1)^(1/7)+(-1)^(4/7)+(-1)^(2/7)-(-1)^(3/7)+1-(-1)^(5/7);
|
| (2.4) |
>
|
abs(e2); # here abs doesn't help right away
|
| (2.5) |
実部と虚部を取り扱います
>
|
simplify(e2, constant);
|
| (2.6) |
実部と虚部についてこのような単純な取り扱いでは不十分な例ですが、式は (この場合、構造により) 有理数に等しくなります。
| (2.7) |
>
|
simplify(e3, constant);
|
| (2.8) |
non-elementary functions をもつ例
>
|
e4 := 1/64*Psi(1,1/8)*Pi*csc(1/8*Pi)/GAMMA(7/8)+1/64*Psi(1/8)^2*Pi*csc(1/8*Pi)/GAMMA(7/8)-1/64*Pi*Psi(1,1/8)/(sin(1/8*Pi)*GAMMA(7/8))-1/64*Pi*Psi(1/8)^2/(sin(1/8*Pi)*GAMMA(7/8))+1;
|
| (2.9) |
| (2.10) |
三角関数のベキを含む例
>
|
e5 := -1200/7*cos(3/7*Pi)^2*cos(1/7*Pi)+128/7*cos(3/7*Pi)^6-4/7*cos(3/7*Pi)*(120*cos(3/7*Pi)*cos(1/7*Pi)-192*cos(3/7*Pi)^5)-1200/7*cos(2/7*Pi)^2*cos(3/7*Pi)+128/7*cos(2/7*Pi)^6+4/7*cos(2/7*Pi)*(-120*cos(3/7*Pi)*cos(2/7*Pi)+192*cos(2/7*Pi)^5)+1200/7*cos(2/7*Pi)*cos(1/7*Pi)^2+128/7*cos(1/7*Pi)^6-4/7*cos(1/7*Pi)*(-120*cos(1/7*Pi)*cos(2/7*Pi)-192*cos(1/7*Pi)^5);
|
| (2.11) |
| (2.12) |
つぎのような場合 (積分の問題からの抜粋です)には、
>
|
e6 := -1/2*I*exp(I)*Ei(1,I)-1/2*Ei(1,I)*sin(1)+1/2*I*Ei(1,I)*cos(1)-1/2*Ei(1,-I)*sin(1)-1/2*I*Ei(1,-I)*cos(1)+1/2*I*exp(-I)*Ei(1,-I);
|
| (2.13) |
Re, Im, abs により式全体を簡単化することはできません。
| (2.14) |
これは、機械精度の浮動小数点を使用して評価することができません。
Error, unable to evaluate expression to hardware floats
| |
この部分式の中には、これらの手続きを適切に操作することにより簡単化され、もとの問題をこれらのより簡単な操作のスコープ内に収めれば十分なものがあります。結果は、次のようになります。
>
|
simplify(e6, constant);
|
| (2.15) |
この簡単化のルーチンは、constant expression (定数式) に対して内部の表現の副次式を 簡単化 するために使用します。
>
|
e7 := 1/2*2^(1/2)*(-4*(1 + 2^(1/2))^(1/2) + 2*(2*2^(1/2)-2)^(1/2)*Pi + (2*2^(1/2)-2)^(1/2)*Pi*2^(1/2) + 2*Pi^(1/2)*(2*2^(1/2)-2)^(1/2) + Pi^(1/2)*2^(1/2)*(2*2^(1/2)-2)^(1/2) + 2*x*(2*2^(1/2)-2)^(1/2) + x*2^(1/2)*(2*2^(1/2)-2)^(1/2))/(2*2^(1/2)-2)^(1/2)/(2^(1/2)-1)/(1 + 2^(1/2))^2;
|
| (2.16) |
| (2.17) |
| (2.18) |
|
|
Download Help Document
Was this information helpful?