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 处理器上运行我的程序。)