Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+;中使用此函数原型实现对分方法+;_C++_Bisection - Fatal编程技术网

C++ 如何在C+;中使用此函数原型实现对分方法+;

C++ 如何在C+;中使用此函数原型实现对分方法+;,c++,bisection,C++,Bisection,我不知道该怎么做,我知道我必须循环,精确定位中点等等 double p1::root(double (*pf)(double k), int a, int b, double e) 也许会给你一个主意。提示:它是递归的。不太多我会发布到目前为止我所拥有的,它不会给我一个结果“不太多”?我给你的链接在rtbis中实现了这个方法。同样的签名和所有的东西。它确实有帮助,很抱歉我的回答,但我想说的是,为什么你不认为它与我的实现上面的工作我不知道你在问我什么。您发布的代码来自数字配方。(顺便说一句,它是

我不知道该怎么做,我知道我必须循环,精确定位中点等等

double p1::root(double (*pf)(double k), int a, int b, double e)

也许会给你一个主意。提示:它是递归的。

不太多我会发布到目前为止我所拥有的,它不会给我一个结果“不太多”?我给你的链接在rtbis中实现了这个方法。同样的签名和所有的东西。它确实有帮助,很抱歉我的回答,但我想说的是,为什么你不认为它与我的实现上面的工作我不知道你在问我什么。您发布的代码来自数字配方。(顺便说一句,它是有许可证的——你不能简单地使用它或将它作为你自己的东西交上来。)你的代码在哪里?它是做什么的?我明白了,我只是想看看它是如何与我的函数文件和主文件一起工作的,然后我会在functions.cpp中创建自己的函数,我有这个函数和一个测试函数,然后在main中我有指针
double p1::root(double (*pf)(double k), int a, int b, double e) {


  // void nrerror(char error_text[]);                                           
  int j;
  float dx, f, fmid, xmid, rtb;

  f = (*pf)(a);
  fmid = (*pf)(b);
  //if (f*fmid >= 0.0) nrerror("root must be bracketed for bisection in rtbis")\
;                                                                               
      rtb = f < 0.0 ? (dx=b-a,a) : (dx=a-b,b);
      for(j = 1;j <40; j++) {
        fmid = (*pf)(xmid = rtb+(dx *= .5));
      if (fmid <= 0.0) rtb = xmid;
      if (fabs(dx) < e || fmid == 0.0) return rtb;
      }
      // nrerror("too many bisections in rtbis");                               


  return 0.0;
}




double p1::test_function(double k) {
  return (pow(k, 3) -2);
}
 double (*pf)(double k);
pf = &p1::test_function;

//double result = p1::root(pf, a, b, e);