| Код | #include <cmath> #include <iostream>
const double eps = 0.1e-5;
double func(double x) { return std::exp(-x*x/2); }
double simpsonIntegr(double a,double b) { return ((b-a) / 6) * (func(a) + 4*func((a+b)/2) + func(b)); }
double LaplasFunction(double x,double eps = ::eps) { double a = 0.0; double b = x; double tst, tst1, incr; unsigned int c = 2; tst1 = simpsonIntegr(a,b); do { tst = tst1; tst1 = 0; incr = (b - a) / c; for (unsigned int i=0;i<c;++i) { tst1 = tst1 + simpsonIntegr(a + incr * i, a + incr * (i + 1)); } c += 1; } while (fabs(tst - tst1) >= eps); return tst1; }
int main() { for (double x=-4;x<4;x+=0.5) { std::cout<<"Fi("<<x<<") == "<<LaplasFunction(x)<<std::endl; } return 0; }
| |