diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | rqmc.cpp | 40 |
2 files changed, 34 insertions, 8 deletions
@@ -14,7 +14,7 @@ main.o: stratified_sampling.o test: test.o mt19937.o $(CXX) $^ -o $@ -rqmc: rqmc.o +rqmc: rqmc.o mt19937.o $(CXX) $^ -o $@ $(GSL_FLAGS) clean: @@ -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; } |
