IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Simulation de Monte Carlo


Sujet :

Fortran

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Simulation de Monte Carlo
    Bonjour tout le monde,

    Je viens écrire sur ce forum après des jours d'arrachage de cheveux, je suis un peu désespérée je dois dire ! Voilà mon problème : mon code me sert à faire une simulation de monte carlo. Mes données sont N points (par exemple 10000), et une certaine probabilité (l est un indice entier, qui fait varier p). Chaque "tirage" est indexé par k (k va de 1 à m), et pour chacun de ces tirages, pour chaque point, je tire un nombre aléatoire (Xi dans mon programme). Si Xi>p/m, alors le point continue ça route. Si Xi<=p/m le point est supprimé. Au tirage d'après, je recommence la même chose, avec N-(nombre de points supprimés) points... Ainsi de suite. Je tiens à préciser qu'il est nécessaire pour moi de faire des étapes indexées par k, que je ne peux pas juste faire un tirage pour chaque point en prenant en disant que la probabilité de survie d'un point est (1-p/m)^m (ce serait trop facile ).

    Voici donc mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    S=N !S et T servent à compter les points.
    T=N
     
    do k=1,m
                do i=1,S
                    call RANDOM_SEED
                    call RANDOM_NUMBER(xi)
                    if (xi<=p/m) then
                        T=T-1 !(Position 1)
                    else
                        T=T
                    end if
                end do 
                S=T !(Position 2)
     end do 
     
    print*,S
    Je lance cette simulation pour plusieurs valeurs de p, et les résultats que j'obtiens ne sont pas du tout ceux que j'attends. Du coup, j'ai installé des tests pour comprendre ce qu'il se passe, du type
    en particulier aux positions 1 et 2 que j'ai inscrit en commentaire dans mon code. Et là, il se passe des choses bien étranges ...
    Quand j'observe en position 1, tout semble se dérouler comme j'en ai envie, le nombre T diminue de façon "régulière" (pour k->k+1 j'entends).
    Quand j'observe en position 2, globalement k augmente, T reste constant, jusqu'à chuter brusquement pour k->k+1 donné, puis redevient constant pour un moment ... ect. Ce n'est pas du tout le comportement que j'attends!
    Voilà pourquoi je demande votre aide, tout ça me laisse vraiment perplexe.

    Merci d'avance pour votre temps et bonne journée,

    Amélie

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Tu devrais surtout regarder ce que vaut xi; à priori toujours la même valeur, puisque tu réinitialises constament le générateur de graine (avec "call RANDOM_SEED" sans arguments avant chaque appel à RANDOM_NUMBER). Je doute que ce soit ce que tu souhaites faire.

    Bonne continuation.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Après avoir déplacé call RANDOM_SEED en début de programme, il semble que ça fonctionne ! Merci beaucoup, je te suis très reconnaissante, depuis le début de la semaine je m'arrache les cheveux sur ce problème !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    USTHB
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : USTHB

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 39
    Points
    39
    Par défaut Random
    Bonjour,

    la fonction call RANDOM_NUMBER(xi) elle va vous donner les meme valeurs pour chaque intervalle, donc faire attentions aux probabilité d'avoir accepté les solutions ou pas !!!

    et voila, bon courage

Discussions similaires

  1. [XL-2003] calcul seuil rentabilité avec algorithme (simulation de Monte Carlo)
    Par Les Bats dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 15h39
  2. Algorithme vba avec simulation de Monté Carlo
    Par Les Bats dans le forum Général VBA
    Réponses: 3
    Dernier message: 07/03/2011, 17h01
  3. simulation vba monte carlo
    Par geofnich dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2010, 16h53
  4. Simulation de Monte Carlo par Cognos v7
    Par waelT dans le forum Cognos
    Réponses: 1
    Dernier message: 17/02/2008, 12h37
  5. [VBA-E]Pb Simulation de Monté Carlo avec stockage d'information
    Par geminium dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/04/2007, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo