且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

递归找到二阶导数

更新时间: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".