Bonjour,
je dois faire une intégration numérique par tirage au sort, mais là je bloque complètement, je comprends pas du tout comment on peux faire une intégrale en tirant au sort le x ?
merciiiiii
Bonjour,
je dois faire une intégration numérique par tirage au sort, mais là je bloque complètement, je comprends pas du tout comment on peux faire une intégrale en tirant au sort le x ?
merciiiiii
Salut
Tu peux chercher sur internet la méthode de Métropolis ou encore ce qu'on appelle un calcul Monte Carlo (car hasard rappelle les machines à sous).
Voici l'idée générale :
suppose que tu veux calculer I = int_a^b p(x)f(x)dx
où f(x) sont des fonctions et p(x) est une densité de probabilité.
Pour faire une intégration numérique le plus simple est d'utiliser la méthode des rectangle.
int_a^b f(x)p(x)dx = Sum_i f(x_i)p(x_i)dx
en général on prend dx = (b-a)/N avec N le nombre de points. Donc tu espace de manière régulière tes points le long de l'intervalle [a b]. Une autre façon de faire est de choisir dx qui dépend de i. Tu vas alors choisir un dx grand là où p(x) est petit et un dx petit là où p(x) est grand.
En clair tu choisis dx(x_i) = p(x_i)
De cette manière tu as que
I = 1/N Sum_i f(x_i)
avec N le nombre de points et en supposant que tu ais pris des points tels que dx=p(x). C'est cette dernière condition que tu vas satisfaire avec un tirage aléatoire.
Tu vas choisir aléatoirement un nombre y dans l'intervalle [a b] puis tu l'acceptes ou le rejettes avec une probabilité p(y). Pour ça tu as encore besoin d'un nombre aléatoire. Tu tires au hasard un nombre s'il est plus grand que p(y) tu n'acceptes pas y s'il est plus petit tu acceptes y. De cette manière tu vas accumuler un grand nombre de valeur de y qui ont été acceptées avec lesquelles tu calcules la somme des f(y) ce qui te donne l'intégrale. Si tu n'as pas de fonction p(x), ce problème ne se pose pas et tu choisi les nombres aléatoires sans conditions.
Il faut bien surveiller la convergence du résultats. Trace la valeur de l'intégrale en fonction du nombre de nombres aléatoires tirés. Si ça converge ça doit tendre vers une valeur. Pour exemple pour l'intégrale de x entre 2 et 3 je trouve 2,498800 avec 1000 points 2,499376 avec 10000 points 2,500232 avec 100000 points au lieu de 2,5 !
Tu devrais avoir des infos plus rigoureuses en cherchant sur le net mais tu risques de vite tomber dans un formalisme mathématique qui noie un peu les idées.
PS : avec fortran 90 tu as randon_number pour un nombre aléatoire.
Salut!
Pour mémoire, un petit dialogue lors d'un colloque Solvay:ce qu'on appelle un calcul Monte Carlo
Albert Einstein: Dieu ne joue pas aux dés
Niels Bohr: Ce n'est pas à vous de dire à Dieu ce qu'il doit faire
Jean-Marc Blanc
Merci beaucoup pour ta réponse. ça m'a vraiment aidé !!!
Partager