Rechercher : dans
Par :

Probleme de programmation d'une loi normale e

Dernière réponse le 14 fév 2009 à 02:19:41 melanie59, le 6 déc 2007 à 10:26:49 
 Signaler ce message aux modérateurs

Bonjour,

Je voudrais simuler la loi normale N(0,1) en php mais je ne vois pas comment faire
merci d'avance pour votre aide

Configuration: Windows XP
Firefox 1.5.0.12

Meilleures réponses pour « probleme de programmation d'une loi normale e » dans :
Lancer un programme au démarrage du PC VoirLe problème Les solutions 1- Sans toucher au registre 2- En modifiant le registre Désactiver son lancement Le problème Certains programmes tels que Mozilla Firefox, Internet explorer ou encore les programmes de messagerie électronique ne...
Windows 7 - Forcer l'installation d'un programme / pilote VoirSi Windows 7 refuse une installation ! s'il y a un problème de compatibilité ! il est possible de forcer l'installation d'une application, programme ou un pilote. Il faudra encore du temps avant que certaines applications , programmes ou...
Désactiver l'exécution de certains programmes au démarrage VoirDésactiver l'exécution de certains programmes au démarrage - Windows 98/Me/2000/XP/Vista Avec msconfig Avec WinPatrol Avec Startuplite Avec CCleaner Remarques Lorsque vous installez des logiciels, certains s'exécutent à chaque...
Télécharger ProgDVB VoirLa diffusion de programme en numérique est de plus en plus en vogue depuis l'apparition de la connexion haut-débit. ProgDVB est un programme destiné à regarder des chaînes TV et à écouter des stations radio sur votre ordinateur. Il supporte le DVB-S...
Télécharger E-COMO Voire-Como est une application proposée par la Poste pour gérer vos colis depuis votre PC. Une fois installée sur votre bureau, notamment dans votre barre de tâche, e-Como vous indique l'état de vos colis. Le personnage est interactif, il détecte votre...
Introduction au e-Business VoirIntroduction au e-Business Il est aujourd’hui reconnu que les nouvelles technologies, en particulier l'accès à Internet, tendent à modifier la communication entre les différents acteurs du monde professionnel, notamment : les relations entre...
Enterprise Resource Planning (ERP) - Progiciel de Gestion Intégr VoirIntroduction aux ERP Les ERP (en anglais Enterprise Resource Planning), aussi appelés Progiciels de Gestion Intégrés (PGI), sont des applications dont le but est de coordonner l'ensemble des activités d'une entreprise (activités dites verticales...
Bus PCI Express (PCI-E) VoirLe bus PCI Express Le bus PCI Express (Peripheral Component Interconnect Express, noté PCI-E ou 3GIO pour «Third Generation I/O»), est un bus d'interconnexion permettant l'ajout de cartes d'extension dans l'ordinateur. Le bus PCI Express a été...

1

le père, le 6 déc 2007 à 11:02:00

Bonjour

Je suppose que ton problème est d'ordre mathématique plutôt que de programmation
va voir sur wikipedia
http://fr.wikipedia.org/wiki/Loi_normale#Fonction_de_r.C3.A9­partition
on t'indique comment simuler une loi normale avec 2 variables aléatoires de loi uniforme sur ]0,1[

Répondre à le père

2

vblover, le 6 déc 2007 à 14:29:30

Tu peux utiliser le theoreme de la limite centrale pour cela tu generes un nombre important de nombres aleatoires tu calcules leur xbar (moyenne) et tu soustraits l'esperance mathematique et tu divise par l'ecart type. Les nombres generes par l'ordinateur suivent la loi uniforme sur [0,1] donc l'esperance =1/2 et la variance=1/12, l'ecart type = la racine carree de la variance.

Répondre à vblover

3

le père, le 6 déc 2007 à 14:41:56

Oui, tu fais une boucle sur 100000 rnd(), c'est pratique et rapide ! La formule de wikipedia te donne directement un résultat

Répondre à le père

4

vblover, le 6 déc 2007 à 18:29:40

Concernant la reponse apportée par le pere je trouve que 100000 est un nombre exagéré. en simulation on prend tout simplement 12 ce qui evite de faire la division Sigma/racine de n. Personnellement je trouve que n=30 est suffisant.

Répondre à vblover

5

le père, le 6 déc 2007 à 20:44:21

Personnellement je trouve que n=30 est suffisant
tu trouves que ça suffit suivant quel critère ? Et quel est l'intérêt de prendre une approximation quand on a une formule exacte ?

Répondre à le père

6

vblover, le 7 déc 2007 à 17:32:50

Par tous les standards, n=30 est suffisant. Pour information les tables de la loi de Student (loi des petits echantillons s'arrete à 30), audela elle ne fait que mimer la loi normale. de plus il y a d'autres algorithmes qui generent la loi normale ex: la methode de Muller.
Nb n=30 est effectivement une approximation mais c'est aussi le cas de n=100000 ou n=10¨12 car le theoreme de la limite centrale est vraie (mathematiquement) lorsque n=infini.

Répondre à vblover

7

Jimy6000, le 10 déc 2007 à 07:24:36

Bonjour
Je viens d'essayer d'ouvrir ce lien ci dessous mais impossible d'acceder à la page :(
http://www.commentcamarche.net/forum/affich 4238210 probleme de programmation d une loi normale e
est ce que quelqu'un peut me dire où trouver un exemple equivalent ? ( de loi.normale )
Merci
Bye
Jimmy

Répondre à Jimy6000

8

vblover, le 10 déc 2007 à 18:48:27

Qu'entends tu par un exemple de loi normale?

Répondre à vblover

9

Jimy6000, le 11 déc 2007 à 02:58:48

Bonjour Vblover
J'entends par un exemple de tableau avec un téléchargement possible pour me donner une idée du genre de formule....
comme le lien du dessus -que je n'arrive pas a ouvrir- si tu as une adresse viable elle sera bienvenue :))
Merci d'avance
:) Keep smiling
Bye... Jimmy

Répondre à Jimy6000

10

vblover, le 11 déc 2007 à 20:01:44
  • +3

Algo n°1
A=0
C=2*3,14 c'est à dire PI
1 iF a+1 ALORS : a=0 ET DELIVRER w2
2 GENERER UN NOMBRE ALEATOIRE U QUI SUIT LA LOI UNIFORME SUR L'INTERVALLE 0 A 1
3 GENERER UN NOMBRE ALEATORE V QUI SUIT LA LOI EXPONENTIELLE AVEC LAMBA=1
4 B=(2*V)^1/2 C'EST A DIRE LA RACINE CARREE
5 U=C*U
6 w1= B*COS(U)
7 W2=B*SIN(U)
8 A=1
9 DELIVRER W1

QUELQUES EXPLICATIONS/
W1 et W2 sont des variables aleatoires qui suivent la loi normale avec une moyenne de 0 et une variance de 1
Cet algorithme suit la methode de Box et Muller
pour obtenir un nombre aleatoire qui suit la loi exponentielle avec parametre 1, on utilise la methode de l'inversion comme suit:
1 GENERER UN NOMBRE ALEATOIRE U QUI SUIT LA LOI UNIFORME SUR L4INTERVALLE DE 0 A 1
2 V+-LOG NEPPERIEN DE U
3 DELIVRER V

GOOD LUCK AND KEEP ON SMILING

Répondre à vblover

11

Jimy6000, le 13 déc 2007 à 02:58:18

Bonjour Vb Lover :)
Et gramd merci pour ton aide.
très bien expliqué et détaillé, on ne peut mieux répondre cependant j'ai une petite question; comment fait on pour intégrer tout ça dans une formule excel ? ( je rappelle au passage que cela ne fait pas longtemps que j'utilise Excell :-s )
merci encore
:) Keep smiling
Bye... Jimmy

