#include #include #include using namespace std; /* Integration : fonction de repartition */ double fonction(double t){ return exp(-t*t/2.) / sqrt(2.*M_PI); } double integration(double x, int n){ int i; double h, s; h = x/n; s = 0.; for (i = 1; i <= n; i++) s += fonction(h*(i-0.5)); return h*s; } double integr_ajust(double x, int n0, double eps){ int n; double res, resp, d; resp = integration(x,n0); n = n0; do { n = 2*n; res = integration(x,n); d = fabs((res-resp)/resp); resp = res; } while (d > eps); cout << "Nombre initial de rectangles : " << n0 << endl; cout << "Nombre final de rectangles : " << n << endl; return res; } int main(){ int n0; double x, eps; n0 = 1; eps = 1.e-12; cout << "Valeur de x ? "; cin >> x; cout << setprecision(15); cout << "Valeur de l'integrale sans ajustement: " << 0.5 + integration(x,n0) << endl; cout << "Valeur de l'integrale avec ajustement: " << 0.5 + integr_ajust(x,n0,eps) << endl; return 0; }