Comment génerer une suite de varible qui suivent la loi exponentielle?

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

Comment génerer une suite de varible qui suivent la loi exponentielle?

par saram123 » 28 Nov 2013, 10:40

Bonjour,
Je voudrai générer une suite de variable aléatoire qui suivent la loi exponentielle.
par exemple:
j'ai besoin de générer 50 points dans une zone de 1000 meter.
J'ai oublié comment je peux déterminer le paramètre lambda? selon l'exemple au dessus ...
Je veux programmer la génération de ses variables pour les utiliser dans les simulation.
Qu'est qu'il faut utiliser comme script ou logiciel pour le faire?
J'ai vu que python génère des nombre aléa avec N.random.standard_exponential
Bonne journée :help:



mr_pyer
Membre Relatif
Messages: 137
Enregistré le: 07 Avr 2013, 20:42

par mr_pyer » 28 Nov 2013, 11:15

Il me semble que tous les logiciels (Scilab, Matlab, R, Excel...) savent générer des variables exponentielles.
Au pire ils génèrent une uniforme sur [0,1], de là on simule ce que l'on veut.

Par contre je n'ai pas compris, 1000 meter ??

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 11:26

mr_pyer a écrit:Il me semble que tous les logiciels (Scilab, Matlab, R, Excel...) savent générer des variables exponentielles.
Au pire ils génèrent une uniforme sur [0,1], de là on simule ce que l'on veut.

Par contre je n'ai pas compris, 1000 meter ??


Merci
par exemple j'ai une zone de 1000 mètre, et il ya 50 point dans cette zone (axe des x) . mon 2ème problème c'est comment trouver le paramettre lambda pour représenté une concentration de 50 humain dans une zone de 1000 mètre.
est ce que lambda = 50/1000? :hein:
merci

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21696
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 28 Nov 2013, 12:12

Salut,
Pas bien compris non plus ton 1000m et tes 50 bonhommes...

a) Tu veut que ce soit les position des bonhommes par rapport à 0 qui suivent des lois exponentielle indépendantes de même paramètre ? ou bien que ce soit les écart entre bonhommes qui suivent ces même lois exponentielles indépendants de même paramètre ? (vu la logique de la loi exonentielle, j'opterais pour la deuxième hypothèse, mais je préfèrerais pas perdre mon temps...)

b) Je pense que tu sait qu'une loi exponentielle peut prendre des valeurs aussi grande que l'on veut (avec de faibles proba) donc ton "50 personnes sur 1000m", ça correspond à quoi ? La moyenne de ce que tu veut obtenir ?
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 12:18

Ben314 a écrit:Salut,
Pas bien compris non plus ton 1000m et tes 50 bonhommes...

a) Tu veut que ce soit les position des bonhommes par rapport à 0 qui suivent des lois exponentielle indépendantes de même paramètre ? ou bien que ce soit les écart entre bonhommes qui suivent ces même lois exponentielles indépendants de même paramètre ? (vu la logique de la loi exonentielle, j'opterais pour la deuxième hypothèse, mais je préfèrerais pas perdre mon temps...)

b) Je pense que tu sait qu'une loi exponentielle peut prendre des valeurs aussi grande que l'on veut (avec de faibles proba) donc ton "50 personnes sur 1000m", ça correspond à quoi ? La moyenne de ce que tu veut obtenir ?


Enfin,
D’après ce que j'ai chercher sur la loi de poisson et expo , je vous explique mon problème:
j'ai une arrivée de bonhomme qui suit la loi expo de param lambda_t , donc l'inter arrivé suis une loi expo.
Moi je fais une simulation ou j'ai une concentration de 50 bonhomme dans une zone de 1000 mètre.
les positions de bonhommes est par exemple:
bonhomme1 x=3
bonhomme2 x=14
.....ainsi de suite. justement si j'ai 50 bonhommes dans la zone, comment puis je définir les positions initiales?
Merci d'avance

ElliotS
Messages: 6
Enregistré le: 25 Nov 2013, 17:48

par ElliotS » 28 Nov 2013, 12:28

Salut,

Pour simuler une loi exponentielle, tu admet que tu peux simuler une loi uniforme (avec la fonction rand() en C par exemple).
De là, tu calcules l'inverse généralisée de ta loi. En l’occurrence ici si , la loi exponentielle de paramètre peut être calculée par : .

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 28 Nov 2013, 13:25

Ton problème est vraiment pas clair. Il faudrait ête un peu plus précis... Quel est le lien entre "arrivée" et distance ? Qu'est-ce qui est exponentiel : chaque arrivée, ou la distance entre deux ? C'est quoi la "position initiale" ?
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 13:31

ElliotS a écrit:Salut,

Pour simuler une loi exponentielle, tu admet que tu peux simuler une loi uniforme (avec la fonction rand() en C par exemple).
De là, tu calcules l'inverse généralisée de ta loi. En l’occurrence ici si , la loi exponentielle de paramètre peut être calculée par : .


Merci bien,
je teste ça avec script shel et awk. matlab est trop long et moi je doit générer des milliers de positions, plusieurs fois!
Bonne journée

ElliotS
Messages: 6
Enregistré le: 25 Nov 2013, 17:48

par ElliotS » 28 Nov 2013, 13:38

De rien ;).
Si tu as un problème n'hésite pas, j'ai déjà réalisé un programme du même genre en C.

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 15:28

ElliotS a écrit:De rien ;).
Si tu as un problème n'hésite pas, j'ai déjà réalisé un programme du même genre en C.


Merci bien
Voila j'ai fait un script qi doit me générer 10 nombre selon la distribution exponentielle.
Code: Tout sélectionner
#!/bin/bash Tsim=1
while [ $Tsim -lt 10 ] do
my_log=$(echo 8 | awk '{l=0.05; x=rand();printf "%11.9f",-log(x)/l;}')
echo "my_log: "$my_log
Tsim=$((Tsim+1))
done


j'ai obtenu
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196
my_log: 28.727556196


le même nombre a chaque fois
et quand j'ai changé la commande et j'ai utiliser

il me fallait a chaque fois taper entré pour avoir une ligne du résultats, mais ça donne bien une suite de chiffre différent.
Le problème c'est que moi j'ai besoin de positions de 50 bonhommes dans une zone de 1000 mètre. avec ça j'ai des chiffre entre 1-101
Comment je peux changer ça pour avoir les positions?
en attendant je vais voir comment résoudre le problème de la touche entrée pour avoir le résultat.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 28 Nov 2013, 15:36

Le problème c'est que moi j'ai besoin de positions de 50 bonhommes dans une zone de 1000 mètre.


je répète :

Ton problème est vraiment pas clair. Il faudrait ête un peu plus précis... Quel est le lien entre "arrivée" et distance ? Qu'est-ce qui est exponentiel : chaque arrivée, ou la distance entre deux ? C'est quoi la "position initiale" ?
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 15:44

Sylviel a écrit:je répète :


Re bonjour,
alors une arrivée poissonnien implique l'inter arrivée exponentiel. dans un article j'ai aussi trouvé si l'inter arrivé est exponentiel ça implique que l'inter distance et aussi exponentielle
Est ce que c'est plus claire?
les position tous court, "initial" ça concerne ma simulation mais rien avoir avec le problème.
j'ai 50 personne dans 1000 mètre et l'inter distance est exponentielle

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 28 Nov 2013, 15:54

Donc si je fais l'exegèse de tes messages :