Répondre à Jimy6000

12

vblover, le 16 déc 2007 à 20:27:43

Bon,tu devrais t'en sortir facilement avec excel. je suppose tu devrais passer par une macro VBA. Je n'ai jamais utilisé Excel avec des macros, mais l'algorithme que je t'ai proposé peut etre tres facilement transposé en VBA. La seule difficulté pourrais etre de generer un nombre aleatoire qui suit la loi uniforme. pour cela tu clique sur fonctions (fx) et tu choisis fonctions mathématiques ou statistiques, surement tu trouveras quelque chose comme alea ou aleatoire ou Rnd ou rand ou random.

Répondre à vblover

13

vblover, le 19 déc 2007 à 20:25:30

Jimmy, tu t'en sors avec VBA? Sinon je peux t'ecrire le code en Visual basic Cela devrait marcher mais toujours est-il je ne saurais pas te dire comment appeler le tout a partir d'excel.

Répondre à vblover

15

Jimy6000, le 21 déc 2007 à 08:49:44

Encore moi
Je n'ai pas tres bien saisi le "NOMBRE ALEATOIRE U QUI SUIT LA LOI UNIFORME SUR L'INTERVALLE DE 0 A 1"
et aussi comment intégrer cette formule ma plage de donnée ?
:) Keep smiling
Bye... Jimmy

Répondre à Jimy6000

14

Jimy6000, le 21 déc 2007 à 04:25:40

Bonjour Vb Lover.
Non je ne m'ensors pas :s je ne suis pas excel lent en vba :$
Si cela ne t'embète pas de mettre en forme sous vba :$
J'ai bien essayé mais cela n'a pas tellement bien marché et c'est plein d'erreurs
Désolé pour la réponse tardive j'étais pas mal occupé ces temps ci....
Merci de ton aide.
:) Keep smiling
Bye... Jimmy

Répondre à Jimy6000

16

vblover, le 21 déc 2007 à 12:07:37

Ne t'occupes pas des détails. Tout nombre générer par l'ordinateur ( avant toute transformation voulue par le programmeur) suit la loi uniforme sur l'intervalle [0,1]. C'est le cas de la fonction VB RND. Ainsi, si tu ecris par exemple X= RND(un nombre quelconque), X prendra une valeur entre 0 et 1. C'est aussi simple que ca. exemple:
X=RND(1)
Le nombre entre parenthese est obligatoire mais n'aurait aucune signification en dehors de la fonction RANDOMIZE(). En réalité il est utilisé en tant que semence pour débuter le processus de génération de nombres aléatoires. Tout cela tu t'en fous royalement.
Pour ce qui est d'une version VB, cet aprés midi je vais essayer de retrouver un vieux morceau de programme que j'ai ecris il y a 2 ans pour expliquer la simulation a mes étudiants. Toutefois je tiens a apporter la précision suivante: Le programme est en VB pas VBA. Je ne pense pas qu'il y a une différence, mais VBA j'y n'ai jamais touché.
Keep on smiling help is on the way.

Répondre à vblover

17

vblover, le 21 déc 2007 à 12:21:43

Suite a mon message precedent, je viens de verifier qu'EXCEL est bien capable de générer des nombres aléatoires entre 0 et 1. Il a la fonction ALEA(). exemple tu introduis dans n'importe quelle cellule la formule suivante:
=ALEA() puis tu tapes sur entrée, tu auras ainsi un nombre entre 0 et 1
RND vient de l'anglais RANDOM qui veut tout simplement dire ALEATOIRE en francais.

Répondre à vblover

20

Jimy6000, le 27 déc 2007 à 03:53:27

Merci VB L
I'm quiet good in English :p
Bien meilleur qu'en VBA lol :)
je reviens juste apres le réveillon dur dur ! je pose tout cela dans une macro et reviens te dire si cela fonctionne :)
Merci encore de ta sollicitude
:) Keep smiling
Bye... Jimmy

Répondre à Jimy6000

18

vblover, le 21 déc 2007 à 15:07:36

Bon, je pense que le plus simple serait de programmer la methode du theoreme de la limite centrale. grosso modo, ce theoreme stipule que si on prend un nombre n de variables aleatoires qui sont indépendantes et identiquement distribuées c'est a dire qu'elles suivent la meme loi de distribution, eh bien lorsque n tend vers plus l'infini, la distribution de la moyenne de ces n variables est tout simplement la loi normale. Remarque qu'aucune hypothese n'a ete emise quant a la distribution d'origine des n variables aléatoires. Autrement dit le theoreme est valide pour n'importe qu'elle loi. deuxio, Tu as du remarqué le debat qui s'est instauré entre le pere et moi meme en repandant a melanie59, lequel debat portait sur la valeur de n. Quand est-ce peut on dire que n est assez grand pour pouvoir invoquer le theoreme de la limite centrale. Les statisticiens ont deja repondu a la question: Si n est superieur a 30 alors n est assez grand et par consequent on peut invoquer le dit theoreme.
Je t'ai deja dit que les nombres aleatoires géneres par l'ordinateur suivent la loi uniforme sur l'intervalle (0,1). Du cours de probabilité tu peux trouver que l'esperance mathematique de cette loi est 1/2 alors que la variante est 1/12.
soit {XI} une famille de n éléments qui suivent la loi uniforme sur [0,1], donc E[Xi]=1/2 quelquesoit i=1,2... n
et Var[Xi]=1/12 quelquesoit i=1,2....n
Soit Tn=la somme des Xi
E[Tn]=n*E[Xi]=n/2
Var=[Tn]=n*var[Xi]=n/12
Maintenant creons une variable aleatoire Mn=Tn/n. Remarque que Mn est tout simplement la moyenne des Xi. En supposant que n est assez grand on peut invoquer le theoreme de la limite centrale et dire que Mn suit la loi normale.
Quels sont les parametres de cette distribution? Autrement dit quelles sont les valeurs de E[Mn] et Var[Mn]?
E[Mn]=e[Tn]/n=(n/2)/n=1/2
var[Mn)=var[Tn]/(n*n)= 1/(12*n)
Résume:
Mn suit la loi normale d'esperance mathematique 1/2 et de variance 1/(12*n)
Ou cela nous conduit_on?
Soit Z=(Mn-E[Mn])/racine carree de Var(Mn)
Z suit la loi normale centree et reduite autrement dit d'esperance mathematique 0 et de variance =1
Compliqué? oui et non. Voila ce qu'on va faire: generer un grand nombre de variables aleatoires et prendre leur moyenne qui va suivre la loi normale centree et reduite.
Voici le programme Vb pour faire cela
function normale01() as double
dim Tn as double, EX as double, VX as double
dim n as integer, i as integer
dim EM as double, VM as double, SVM as double
n=30 ' nombre de variable a generer
EX=1/2 ' l'esperance des Xi=1/2
VX=1/12 ' La variance des XI= 1/12
EM=1/2 ' L'esperance de Mn
VM=1/(12*N) ' La variance de Mn
SVM=sqrt(VM) ' L'ecart type de Mn
Tn=0 ' debut de la generation des n v.a initialiser leur somme a 0
for i=1 to n ' boucler autant de fois que la valeur de n
Tn=Tn+rnd(1) ' ajouter le nombre generer a la somme
next fin de la boucle
Mn=Tn/n calcul de la moyenne des nombres generes
normale01=(Mn-em)/SVM delivrer cette moyenne a laquelle on a soustrait la moyenne theorique et divisee par l'ecart type
end function
ET Voila c'est fait

Répondre à vblover

19

vblover, le 21 déc 2007 à 17:38:43

Jimmy
tout ce qui suit les apostrophes est une explication, donc tu peux te passer de les taper si tu dois ecrire le programme.
Il manque une apostrophe juste avant le mot delivrer a la ligne qui commence par normale01=. Tout comme l'explication continue sur la meme ligne pour inclure les mots ecart et type.

Répondre à vblover

27

 nada, le 14 fév 2009 à 02:19:41

Bonsoir,
je veux créer un programme d'optimisation en télécommunication en langage C et j'ai besoin de donner une configuration aléatoire au emplacements des sites et des mobiles en utilisant une loi uniforme
j'ai besoin de votre aide pour terminer mon programme

merci d'avance pour votre aide

Répondre à nada

21

TITO, le 27 déc 2007 à 12:26:34

S'il vous plait aider moi pour créer une base de donnée en language C .je le besoins pour mon projet merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

Répondre à TITO

22

fatima, le 16 avr 2008 à 12:08:33

Je veux connaitre la rèponse à mon question pour mon projet:soit (o,r)=f(x,y)avec f(x,y)=la densitè de probabilitè de (X,Y) detèrminer la densitè se probabilitè de (o,r) en utilisant le lemme de box muller et merci

Répondre à fatima

23

vblover, le 16 avr 2008 à 21:49:00

Peux-tu expliquer un peu plus?

Répondre à vblover

24

123, le 26 avr 2008 à 17:53:11

Merci

Répondre à 123