From d44e0fac8081b5a8171bc4b038b5cc090ef62d4d Mon Sep 17 00:00:00 2001 From: Bertrand Date: Sat, 16 Apr 2016 16:50:12 +0200 Subject: amélioration des exemples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/projet.cpp | 71 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/projet.cpp b/src/projet.cpp index 007dd6c..4a5889e 100644 --- a/src/projet.cpp +++ b/src/projet.cpp @@ -11,7 +11,14 @@ using namespace std; -void exemple1_stratified() { +struct first:public std::unary_function, double> +{ + double operator()(std::vector X){ + return X[0]; + } +}; + +vector< vector > exemple1_stratified() { vector q = quantile_norm(10, 1); vector p(10, 0.1); vector rvar; @@ -19,22 +26,38 @@ void exemple1_stratified() { for (int i=1; i<10; i++){ rvar.push_back(gaussian_truncated(q[i-1], q[i])); }; + vector N = {300, 1000, 10000, 20000}; //notre tableau du nombre successif de tirages, qui correspondent aux 300, 1300, 11300 et 31300 + //de l'article de Etoré et Jourdain + vector< vector > data (4); stratified_sampling S(p,rvar); - S.draw(100); - double x = 1.64*S.estimator().second; - cout<<"l'estimateur de la moyenne est :"< r(4,0); + for (int i=0; i<4; i++){ + S.draw(N[i]); + r[0]= r[0] + N[i]; + r[1] = S.estimator().first; + r[2] = S.estimator().second; + r[3] = 0.1559335; + cout< > exemple1_rqmc(){ + int I = 100; + vector N = {3, 13, 113, 313}; //les N choisis pour que les NI soient égaux aux N de l'exemple 1 stratified_sampling + first f; //comme quasi_gaussian retourne un vecteur, on doit composer avec f pour avoir le double QG()[0] + vector< vector > data (4); + for(int i =0; i<4; i++){ + data[i] = monte_carlo (I,quasi_mean (N[i], 1, f)); + } + cout<<"moyenne"<<"\t\t"<<"sigma"<<"\t\t"<<"taille IC"<, double> -{ double operator()(std::vector X){return X[0];} -}; - -void exemple1_rqmc(){ - int N = 100; - first f; //comme quasi_gaussian retourne un vecteur, on doit composer avec f pour avoir le double QG()[0] - std::vector result(3); - result = monte_carlo (100,quasi_mean (N, 1, f)); - for(int i =0; i<3; i++){ - std::cout<