实现二分法来解方程。使用以下函数:
double root(double(*pf)(double x),double a,double b,int n)
这里,pf指向一个函数f,f用来定义要求解的方程f(x)=0,a和b是未知解x的上下界(即a<=x<=b),n是循环次数。例如,若f(x)=x*x-1,则root(f,1,2,100)将返回1.414213562373095(=根号2),即为方程x*x=2的解。二分法的原理是反复地把区间分为两等分,然后用其中含有解的一半来代替该区间。它通过检查f(a)和f(b)的符号来判断解是否在区间[a,b]中。

#include<iostream.h>
#include<string.h>
#include<stdio.h>
double root(double(*pf)(double x),double a,double b,int n);
double f(double);
int main()
{double s,a=1.0,b=2.0,n=100;
 cout<<a;
 s=root(f,a,b,n);
 cout<<s<<endl;
 return 0;
}
double f(double x)
{
 return x*x-2;
}
double root(double(*pf)(double x),double a,double b,int n)
{double mid;

  for(int i=0;i<n;i++)
  {
    mid=(a+b)/2.0;
    if((*pf)(mid)<0)
    {
    a=mid;
    }
    else
    {
    b=mid;
    }
  }
  return mid;
}

可输出总是1.414214就没有啦少了好多位啊,不是1.414213562373095。
二分法的步骤也不知清对不对。那位大虾帮助贴贴代码啊。