Maple 11 での数値演算機能に関する改良点
|
機械精度浮動小数
|
|
•
|
新しい hfloat option は Maple プロシージャで強制的に機械精度浮動小数を実行させます。これにより、数値演算に特化した計算、特に機械精度の浮動小数を含んだ Array, Matrix, Vector などの操作は劇的にパフォーマンスが向上します。
|
|
|
evalhf からの呼出し(Call-out)
|
|
•
|
evalhf 環境での計算に特化したプロシージャを記述する際、evalhf で直接サポートされていない場合に eval( ) でそのコールを囲むことで、Maple 関数をコールすることが可能です。 eval への引数は evalhf 環境の外部で評価され、その結果が機械精度浮動小数値またはその配列へと変換されます。
|
|
|
数値総和
|
|
•
|
浮動小数による総和計算の効率や能力が大幅に改善されました。これまで計算できなかった対象や計算が遅かった問題についても、Maple では浮動小数近似による計算が可能です。例をご覧ください:
|
>
|
evalf(Sum(numtheory[mobius](n)*Li(10^(1/n))/n, n = 1 .. infinity));
|
| (3.1) |
>
|
st := time():
r := evalf(Sum(1/sqrt(i), i = 81 .. 10^6)):
time()-st;
|
| (3.2) |
| (3.3) |
|
上記の最初の例は、これまでの Maple の能力を超えた問題で、2番目の例では 750 倍以上もの計算時間を要していました。
|
•
|
浮動小数による総和の計算は、記号的な総和計算の sum コマンドの振舞いが発散するかまたは収束するかをコントロールするために Maple の以前のリリースで導入された _EnvFormal 環境変数によります。もしも _EnvFormal = false の場合、数値的な総和計算ルーチンは、結果を計算する前に収束判定を行うようになります。
|
|
|
反復による根探索
|
|
>
|
with(RootFinding,NextZero):
NextZero(x->BesselJ(1/3,x),0);
|
| (4.1) |
>
|
NextZero(x->BesselJ(1/3,x),%);
|
| (4.2) |
|
|
強連結ブロック (Strongly Connected Blocks)
|
|
|
|