diff options
| author | Bertrand <bertrand.horel@gmail.com> | 2016-04-11 14:17:21 +0000 |
|---|---|---|
| committer | Bertrand <bertrand.horel@gmail.com> | 2016-04-11 14:17:21 +0000 |
| commit | 95ee7fca4b4a30cc8e381b09c963b94512630521 (patch) | |
| tree | 6afd60ee9107e8b239f34ad6cc1f5ffac83b9890 | |
| parent | a6076b6b0cc7958e8b939ba6ed3ddb53d7d1ff20 (diff) | |
| download | projet_C++-95ee7fca4b4a30cc8e381b09c963b94512630521.tar.gz | |
début nettoyage et description dans README
| -rw-r--r-- | README.txt | 13 | ||||
| -rw-r--r-- | src/option.cpp | 3 | ||||
| -rw-r--r-- | src/option.hpp | 2 | ||||
| -rw-r--r-- | src/rqmc.cpp | 30 | ||||
| -rw-r--r-- | src/test.cpp | 26 | ||||
| -rw-r--r-- | src/test_rtnorm.cpp | 45 |
6 files changed, 13 insertions, 106 deletions
@@ -1 +1,14 @@ Projet C++ Monte-Carlo + +low_discrepancy.hpp : implémentation des séquences à discrépance faible +mt19937.c/.h : générateur de nombres aléatoires +opti.cpp/.hpp : résolution du problème d'optimisation pour l'exemple d'asian_option, formule 3.2 article Etoré-Jourdain +option.cpp/.hpp : déclaration de la structure d'asian option et calcul du pay-off (dans.cpp exemple à virer) +p_adic.cpp : pour la séquence de Halton +projet.cpp : exemple 1 (stratified sampling sur normale), exemple 2 (stratified sampling sur asian option) +rqmc.hpp : déclaration des template pour faire du quasi monte carlo +stratified_sampling.cpp : fonction de générations de quantiles +stratified_sampling.hpp : déclaration des structures de gaussiennes tronquées, puis l'implémentation de l'algorithme +de stratified_sampling sous forme de classe, et f_mu la fonction de l'exponential tilt (f_mu à changer qui doit prendre unary function en argument) +var_alea : fichier pris sur la page du cours de déclaration de variables aléatoires + diff --git a/src/option.cpp b/src/option.cpp index b8c2799..918e735 100644 --- a/src/option.cpp +++ b/src/option.cpp @@ -5,9 +5,6 @@ double pos (double x){ return x>0?x:0; } -double frac_part(double x){ - return x - floor(x); -} int main(){ init_alea(1); diff --git a/src/option.hpp b/src/option.hpp index d104bd6..1a3733c 100644 --- a/src/option.hpp +++ b/src/option.hpp @@ -1,7 +1,5 @@ #include "rqmc.hpp" -double frac_part(double x); - double pos (double x); struct asian_option : public std::unary_function<std::vector<double>, double> diff --git a/src/rqmc.cpp b/src/rqmc.cpp index 7109d82..4c804e1 100644 --- a/src/rqmc.cpp +++ b/src/rqmc.cpp @@ -6,33 +6,3 @@ double frac_part(double 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() { - //~ 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/I; - //~ s = s/I - m*m; - - //~ std::cout<<"espérance "<<m<<" taille de l'IC "<<sqrt(s)*1.96/10<<std::endl; - - //~ return 0; -//~ } diff --git a/src/test.cpp b/src/test.cpp deleted file mode 100644 index 3578c87..0000000 --- a/src/test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include <iostream> -#include "var_alea.hpp" - -int main() { - init_alea(); - - uniform U(0,1); - std::cout << U() << std::endl; - - expo E(1); - std::cout << E() << std::endl; - - gaussian G(0,1); - std::cout << G() << std::endl; - - chi_deux X(1); - std::cout << X() << std::endl; - - inverse_gaussian Y(0.5,1); - std::cout << Y() << std::endl; - - normal_inverse_gaussian Z(0.8,0.1,0,2); - std::cout << Z() << std::endl; - - return 0; -}; diff --git a/src/test_rtnorm.cpp b/src/test_rtnorm.cpp deleted file mode 100644 index 48ce933..0000000 --- a/src/test_rtnorm.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// Example for using rtnorm -// -// Copyright (C) 2012 Guillaume Dollé, Vincent Mazet (LSIIT, CNRS/Université de Strasbourg) -// Licence: GNU General Public License Version 2 -// see http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt -// -// Depends: LibGSL -// OS: Unix based system - - -#include <iostream> -#include <gsl/gsl_rng.h> - -#include "rtnorm.hpp" - - -int main() -{ - double a = 1; // Left bound - double b = 9; // Right bound - double mu = 2; // Mean - double sigma = 3; // Standard deviation - std::pair<double, double> s; // Output argument of rtnorm - int K = 1e5; // Number of random variables to generate - - //--- GSL random init --- - gsl_rng_env_setup(); // Read variable environnement - const gsl_rng_type* type = gsl_rng_default; // Default algorithm 'twister' - gsl_rng *gen = gsl_rng_alloc (type); // Rand generator allocation - - //--- generate and display the random numbers --- - //std::cout<<"# x p(x)"<<std::endl; - std::cout<<a<<" "<<b<<std::endl; - std::cout<<mu<<" "<<sigma<<std::endl; - for(int k=0; k<K; k++) - { - s = rtnorm(gen,a,b,mu,sigma); - std::cout<<s.first<<" "<<s.second<<std::endl; - } - - gsl_rng_free(gen); // GSL rand generator deallocation - - return 0; -} - |
