comment faire des graphiques sous c++ avec gnu plot? - C++ - Programmation
Marsh Posté le 02-03-2008 à 17:19:08
c'est fou il n'y pas une seule personne capable de me donner une réponse ici?
Marsh Posté le 02-03-2008 à 18:39:51
Chez moi ça marche
J'utilise gnuplot 4.2
Le "stoch.dat" generé :
|
Marsh Posté le 02-03-2008 à 13:50:50
J'ai tapé un code source avec dev c++ dans lequel 'essaie de créer un fichier utilisable par gnu plot, le problème c'est que ça compile bien mais qu'après quand je lance gnu plot il me dit que mon fichier n'existe pas
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <fstream>
using namespace std;
const int M=500; //nb of time steps of size dt
const int N=50000; //nb of stochastic realization
const int L=40; //nb of sampling poointsfor S
const double K=100; //The strike
const double left=0, right=130; // the barriers
const double sigmap=0.2, r=0.1; // vol., rate
const double pi2 =8*atan(1), dt=1./M, sdt =sqrt(dt), eps=1.e-50;
const double er=exp(-r);
double gauss();
double EDOstoch(const double x,int m);
double EDOstoch_barrier(const double x, int m, const double Smin, const double Smax);
double payoff(double s);
double gauss()
{
return sqrt(eps - 2.*log(eps + rand()/(double) RAND_MAX))*cos(rand()*pi2/RAND_MAX);
}
double EDOstoch(const double x, int m)
{
double S= x;
for (int i=0;i<m;i++)
S +=S*(sigmap*gauss()*sdt+r*dt);// gives S(x, t=m*dt)
return S;
}
double EDOstoch_barrier(const double x, int m,const double Smin, const double Smax)
{
if ((x<=Smin)||(x>=Smax))
return -1000;
double S= x;
for (int i=0;i<m;i++)
{
if ((S<=Smin)||(S>=Smax))
return -1000;
S +=S*(sigmap*gauss()*sdt+r*dt);
}
return S;
}
double payoff(double s)
{
if (s>K) return s-K; else return 0;
}
int main( )
{
ofstream f("stoch.dat" );
for(double x=0.;x<2*K;x+=2*K/L)
{
double value =0;
double y,S ;
for (int i=0;i<N;i++)
{
S=EDOstoch(x,M);
// S=EDOstoch_barier(x,m, left, right); // for barrier options
double y=0;
if(S>=0)
y = er*payoff(S);
value +=y;
}
f << x <<"\t" <<value/N<< endl;
}
return 0;
}
J'ouvre gnu plot et j'écris plot "stoch.dat" et la il dit Skipping unreadable data "stoch.dat" No data in plot. Pourquoi? Q'est ce qui ne va pas dans mon programme?
Message édité par dilemne le 02-03-2008 à 14:33:08