結果精度のコントロール

NDSolveNMinimizeのような数値操作を行う場合,Wolfram言語はデフォルトにより機械数を使う.しかし,オプションWorkingPrecision->n とすることで n 桁精度の任意精度数が使えるようになる.

これは数値積分を機械精度で計算する.
In[1]:=
Click for copyable input
Out[1]=
これは30桁の任意精度数で計算する.
In[2]:=
Click for copyable input
Out[2]=

WorkingPrecisionを設定すると,これは通常計算結果の精度の上限を定義する.しかし,この制約条件内でWolfram言語に目標精度と目標確度を指示することができる.多くの数値操作において目的精度と目的確度を数桁大きくするだけではるかに長い計算時間がかかるようになることは理解しておいた方がよい.それでもなお,高精度・高確度が確実に達成できることが重要な場合も多い.

WorkingPrecision計算に使う桁数
PrecisionGoal目標精度の桁数
AccuracyGoal目標確度の桁数

精度と確度のコントロールオプション

これは25桁精度の結果を与える.
In[3]:=
Click for copyable input
Out[3]=
作業精度が30桁では50桁精度は達成できない.
In[4]:=
Click for copyable input
Out[4]=

WorkingPrecisionを特定の値に設定するときは,Wolfram言語における数値操作のための各関数がPrecisionGoalAccuracyGoalに特定のデフォルト設定を使っていなければならない.その典型的な例はNDSolveである.そのデフォルト設定はWorkingPrecisionにおける設定値の半分になっている.

目標精度と目標確度の両方が返される最終結果とそれらのさまざまなノルムや誤差推定に適用される.Wolfram言語における数値操作の関数は通常指定の目標精度あるいは目標確度のどちらか一方に達した段階で結果を返す.どちらかの設定値がInfinityの場合はそうではない方だけが考慮される.

N[expr,n]で通常の数値評価を行う場合,Wolfram言語は結果が n 桁精度に達するように自動的に内部計算を調整する.しかし関数の数値操作を行う場合,実際にはWorkingPrecisionPrecisionGoalをもっと明示的に指定する必要があるのが普通である.