自适应辛普森法 发表于 2018-07-27 | 分类于 OI 字数统计: 160 | 阅读时长 ≈ 1 证明省略 1234567891011121314151617181920212223242526272829303132#include<cstdio>#include<cmath>using namespace std;const double eps=1e-10;double a,b,c,d;double F(double x){ return (c*x+d)/(a*x+b);}double simpson(double l,double r){ double mid=(l+r)/2.0; return (F(l)+F(mid)*4.0+F(r))*(r-l)/6.0;}double ASR(double l,double r,double ans){ double mid=(l+r)/2.0; double L=simpson(l,mid); double R=simpson(mid,r); if (fabs(L+R-ans)<eps) return ans; else return ASR(l,mid,L)+ASR(mid,r,R);}int main(){ double ql,qr; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); scanf("%lf%lf",&ql,&qr); printf("%.6lf",ASR(ql,qr,simpson(ql,qr))); return 0;}