Intégrale par la méthode de Monte-Carlo

Transcription

Intégrale par la méthode de Monte-Carlo
Intégrale par la méthode de Monte-Carlo
1
Contexte
On cherche à obtenir l’intégrale d’une surface en utilisant la méthode de Monte-Carlo. Cette méthode
d’approximation est souvent utilisée pour calculer des heuristiques lorsqu’un calcul direct est soit trop coûteux, soit trop complexe. Dans cette méthode, on procède à un grand nombre de tirages aléatoires. On
évalue une fonction pour chacun de ces points, et l’on suppose que l’échantillon ainsi évalué est représentatif.
Dans le cas du calcul de l’intégrale d’une fonction f sur un domaine [a, b] :
• On tire un grand nombre n de tirages x dans [a, b]
– Pour chacun de ces tirages, on additionne f (x) à un accumulateur acc
• Une fois tous les tirages fini, l’intégrale de f sur [a, b] vaut (b − a)acc/n
cos(x*y)
2 Cos(x ∗ y) sur [0, 5]2
1
0.8
0.6
0.4
On cherche à faire de même pour la fonction f (x, y) =
0.2
0
−0.2
−0.4
cos(x ∗ y) sur l’interval [0, 5]2 . La méthode est la même,
−0.6
−0.8
−1
et l’on a alors comme résultat 52 ∗ acc/n.
5
4
Afin d’améliorer la précision, il faut procéder à un grand
3
0
1
2
2
1
3
nombre de tirages. Le but du TP est de programmer une ap4
5 0
plication qui soit capable de faire un grand nombre de tirage sur plusieurs machines, rassembler les valeurs
ainsi obtenue, et offrir un résultat unique final.
3
Implémentation
Pour réaliser ce calcul, deux composants sont nécessaires :
• Un composant de calcul qui prends entre autre comme argument quatre flottants représentant l’espace
de calcul qu’il devra gérer
• Un composant de lancement et de gestion qui va lancer les composants de calcul sur les noeuds
trouvés dans $OAR_NODE_FILE et rassembler leurs résultat qu’il affichera simplement dans stdout
(afin qu’ils soit donc présent dans le fichier de résultat).
1