Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DE PI PAR LA METHODE DE MONTE CARLO


Information sur la source

Catégorie :Maths Niveau : Débutant Date de création : 24/06/2005 Vu / téléchargé: 6 174 / 319

Note :
6,25 / 10 - par 4 personnes
6,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Programme simple pouvant servir à connaître la méthode de Monte Carlo.

Jérôme MEGEL
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Gobillot le 24/06/2005 20:09:24

Pour la précision du calcul de Pi c'est pas très intéressant

par contre ça peut servir à tester une fonction congruente
à condition de faire quelques modifications:

- Randomize à mettre une seule fois en début de programme

- un DoEvents dans la boucle de calcul

- optimisation du calcul:
   - puissance de 2 remplaçé par une simple multiplication
   - puissance 0.5 inutile ici

        For i = 1 To nb_tir
            x = Rnd
            y = Rnd
            R = (x * x + y * y)
            If R <= 1 Then tir_inf = tir_inf + 1
            DoEvents
            Next i

pour une boucle complète avec Rnd de Vb (16777216 cas)
    résultat = 3.1415867805481
conclusion:
   test passé avec succès

signaler à un administrateur
Commentaire de jeromegel le 25/06/2005 14:47:32

Merci du tuyau c'est vrai que ce n'est pas très interessant mais c'est simplement un exercice de TP que l'on a fait.

signaler à un administrateur
Commentaire de ScSami le 25/06/2005 19:02:05

3.1415867805481 !!! Je comprends pas, c'est pas 3,1415926535897 théoriquement !?!?
:-/

signaler à un administrateur
Commentaire de Scalpweb le 26/06/2005 17:56:22

Mouai pareil pour moi.

En tout cas décidement, t'es un matheux JEROMEGEL ;-).
@+ tt le monde,
Scalpweb

signaler à un administrateur
Commentaire de Gobillot le 26/06/2005 18:43:45

il existe des tas de méthodes pour calculer les décimales de Pi avec précision:

- méthode des polygones
- méthode en arc tangente
- méthode des suites
- PI = 16arctg(1/5) - 4arctg(1/239)
- Pi = sum (1/16^i * (4/(8*i+1) - 2/(8*i+4) - 1/(8*i+5) - 1/(8*i+6)), i=0..infinity)
- et plein d'autres que j'arrive pas à copier ici

il existe aussi aussi des méthodes basées sur le hasard:

- les aiguilles de Buffon:
Le naturaliste français Georges Louis Leclerc comte de Buffon (1707-1788) montra que la probabilité pour qu'une aiguille de longueur L lancée sur un parquet dont les lattes ont une largeur L coupe le bord d'une latte est 2/Pi. Plus généralement, pour une aiguille de longueur a tombant sur des lattes de longueur b la probabilité est (2.a)/(b.Pi) .
i/n = (2*a) / (b*Pi) => Pi = (2*a*n) / (b*i) , où n est le nombre d'aiguilles lancées et i le nombre d'intersections.
La méthode de Buffon repose sur l'hyposthèse que l'espace physique est euclidien, et comme les autres méthodes basée sur le hasard n'a pas une très bonne efficacité : on a calculé que pour obtenir une précision de 1/1000 avec une probabilité de 95% il faudrait lancer environ 9000000 aiguilles. Et de plus on ne sait jamais avec quelle précision on connaît Pi.

- les fléchettes de Monté-Carlo:
Dans cette méthode, il s'agit de calculer stastistiquement la surface d'un disque.
Soit un disque de rayon 1, sa surface vaut Pi*r^2 = Pi*1*1 = Pi, le carré circonscrit à lui une surface S = (2*r)^2 = 2*2 = 4. En considérant que l'on lance des fléchettes de manière totalement aléatoire (sans chercher à viser le centre), le rapport entre le nombre de fléchettes à l'intérieur du disque et celui à l'intérieur du carré est égal au rapport des surfaces.
Sur la figure, il y en a 23 à l'intérieur du disque et 32 à l'intérieur du carré (on ne tient pas compte des fléchettes à l'extérieur du carré) d'où : Pi/4 = 23/32 donc Pi = 4*23/32 = 2,875.
Comme on peut s'en rendre compte cette technique n'est pas très performante comme toutes les techniques sur le hazard, car elles supposent un tirage aléatoire parfait, que l'on ne peut obtenir dans la pratique et qu'il faut lancer un nombre concidérable de fléchettes pour avoir une précision médiocre, et dont on n'est pas sûr à cause du fait que les tirages sont aléatoires.

- et d'autres méthodes

j'espère que ça répond à votre curosité
comme il faut un tirage aléatoire parfait, et un grand nombre de tirages sans être jamais sûr de la précision obtenue.
j'en ai conclu que plutôt d'espèrer calculer pi avec précision avec ces méthodes basées sur les nombres aléatoires, ça peut au contraire servir à tester les fonctions linéaires congruentielles qui permettrent de donner des nombres pas vraiment aléatoires, mais pseudo aléatoires.

- le résultat obtenue par le Rnd de Vb est tout à fait honorable je pense, faut pas espérer avoir plus.
rectifications: pour faire le tour complet avec vb il suffit de boucler 8388608 fois, puisqu'on prend 2 nombres à chaque fois,
inutile de faire de faire plus, puisqu'on retombera toujours sur les mêmes nombres.

- maintenant si vous créer votre propre fonction de tirage de nombres aléatoires, faut lui faire passer des tests, tests plus ou moins compliqués et très longs.
test du poker, test graphique, et plein d'autres
pouquoi pas le test du calcul de pi par la méthode du calcul aléatoire ?

signaler à un administrateur
Commentaire de ScSami le 26/06/2005 23:08:10

Waou! Merci pour toutes ces impressionnantes précisions Gobillot!
Respect

signaler à un administrateur
Commentaire de mynyroger le 27/06/2005 08:11:44

Vous vous compliquez la vie.

pi = 4 * Atn(1)

et vous avez pi=3.14159265358979

signaler à un administrateur
Commentaire de ScSami le 27/06/2005 15:36:46

Oui, et ATN(1), on l'obtient commment ?

signaler à un administrateur
Commentaire de ScSami le 27/06/2005 15:39:00

Enfin, je veux dire, sans la fonction du VB ?

signaler à un administrateur
Commentaire de Scalpweb le 27/06/2005 21:40:27

héhé pas bête lol
;-)

Vive les maths...

signaler à un administrateur
Commentaire de Gobillot le 27/06/2005 22:31:43

pour ScSami >>

on calcule par les séries

ATN(1) = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 + ...

    Dim i  As Long
    Dim a  As Long
    Dim b  As Long
    Dim x  As Double
    Dim pi As Double
    
    a = 3: x = 1
    For i = 1 To 10000000
        b = a + 2
        x = x - 1 / a + 1 / b
        a = b + 2
        Next
    MsgBox "ATN(1)= " & x
    MsgBox "pi=" & x * 4

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.