méthode d'intégration de monte carlo 2D

méthode d'intégration de monte carlo 2D - C - Programmation

Marsh Posté le 07-06-2005 à 16:29:08    

voici un algo que je voudrai voir traduit en C surtout une partie que je vais vous signaler( double intégration )
 
calcul de C=min{f(x), a <= x<= b}
calcul de D=max{g(x), a<=x<=b}
i<-1
tant que i<=n faire
U(i)<- a+(b-a)*aleat(1);
V(i)<- c+(d-c)*aleat(1);
F(i)<- f*(U(i),V(i)); F2(i)<- F(i)*F(i);
i<- i+1
Fin du tant que
i<- 1; S<- 0; T<- 0
tant que ii<=n faire
S<- S+F(i); T<- T+F2(i);
i<- i+1
fin du tant que  
MF<- S/n; Q<- (b-a)*(d-c)*MF;
MF2<- T/n;
sigma<- (MF2-MF*MF)^0.5;
 
c'est donc pour la détermination du calcul de C et D que j'ai des problèmes je vous prie de m'aider sur ces points  
 
MERCI D'AVANCE

Reply

Marsh Posté le 07-06-2005 à 16:29:08   

Reply

Marsh Posté le 07-06-2005 à 20:13:55    

salomon6 a écrit :

voici un algo que je voudrai voir traduit en C


Tu payes combien ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 07-06-2005 à 20:33:42    

Si j'ai bien compris, l'approche naïve est simple.
 
Prenons le calcul de C. Il te suffit de choisir un pas (plus le pas est petit, plus le résultat est juste, mais plus le temps de calcul est élevé). Ensuite il te suffit d'une simple boucle (for) dans laquelle tu calcules f(x) pour a, a+pas, a+pas+pas, ..., b. Si la valeur de f(x) est plus petite que la valeur précédemment enregistrée, tu sauvegardes f(x). A la fin de la boucle tu as la valeur minimale. C'est pareil pour D.
 
Après si les performances sont vraiment importantes, il y a probablement un algorithme plus efficace (heuristique?), mais ça dépend de l'utilité du bouzin (pas envie de chercher [:petrus75] )

Reply

Marsh Posté le 10-06-2005 à 20:59:41    

échantillonnage stratifié par exemple.

Reply

Marsh Posté le 23-06-2005 à 12:25:28    

salomon6 tu prends l algo dans le numerical recipes pour la minimisation
apres pour le max tu as max(g(x))=-min(-g(x)) donc tu fais ton algo de min et c'est gagne
mais chope sur le net ya tous dans le numerical recipes

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed