diff options
| author | Bertrand <bertrand.horel@gmail.com> | 2016-02-13 22:35:00 +0000 |
|---|---|---|
| committer | Bertrand <bertrand.horel@gmail.com> | 2016-02-13 22:35:00 +0000 |
| commit | 833fe23df203623c0cf9c540cd9a085792c04869 (patch) | |
| tree | 88b00d20c49f734e8a264292a4c8654d6548e672 /rqmc.cpp | |
| parent | 34f073125f5c458c5c76128344f1745779f631a0 (diff) | |
| download | projet_C++-833fe23df203623c0cf9c540cd9a085792c04869.tar.gz | |
maj Makefile et calcul de moyenne de normales avec méthode qmc
Diffstat (limited to 'rqmc.cpp')
| -rw-r--r-- | rqmc.cpp | 40 |
1 files changed, 33 insertions, 7 deletions
@@ -1,14 +1,40 @@ #include "low_discrepancy.hpp" #include <vector> +#include <gsl/gsl_cdf.h> +#include "var_alea.hpp" + + +double frac_part(double x){ + return x - floor(x); +} + +double mean_rqmc(int N, double X) { + sobol s(1); + double sum = 0; + for(int i=0; i<N; i++){ + sum +=gsl_cdf_gaussian_Pinv (frac_part(X+s()[0]), 1); + } + return sum/N; +} int main() { - sobol s(3); - std::vector<double> q; - std::vector<double> a; - q = s(); - a = s(); - for(int i=0; i<3; i++){ - std::cout<<a[i]<<std::endl; + init_alea(0); + int I=100; + int N= 10000; + uniform U; + double m = 0; + double s = 0; + double temp; + + for(int i=0;i<I;i++){ + temp = mean_rqmc(N,U()); + m+=temp; + s+=temp*temp; } + m = m/N; + s = s/N - m*m; + + std::cout<<"espérance "<<m<<" taille de l'IC "<<sqrt(s)*1.64/10<<std::endl; + return 0; } |
