Méthode de Monte Carlo

Fermé
itralover - 29 oct. 2008 à 13:23
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 - 24 janv. 2014 à 07:53
Bonjour tous le monde
je suis un étudiant en physique nucléaire, je dois écrire un programme Fortran qui calcule une intégrale multidimensionnelle par la méthode de Monte carlo,et je cherche des programmes pareils pour voir comment faire et merci beaucoup à vous tous.

6 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
29 oct. 2008 à 15:01
La méthode de monte carlo ne sert pas à calculer directement une intégrale.
Je te conseil de te renseigner là dessus. Cette méthode sert à retrouver certains phénomènes physique par le biais de tirages aléatoire. Je n'en dit pas plus, j'ai peur de dire une connerie.
1
Bonjour Char Snipeur,
Je te remercie infiniment pour ta réponse mais je voulais juste te dire que je suis sur que la méthode de Monte Carlo permet de calculer une intégrale multidimensionnelle par le logiciel Fortran,je te demande de bien t'informer là-dessus et s'il y a de nouveaux je serai trés content de m'écrire et au revoir.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
3 nov. 2008 à 10:58
ha oui, en effet, je ne connaisait pas cette méthode...
http://www.aiaccess.net/French/Glossaires/GlosMod/f_gm_monte_carlo.htm
Bon, ba c'est pas très compliqué alors.
Il faut trouvé un générateur de nombre aléatoire (rand() ?) et c'est parti.
L'avantage du fortran c'est que les tableaux sont dimensionné automatiquement sur la dernière dimension.
REAL*8 som,V
c nombre de point max :
parameter Nmax 500
DO 1 N=1,Nmax
som=som+d()
1 continue
write(6,*)'resultat de :',som*V/Nmax

Ensuite, il faut définir une fonction d() donnant une valeur de façon aléatoire en fonction de ta fonction à intégrer f():
function d()
x1=rand()*(x1m-x1p)
x2=rand()*(x2m-x2p)
...
return f(x1,x2,...)

Voilà en gros le programme.
1
program Monte
implicit none
double precision x,Rf,IMf,RI,IMI,Rand
integer N,I
complex II,JJ
logical Domaine
open(10,file='x.dat')
JJ=(0d0,1d0)
RI=0d0
IMI=0d0
N=0

do 1 I=1,100
x=20d0
Domaine=(x.le.10d0).and.(x.ge.2d0)
do while(.not.Domaine)
x=8d0*Rand()+2
write(10,*)x
write(*,*)x
Domaine=(x.le.10d0).and.(x.ge.2d0)
enddo
RI=RI+Rf(x)
IMI=IMI+IMf(x)
N=N+1
1 Continue
RI=8d0*RI/N
IMI=8d0*IMI/N
write(*,*)N
II=RI+JJ*IMI

write(*,*)'partie réelle de l''integrale est',RI
write(*,*)'partie imaginaire de l''integrale est',IMI
write(*,*)' l''integrale complexe est: II=',II
end

double precision function Rf(x)
double precision x
Rf=(x*x-3)*dcos(x)/dsqrt(x-1)
return
end
double precision function IMf(x)
double precision x
IMf=(x*x-3)*dsin(x)/dsqrt(x-1)
return
end
0
voilà le programme sur fortran
0
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 190
24 janv. 2014 à 07:53
Bonjour,

Un point de départ par ici : http://www.physics.unlv.edu/~pang/comp6/monte.f90
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leila1980 Messages postés 3 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 décembre 2008
21 déc. 2008 à 23:51
je voudrais s'il vous plait que quelqu'un me fasse un programme de simulation monte carlo avec le longage de programmation fortran qui calcul la probabilité de transmission a travrs un canal droit et plein en aluminium et entouré du fer en utilisant l'albédo.
les particules incidentes sont des neutrons monocinétique.
c'est urgent voila mon e-mail: fleila1980.hotmail.fr
Merci beaucoup.
-1
Ta cru que tu passait commande là? ....
Donc les tarifs c'est 500€ la journée!
Mdr...

Diplôme de physique spécialité commentsamarche ^^
0
bonsoir Leila1980 ,
Alors le principe du programme est facile,normalement l'expression de la probabilité de transmission est une intégrale multidimensionnelle donc pour calculer la valeur de cette intégrale par un programme Fortran il suffit de calculer la valeur moyenne de la fonction à intégrer en utilisant les nombres aléatoires par (idum) aprés tu multiplie la valeur moyenne par le domaine d'intégration.
0
leila1980 Messages postés 3 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 décembre 2008
25 déc. 2008 à 00:30
cher itralover,
mon problème ne conserne pas le calcul d'integral mais de la probabilité de transmission à travers un canal droit et plein.
si tu veux me faire ce calcul ou tous personne pouvant m'aider ou capable de le faire qu'il me contacte sur mon e-mail pour lui donner les énnoncer du problème.
je serai très reconnaissante à toute personne pouvant m'aider à résoudre ce problème.
Meri chèrs amis
-1
Bonsoir Leila,
j'ai pas compris ,est-ce que ton probleme est purement physique c,à,d tu n'es pas arrivivé à trouver l'expression de la probabilité de transmission ou bien il est du coté programmation par fortran alors si tu as l'expression de la probabilité de transmission tu me l'envoies pour essayer de t'aider et meme si tu l'as pas envoie moi l'énnoncé du probleme ok? bon courage.
0
leila1980 Messages postés 3 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 décembre 2008 > itralover
25 déc. 2008 à 23:20
Bonsoir,
je voudrais le programme qui calcul la probabilité de transmission(nombre de neutrons à la sortie/le nombdre de neutron à l'entrée) à la sortie d'un canal droit de section carré remplie d'aluminium et entouré du fer.
le faiseau de neutrons entrant est est rectangulaire d'énergie monocinétiques.
les dimenions du canal sont des données d'entrées ainsi que l'énergie.
si vous avez besoin d'autres informations dites les moi.
merci beaucoup cher ami pour votre aide.
0