aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.txt13
-rw-r--r--src/option.cpp3
-rw-r--r--src/option.hpp2
-rw-r--r--src/rqmc.cpp30
-rw-r--r--src/test.cpp26
-rw-r--r--src/test_rtnorm.cpp45
6 files changed, 13 insertions, 106 deletions
diff --git a/README.txt b/README.txt
index db39268..ed9d710 100644
--- a/README.txt
+++ b/README.txt
@@ -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;
-}
-