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