Approx'pi, ou comment approximer pi avec la méthode de monte carlo

0/5 (11 avis)

Vue 5 523 fois - Téléchargée 456 fois

Description

Voici, pour me vider un petit peu la tête avec toutes ces textures o_O, un petit prog pour approximer Pi à l'aide de la méthode de Monte Carlo - j'ai mis le raisonnement après le End final de Main.pas. Le raisonnement est simple en lui-même, il faut juste comprendre le principe - être un petit peu ouvert :)
Sinon, le programme semble stable, et fonctionne, c'est l'essentiel ...
Bon je sais que ce n'est pas un programme exceptionnel, qu'il n'est pas fabuleusement bien conçu, etc ... mais j'ai eu l'idée hier soir pendant que je lisais mon bouquin de maths (cette technique figurait dans un TD), et comme ç'était simple à développer, je me suis plus penché sur la rapidité. Pour l'instant je suis plutôt fier - pour 500 000 points, j'arrive à moins de 2 secondes pour les petits points (1927, puis 1944 ms), alors qu'avec les gros points (honte sur eux) 6673 puis 6712 ms (tout ceci en mode accéléré bien sûr !).
J'ai réussi à glisser un petit peu d'ASM (basique bien evidemment) dans le code, et j'ai essayé d'optimiser au maximum. Bien sûr il reste beaucoup à faire - du côté de ScanLine pour les petits points, mais j'ai déjà essayé et j'ai buté contre un bug (en fait les points apparaissaient tous écrasés sur le bord droit de l'image ...).

Voilà, j'espère que vous apprécierez ! J'ai mis un petit outil pour comparer la valeur obtenue avec Pi : si la différence est inférieure à 0.01 alors le résultat devient vert, sinon il reste blanc - pour plus d'impact visuel.

Donc, j'ai appelé ma source Approx'Pi car je pense que ce nom reflète assez bien l'utilité du programme :)

Bonne approximation ! (bon je sors ...)

Source / Exemple :


// Voir zip

Conclusion :


Voilà, tous critiques, commentaires, remarques, conseils, améliorations, remarques, ici ;)

Cordialement, Bacterius !

PS : je suis terriblement confus pour la capture d'écran mais le format JPEG ne permet pas de conserver un rouge vif - en effet, les points à l'intérieur du quadrant ou du cercle s'affichent en rouge, mais JPEG n'en a rien a faire ... :'(

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 2
12 janv. 2009 à 19:16
Une autre approche pour calculer Pi est d'utiliser Newton-Raphson

Je pense qu'en moins d'itérations , on obtient quelques choses d'assez similaire... enfin faut voir ;)
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 déc. 2008 à 01:47
Moi aussi ça m'a rajeuni. :)))
Mais c'était les muons du projet Antares :
http://antares.in2p3.fr/index-fr.html

Comme quoi, le source de Bacterius a le parfum de la madeleine de Proust ;)
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
29 déc. 2008 à 01:05
Merci, ça me rajeunit de voir appliqué la Méthode de Monte-Carlo.
Je l'utilisais en 1966 pour simuler des rayonnements béta. Il fallait alors une nuit entière avec un "gros" Univac ....
Bonne continuation et surtout Bonnes Fêtes de fin d'année à Tous
Pierre
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
25 déc. 2008 à 18:02
Allez! C'est mon jour doctoral annuel ! lol

Il n'empêche que la méthode de Monte-Carlo est parfois irremplaçable. Surtout en physique nucléaire où aucune méthode mathématique classique ne la remplace, en particulier pour résoudre des équations aux dérivées partielles.
Voir :
http://fr.wikipedia.org/wiki/Monte-Carlo_N-Particle_transport
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
25 déc. 2008 à 17:46
L'histoire du quart de cercle est simplement une question de performance.

Le cercle est de centre (0,0) et de rayon 1.
Avec un disque complet, le point appartient au disque si x²+y²<1 et la probabilité que le point appartienne au disque et de Pi/4.
Avec un quart de cercle, la probabilité est de Pi.
On évite ainsi une division dans chaque itération. Comme la méthode de Monte-Carlo exige toujours de nombreuses itérations, il faut toujours faire très attention aux opérations effectuées dans la boucle.
C'est d'ailleurs l'inconvénient de cette méthode. Elle est très longue.
Un autre inconvénient est qu'on déborde très vite les capacités de nos PC. Pour avoir une précision correcte une boucle de plus de 9 223 372 036 854 775 807 itérations n'est pas rare. Et alors même l'Int64 est dans les choux !
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.