更新时间:2021-07-25 16:12:48
我会这样实现:
double derivative(double (*f)(double), double x0, int order)
{
const double delta = 1.0e-6;
double x1 = x0 - delta;
double x2 = x0 + delta;
if (order == 1) {
double y1 = f(x1);
double y2 = f(x2);
return (y2 - y1) / (x2 - x1);
} else {
double y1 = derivative(f, x1, order - 1);
double y2 = derivative(f, x2, order - 1);
return (y2 - y1) / (x2 - x1);
}
}
因为这样就不需要订单过高的错误".
Because then there is no need for a "order too high error".