⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 root.c

📁 数值分析算法描述与习题解答
💻 C
字号:

/*思想:二分法属于数学问题,但为了说清楚问题就再说一下原理。*/
/*先取二元方程f(x)的两个初略解x1和x2,若f(x1)与f(x2)的符号相*/
/*反,则方程f(x)=0在[x1,x2]区间至少有一个根;若f(x)在[x1,x2]*/
/*区间单调,则至少有一个实根;所以取x3=(x1+x2)/2,并在x1和x2中*/
/*舍去和f(x3)同号者,那么解就在x3和另外那个没有舍去的初略解组*/
/*成的区间里;如此反复取舍,直到xn与xn-1之差满足要求时,那么*/
/*xn便是方程f(x)的近似根。*/
    #include "stdio.h"
    #include "math.h"
    double  root(a,b,eps,f)
    double  a,b,eps,(*f)();
    { double  f0,f1,c;
      f0=(*f)(a);
      while (fabs(a-b)>=eps)
        { c=(a+b)/2; f1=(*f)(c);
          if (f1==0)  return(c);/*x就是根,不在迭代*/
          if (f0*f1>0)  a=c;/*覆盖a,即舍去同号者*/
          else  b=c;
        }
      c=(a+b)/2;
      return(c);
    }
main()
    { double a,b,eps,f();
      a=1; b=2; eps=0.000001;
      printf("x=%7.3f\n",root(a,b,eps,f));
    }

    double  f(x)
    double x;
    { double y;
      y=x+log(x)-2.2;
      return(y);
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -