méthode d'intégration de monte carlo 2D - C - Programmation
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 ?
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 )
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
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