tu considères un processus poissonien (de paramètre constant j'imagine) indexé par la distance. Et tu voudrais qu'il y ai 50 personne sur les 1000 premiers mètres ?
Mais tu voudrais qu'il y ai 50 personnes dans quel sens ?
- A coup sûr ? --> ce n'est pas un processus poissonien
- avec une certaine proba ? --> ça va te déformer la répartition et être compliqué
- en moyenne ? --> il suffit de chercher le lien entre distance moyenne entre 2 personne (qui doit valoir 1000/50 = 20) et paramètre du processus de Poisson (i.e. le lambda de ta loi exponentielle).

Ensuite pour générer tes positions je prendrais plutôt un truc du type scilab, scipy (python), voir excel. Tu peux même coder en C mais ça sera plus long.

Sous scilab :
Code: Tout sélectionner
A=grand(n,m,"exp",lambda)
cumsum(A,'r')


te donneras une matrice de taille nxm, où chaque colomne sera la suite des positions de tes n bonhommes (pour un processus de poisson de paramètre lambda).

P.S: scilab est gratuit et multiplateforme, tu peux exporter tes résultats ensuite.
P.P.S : si tu as un tirage avec 50 bonhomme ce n'est pas juste en regardant la somme que tu fitteras au mieux ton processus. Il vaut mieux regarder les 50 interdistance et en déduire le meilleur lambda.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 28 Nov 2013, 17:23

Sylviel a écrit:Donc si je fais l'exegèse de tes messages :

tu considères un processus poissonien (de paramètre constant j'imagine) indexé par la distance. Et tu voudrais qu'il y ai 50 personne sur les 1000 premiers mètres ?
Mais tu voudrais qu'il y ai 50 personnes dans quel sens ?
- A coup sûr ? --> ce n'est pas un processus poissonien
- avec une certaine proba ? --> ça va te déformer la répartition et être compliqué
- en moyenne ? --> il suffit de chercher le lien entre distance moyenne entre 2 personne (qui doit valoir 1000/50 = 20) et paramètre du processus de Poisson (i.e. le lambda de ta loi exponentielle).

Ensuite pour générer tes positions je prendrais plutôt un truc du type scilab, scipy (python), voir excel. Tu peux même coder en C mais ça sera plus long.

Sous scilab :
Code: Tout sélectionner
A=grand(n,m,"exp",lambda)
cumsum(A,'r')


te donneras une matrice de taille nxm, où chaque colomne sera la suite des positions de tes n bonhommes (pour un processus de poisson de paramètre lambda).

P.S: scilab est gratuit et multiplateforme, tu peux exporter tes résultats ensuite.
P.P.S : si tu as un tirage avec 50 bonhomme ce n'est pas juste en regardant la somme que tu fitteras au mieux ton processus. Il vaut mieux regarder les 50 interdistance et en déduire le meilleur lambda.


J'ai réglé le script qui me génère des variables selon la loi du poisson mais toujours j'ai aucune idée comment avoir 50 personne dans une zone de 1000 mètres.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 12:00

par Sylviel » 28 Nov 2013, 17:24

Tu n'as pas répondu à mes remarques...

Mais tu voudrais qu'il y ai 50 personnes dans quel sens ?
- A coup sûr ? --> ce n'est pas un processus poissonien
- avec une certaine proba ? --> ça va te déformer la répartition et être compliqué
- en moyenne ? --> il suffit de chercher le lien entre distance moyenne entre 2 personne (qui doit valoir 1000/50 = 20) et paramètre du processus de Poisson (i.e. le lambda de ta loi exponentielle).


P.P.S : si tu as un tirage avec 50 bonhomme ce n'est pas juste en regardant la somme que tu fitteras au mieux ton processus. Il vaut mieux regarder les 50 interdistance et en déduire le meilleur lambda.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

bnoch
Membre Naturel
Messages: 15
Enregistré le: 11 Oct 2013, 00:11

par bnoch » 01 Déc 2013, 15:04

Salut,

50 points sur X et 1000 pour valeur max en Y ?

Alors je pense que tu peux, pour chaque point en X dire que Y = X/50(ou (X+1)/50 qui vaudra max 1) exposant un entier positif (pour moduler l'expressivité de ton exponentielle) multiplié par ta valeur haute, 1000.

((position/position max)^entier de la courbure)*valeur max

saram123
Membre Naturel
Messages: 11
Enregistré le: 04 Nov 2013, 17:07

par saram123 » 04 Déc 2013, 16:49

Sylviel a écrit:Tu n'as pas répondu à mes remarques...

Re Salut,
En effet vous avez raison, j'ai générer une suite de var aléatoire selon une loi expo , et c'est vrai le nombre n'est pas fixe comme une loi uniforme.
j'ai bien compri et j'ai programmé avec un script shell et awk la fonction de génération.
Merci beaucoup :lol3:

bnoch
Membre Naturel
Messages: 15
Enregistré le: 11 Oct 2013, 00:11

par bnoch » 04 Déc 2013, 18:02

De rien :)

On peux ajouter que s'il fallait que le premier ce situe à zéro mètres et le dernier à 1000m, nous aurions du calculer ((x/49)^n)*1000, avec l'index (départ de zéro) en x.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 46 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite