辛普森积分

    科技2022-07-13  140

    咕咕咕 

    #include<bits/stdc++.h> using namespace std; const double eps = 1e-7; 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; return (f(L)+4*f(mid)+f(R))*(R-L)/6; } double integral(double L, double R, double eps) { double mid = (L+R)/2; double ST = simpson(L,R); double SL = simpson(L, mid); double SR = simpson(mid, R); if(fabs(SL+SR-ST) <= 15*eps) return SL+SR+(SL+SR-ST)/15; return integral(L, mid, eps/2) + integral(mid, R, eps/2); } int main() { int l, r; cin >> a >> b >> c >> d >> l >> r; printf("%.6lf\n",integral(l, r, eps)); }

     

    Processed: 0.014, SQL: 8