papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Statistiques : les aléas Lun 24 Déc 2012 - 3:53 | |
| Salut tout le monde. Le programme suivant permet de calculer : L’aléa de BERNOULLI L’aléa de POISSON L’aléa de LAPLACE L’aléa de GAUSS - Code:
-
' ****************************************************************************** ' ' S T A T I S T I Q U E S : C A L C U L D E S A L E A S ' ' ALEAS.BAS par PAPYDALL ' ' ****************************************************************************** run() end ' ****************************************************************************** SUB Run()
label clic dim a,b,b1,b2,b3,b4,b5,p,p1,pi,v,z dim_local tex$ a = 0.2316419 : b1 = 0.31938153 : b2 = 0-0.35656378 : b3 = 1.78147794 b4 = 0-1.82125598 : b5 = 1.33027443 : pi = 4*atn(1) top 0,100 : left 0,200 caption 0,"PROGRAMME DE CALCUL D'ALEAS NUMERIQUES : PAR PAPYDALL" application_title "Statistiques par PAPYDALL" container 1 : top 1,50 : left 1,100 : width 1,400 : height 1,300 alpha 2 : parent 2,1 : top 2,20 : left 2,40 color 2, 255,255,0 : font_color 2,0,100,200: font_bold 2 : font_size 2,14 caption 2," CALCUL D'ALEAS NUMERIQUES" tex$ = "Ce programme vous permet de calculer les probabilités de certains" tex$ = tex$ + chr$(13)+"événements obéissant à l'une des lois suivantes :" hint 2,tex$
list 10 : parent 10,1 : top 10,70 : left 10,50: width 10,300 : height 10,100 color 10 ,0,0,255 :font_color 10,255,255,0:font_size 10,14 : font_bold 10 hint 10,"Faites votre choix" : on_click 10,clic item_add 10,"ALEA DE BERNOULLI" : ITEM_add 10,"ALEA DE POISSON" item_add 10,"ALEA DE LAPLACE" : item_add 10,"ALEA DE GAUSS"
button 20:parent 20,1:top 20,250:left 20,100:caption 20,"Aide": on_click 20,clic button 30:parent 30,1:top 30,250:left 30,200:caption 30,"Quitter": on_click 30,clic form 100 : top 100,150 : left 100,250: width 100,500 : hide 100 button 110 : parent 110,100:top 110,150 : left 110,300 : caption 110,"OK" hide 110 : on_click 110,clic form 1000 : width 1000,900 : height 1000,700 : top 1000, 100 : left 1000,100 button 1010 : parent 1010,1000 :top 1010,600 : left 1010,300 : caption 1010,"OK" hide 1000 : on_click 1010,clic END_SUB ' ****************************************************************************** clic: if clicked(10) = 1 then alea() : return if clicked(20) = 1 then aide() : return if clicked(30) = 1 then quitter() : return if clicked(110) = 1 then hide 100 : return if clicked(1010) = 1 then hide 1000
return ' ****************************************************************************** SUB alea() dim_local i% i% = item_index(10) if item_read$(10,i%) = "ALEA DE BERNOULLI" then Bernoulli(): exit_sub if item_read$(10,i%) = "ALEA DE POISSON" then Poisson(): exit_sub if item_read$(10,i%) = "ALEA DE LAPLACE" then Laplace(): exit_sub if item_read$(10,i%) = "ALEA DE GAUSS" then Gauss() END_SUB ' ****************************************************************************** SUB Bernoulli() DIM_LOCAL r$,n,r,k, k1,k2,c,p,a caption 100, "Aléa de BERNOULLI" : show 100 : hide 110 : print_target_is 100 print "Je peux calculer la probabilité qu'a un événement donné de se réaliser" print "un certain nombre de fois au bout de plusieurs tirages." repeat repeat r$ = message_input$("Entrez le nombre de tirage ","Entier positif ","6") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) n = val(r$) repeat repeat r$ = message_input$("Entrez la probabilité","Quelle est la probabilité de l'événement à chaque tirage ? Comprise entre 0 et 1 ","0.487") until numeric(r$) = 1 until val(r$) > 0 and val(r$) < 1 r = val(r$) repeat repeat r$ = message_input$("Entrer les valeurs K1 et K2 (K1 < K2)","K1 et K2 encadrant le nombre de fois que vous voulez voir se réaliser l'événement : K1 = ?","4") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) k1 = val(r$)
repeat repeat r$ = message_input$("Entrer les valeurs K1 et K2 (K1 < K2)","K1 et K2 encadrant le nombre de fois que vous voulez voir se réaliser l'événement : K2 > "+str$(k1)+" ?","6") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) and val(r$) > k1 k2 = val(r$)
c = 0 for k = k1 to k2 p = power(r,k)* power(1-r,n-k) if k > 0 then for a = 1 to k : p = (p/a)*(n-k+a) : next a c = c + p next k show 110 : print : print print "Pour ";n;" tirages et une probabilté de ";r print "La probabilité pour que l'événement se réalise entre ";k1;" et ";k2;" fois est ",c
END_SUB ' ****************************************************************************** SUB Poisson() dim_local r$,m,k,k1,k2,c,p,a caption 100, "Aléa de POISSON" : show 100 : hide 110 : print_target_is 100 print "Je peux calculer la probabilité qu'a un événement de se produire" print "plusieurs fois dans un intervalle de temps connaissant la fréquence moyenne." repeat repeat r$ = message_input$("Entrez la fréquence moyenne","Quel est le nombre moyen d'événements par unité de temps ?","6") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) m = val(r$) repeat repeat r$ = message_input$("Entrer les valeurs K1 et K2 (K1 < K2)","K1 et K2 encadrant le nombre de fois que vous voulez voir se réaliser l'événement : K1 = ?","0") until numeric(r$) = 1 until val(r$) >= 0 and val(r$) = int(val(r$)) k1 = val(r$)
repeat repeat r$ = message_input$("Entrer les valeurs K1 et K2 (K1 < K2)","K1 et K2 encadrant le nombre de fois que vous voulez voir se réaliser l'événement : K2 > "+str$(k1)+" ?","9") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) and val(r$) > k1 k2 = val(r$)
c = 0 for k = k1 to k2 p = power(m,k)/exp(m) if k > 0 then for a = 1 to k : p = (p/a) : next a c = c + p next k
show 110 : print : print print "Pour une fréquence ";m print "La probabilité pour que l'événement se réalise entre ";k1;" et ";k2;" fois est ",c
END_SUB ' ****************************************************************************** SUB Laplace() dim_local r$,m,r,p,x,x1,x2 caption 100, "Aléa de LAPLACE" : show 100 : hide 110 : print_target_is 100 print "Je peux calculer la probabilité pour qu'un événement se réalise" print "un temps donné, connaissant la fréquence moyenne par unité de temps." repeat repeat r$ = message_input$("Saisie du nombre moyen d'événements","Quelle est la fréquence moyenne par unité de temps ?","3") until numeric(r$) = 1 until val(r$) > 0 and val(r$) = int(val(r$)) m = val(r$) repeat repeat r$ = message_input$("Probabilité pour qu'un événement", "1 : arrive avant un instant donné"+chr$(13)+"2 : n'arrive pas avant un temps donné"+chr$(13)+"3 : arrive entre les instants X1 et X2"+chr$(13)+"Votre choix (1 , 2 , 3) ?","1") until numeric(r$) = 1 until val(r$) > 0 and (val(r$) = 1 or val(r$) = 2 or val(r$) = 3) r = val(r$)
if r = 1 repeat repeat r$ = message_input$("Saisie de l'instant X","Donnez l'instant X compté en unités de temps :","0.083") until numeric(r$) = 1 until val(r$) > 0 x = val(r$) : p = 1 - exp(0-m * x) show 110 : print : print : print "La probabilité cherchée vaut : ";p else if r = 2 repeat repeat r$ = message_input$("Saisie de l'instant X","Donnez l'instant X compté en unités de temps :","0.083") until numeric(r$) = 1 until val(r$) > 0 x = val(r$) : p = exp(0-m * x) show 110 : print : print : print "La probabilité cherchée vaut : ";p else repeat repeat r$ = message_input$("Donnez les valeurs X1 et X2 (X1 < X2)","exprimés en unités de temps : X1 = ?","0.083") until numeric(r$) = 1 until val(r$) >= 0 x1 = val(r$) repeat repeat r$ = message_input$("Donnez la valeur X2 (X2 > "+str$(x1)+")","exprimés en unités de temps : X2 = ?","1") until numeric(r$) = 1 until val(r$) > x1 x2 = val(r$) : p = exp(0-m * x1) - exp(0-m * x2) show 110 : print : print : print "La probabilité cherchée vaut : ";p end_if end_if
END_SUB ' ****************************************************************************** SUB Gauss() dim_local r$,m,sigma ,x1,x2 caption 100, "Aléa GAUSS" : show 100 : hide 110 : print_target_is 100 print "Je peux calculer la probabilité qu'a une variable de moyenne " print "et d'écart-type donnés de se trouver dans un intervalle." repeat repeat r$ = message_input$("Caractéristiques de cette variable","Moyenne = ?","10.2") until numeric(r$) = 1 until val(r$) > 0 m = val(r$) repeat repeat r$ = message_input$("Caractéristiques de cette variable","Ecart-type = ?","0.15") until numeric(r$) = 1 until val(r$) > 0 sigma = val(r$) repeat repeat r$ = message_input$("Saisie des limites","Limite inférieure de l'intervalle = ?","0") until numeric(r$) = 1 until val(r$) >= 0 x1 = val(r$) repeat repeat r$ = message_input$("Saisie des limites","Limite supérieure de l'intervalle (> "+str$(x1)+") = ?","10") until numeric(r$) = 1 until val(r$) > x1 x2 = val(r$) : z = (x1 - m) / sigma : calcul_integral() p1 = p : z = (x2 - m) / sigma : calcul_integral() : p = p - p1 show 110 : print : print : print "La probabilité cherchée vaut : ";p END_SUB ' ****************************************************************************** SUB Calcul_integral() b = 0 : if z < 0 then z = 0-z : b = 1 v = 1 / (1 + a * z) p = 1 - (1 / sqr(2*pi)) *exp(0-z * z / 2)* v *(b1+v*(b2+v+(b3+v*(b4+v*b5)))) if b = 1 then p = 1 - p END_SUB ' ****************************************************************************** SUB Aide() show 1000 : print_target_is 1000: font_bold 1000 caption 1000,"D'après l'article LE MICRO DE L'INGENIEUR Statistiques : les aléas paru dans SCIENCES ET VIE N° 845 Février 1988 et écrit par Daniel FERRO" print PRINT " Aléa de Bernouilli:" PRINT " Imaginez un sac plein de boules blanches et noires, en proportions quelconques. Si l'on tire une boule, si l'on note sa couleur," PRINT " si on la remet dans le sac, et si on recommence plusieurs fois ce tirage, le nombre de boules blanches observé aura plusieurs valeurs" PRINT " possibles, mais aucune d'entre elles n'aura la même probabilité d'apparaître." print PRINT " Exemple :" PRINT " Une femme rêve d'avoir au moins 4 filles. Sachant que la probabilité par naissance vaut 0,487 ( il naît un peu plus de garçons que" PRINT " de filles ), quelle sera la probabilité de les avoir au bout de six enfants ? ( Réponse: 0,32, en prenant r=0,487, n=6 et k entre 4 et 6.)" print PRINT " Aléa de poisson :" PRINT " Cette fois nous nous intéressons à des événements pouvant se produire plusieurs fois dans un intervalle de temps donné." PRINT " Le modèle de Poisson, très utilisé, permet de représenter nombre de phénomènes. Le nombre de naissances, de décès," PRINT " d'accidents, de clients, par unité de temps sont des valeurs dont le modèle de Poisson permet d'estimer les probabilités d'occurence." print PRINT " Exemple:" PRINT " Dans la maternité d'une petite ville le médecin chef s'aperçoit un beau jour, que son établissement ne possède plus que quatre lits " PRINT " de libre. Sachant qu'a cette époque de l'année il arrive en moyenne 6 patientes et que d'ici le lendemain, cinq jeunes mamans doivent" PRINT " repartir, il peut se demander non sans inquiétude quelle est la probabilité pour que dans les prochaines 24 heures il soit à court de" PRINT " lits ( ce qui arriverait en fait si au lieu de six il venait 5 + 5 = 10 femmes )." PRINT " La probabilité pour qu'arrive entre 0 et 9 femmes est 0,92, donc la réponse est 1-0,92 = 0,08." print PRINT " Aléa de Laplace:" PRINT " Vous avez fait réparer votre magnétophone pour la troisième fois et vous aimeriez savoir s'il ne risque pas de vous lâcher avant votre" PRINT " anniversaire de mariage ? Si vous connaissez certains paramètres statistiques de votre appareil, vous pourrez estimer la probabilité" PRINT " de défaillance et vous organiser en conséquence. Tous les constructeurs d'équipements électroniques connaissent cet aléas." print PRINT " Exemple:" PRINT " Le magnétophone a été réparé 3 fois sur une période d'un an. Votre anniversaire de mariage est dans 1 mois." PRINT " L'instant x compté en unité de temps est 1/12 soit 0,083." PRINT " La probabilité cherchée vaut : 0,21. Soit environ une chance sur 5 que votre magnétophone soit en panne." print PRINT " L'aléa de Gauss:" PRINT " Un des plus connus, sinon le plus utilisé. La taille d'un élève, sa note au bac, le poids d'une citrouille ou le rendement d'un champ" PRINT " de maïs sont de valeurs dont la probabilité est calculable en utilisant le modèle de Gauss." print PRINT " Exemple:" PRINT " Un coureur effectue en moyenne les 100 m en 10,2 secondes, avec un écart-type de 0,15 secondes. Quelle est la probabilité" PRINT " pour qu'aux prochains jeux il termine une course donnée en un temps inférieur à 10 secondes ? (Réponse en utilisant l'aléa de gauss: 0,09)" END_SUB ' ****************************************************************************** SUB quitter() terminate END_SUB ' ******************************************************************************
Hé Ygeronimi, tu tiens toujours ton stock à jour n’est-ce pas ? | |
|