1. 程式人生 > >自適應辛普森公式

自適應辛普森公式

自適應辛普森公式
時間複雜度O(能過)

double f(double x){  
    return x*x+sqrt(x); //積分函式
}
double simpson(double a,double b){
    double c=(a+b)/2.0;
    return (f(a)+f(b)+4.0*f(c))*(b-a)/6.0;
}
double ars(double a,double b,double eps){  //積分割槽域a~b,eps為題目要求精度*10-2
    double c=(a+b)/2.0;
    double mid=simpson(a,b),l=simpson
(a,c),r=simpson(c,b); if(fabs(l+r-mid)<=15*eps) return l+r+(l+r-mid)/15.0; return ars(a,c,eps/2.0)+ars(c,b,eps/2.0); }