double MyClass::dx = ?????;
double MyClass::f(double x)
{
return 3.0*x*x*x - 2.0*x*x + x - 5.0;
}
double MyClass::fp(double x) // derivative of f(x), that is f'(x)
{
return (f(x + dx) - f(x)) / dx;
}
dx
導出に有限差分法を使用する場合、最適な値を選択することが重要です。数学的には、dx
できるだけ小さくする必要があります。ただし、最小の正の倍精度数 (つまり、 2.2250738585072014 x 10 -308 ) を選択することが正しい選択であるかどうかはわかりません。
dx
計算誤差をできるだけ小さくするために選択する最適な数値間隔または正確な値はありますか?
(私は 64 ビット コンパイラを使用しています。Intel i5 プロセッサでプログラムを実行します。)