Bonjour
je voudrais créer un mouvement brownien, qui possède un grand nombre de points, supérieur à 10^7.
J'ai fait le code suivant:



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
vector<double> brownien; 
for(long i=1;i<pow(10,7.0);i++){
	a=brownien[i-1]+pow((double)i/res,0.5)*norm_dist.operator()<boost::lagged_fibonacci19937>(engine);
    brownien.push_back(a);
	}

mais dès qu'on passe à 10^8, le programme sature.

Ensuite, je me suis dit qu'on va créer un autre vecteur, à la suite du premier, comme ceci:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
vector<double> brownien2;
brownien2.push_back(brownien[pow(10,7.0)-1]+pow((double)(pow(10,7.0))/res,0.5)*norm_dist.operator()<boost::lagged_fibonacci19937>(engine));
 
    for(long i=pow(10,7.0)+1;i<pow(10,8.0);i++){
	a=norm_dist.operator()<boost::lagged_fibonacci19937>(engine);
    brownien2.push_back(a);
    	}
mais bien sur cela plante, le nombre maximal de pointeurs à été atteint. Alors je ne vois pas du tout comment résoudre le pb. J'aimerais bien passer à 10^9 points, pour faire des calculs.

merci