二分法求多項式的一個根
阿新 • • 發佈:2018-12-31
#include<iostream> using namespace std; double THRESHOLD=0.001; int coefficients[100]; int n=2;//係數個數-1 double f(double x){ double res=0; double temp=1; for(int i=0;i<n;i++){ res+=res+coefficients[i]*temp; temp*=x; } return res; } double root(double a, double b){ if(f(a)==0) return a; if(f(b)==0) return b; double mid; while(b-a>=THRESHOLD){ mid=(a+b)/2; if(f(mid)==0) return mid; if(f(a)*f(mid)>0) a=mid; else if(f(b)*f(mid)>0) b=mid; } return (a+b)/2; } int main() { double a, b; for(int i=0; i<n; ++i ) { cin>>coefficients[i]; } cin>>a>>b; printf( "%.2lf", root( a, b ) ); return 0; }
演算法流程很簡單,要做到bug-free。