Lanciamo una moneta equa 10 volte. Qual è la probabilità che testa venga più frequentemente di croce?
La situazione appena considerata, cioè:
N = "n° di teste uscite in 10 lanci di una moneta equa",
Pr(N = i) = C(10, i) / 210 (i = 0, 1, …, 10),
è un caso particolare di legge di distribuzione binomiale. Se lanciassi n volte la moneta avrei:
Pr(N = i) = C(n, i) / 2n (i = 0, 1, …, n)
Nota. Si tratta di una legge "simmetrica": Pr(N = i) = Pr(N = n – i). Più avanti generalizzeremo questa legge in modo da rappresentare il caso in cui la moneta non sia equa.
Per controllare il ragionamento che ho svolto simulo il fenomeno mediante FA_RND.BAS con il seguente sottoprogramma Prova:
INT(RND*2) ha distribuzione uniforme in {0,1} (al 50% viene 0, al 50% viene 1), per cui, interpretando 1 come "testa", U, alla conclusione del ciclo, rappresenta il numero delle volte che è uscito "testa". |
|
U=0
FOR i=1 TO 10
U=U+INT(RND*2)
NEXT | |
Analizzando con STAT il file generato così, con NumeroDati=5000,
supponendo di averlo salvato col nome MONETESP.stf, ottengo un esito simile al seguente:
|
5000 dati min,max: 0,10
media: 4.9644 mediana: 5
5% :2 25% :4 50% :5
95% :8 75% :6 percentili
------|-----|==|==|------|------
moda: [4.5,5.5) freq.rel.modale: 24.98%
sc.quad.med.= 1.5475348 |
Dall'istogramma abbiamo che FreqRel(N=5)=25%, in buon accordo con la valutazione teorica di Pr(N=5) ottenuta risolvendo il quesito 10 (24.6%).
Per confrontare controllo non solo l'evento N=5 mi propongo di
costruire l'istogramma della legge di distribuzione.
Procedo analogamente a quanto fatto per il lancio di due dadi ( scheda 2, §6).
Devo costruire il file: 0 con freq. C(10,0), 1 con freq. C(10,1), …
Per trovare i valori di C(n,k) in questo caso (in cui non devo trovare un solo valore di C(n,k)) non ci conviene calcolare: n·/k·(n-1)/(k-1)·…·(n-k+1)/1, ma ricorrere al "triangolo di Tartaglia (o Pascal)", cioè alla iterazione:
C(n,0) = 1, C(n,n)=1, C(n+1,k+1) = C(n,k) + C(n,k+1).
Nota. È noto che C(n,k) rappresenta il coefficiente di grado k dello sviluppo del binomio (x+1)n; questo è il motivo per cui questa legge di distribuzione viene chiamata binomiale. È facile verificare che le due formulazioni sono equivalenti. (vedi anche Gli Oggetti Matematici).
Da qui puoi accedere a uno script per il calcolo di C(n,k). |
1
1 1
1 2 1
1 3 3 1
\ / \ / \ /
1 4 6 4 1 |
Possiamo quindi ricorrere al programma FaMonete.bas seguente, che
ci fornisce le uscite riportate sotto a destra, che possiamo poi copiare (usando il mouse dopo avere aperto
il menu che si apre cliccando sull'angolo alto a sinistra
della finestra del QBasic, in modo analogo a come si fa per incollarvi i
programmi, e aver scelto Segna invece di Incolla) dalla finestra di Output
del QBasic e incollare nella finestra-dati di Stat.
Nella castella STF puoi comunque trovare il file MONETEO.stf
contenente già questi dati.
Abbiamo costruito il programma in modo che generi "dati già classificati" in intervalli,
così che sia tracciato automaticamente l'istogramma. Trattandosi di intervalli di ampiezza 1,
densità di frequenza e frequenza coincidono, per cui potremo confrontare facilmente l'istogramma che
otterremo con il precedente istogramma sperimentale.
nm = 10 'numero di monete lanciate
DIM C(nm,nm)
GOSUB Cbin
FOR i=0 TO nm
PRINT i-1/2; ","; C(nm,i)
NEXT
PRINT nm+1/2; ",END"
END
Cbin:
C(0,0)=1
FOR n=1 TO nm
C(n,0)=1 : C(n,n)=1
FOR k=1 TO n-1
C(n,k)=C(n-1,k-1)+C(n-1,k)
NEXT
NEXT
RETURN |
-.5 , 1
.5 , 10
1.5 , 45
2.5 , 120
3.5 , 210
4.5 , 252
5.5 , 210
6.5 , 120
7.5 , 45
8.5 , 10
9.5 , 1
10.5 ,END |
Note. • Il programma usa la variabile indiciata C(n,k).
Per l'uso delle variabili indiciate vedi Gli Oggetti Matematici.
• Una semplice alternativa a FaMonete.bas è l'uso di Poligon:
con C(x,y) = cbin si assegna a C(x,y)
il termine !(x)/(!(x-y)*!(y)) che equivale al coefficiente binomiale
(la cosa viene ripresa nella parte finale di questo paragrafo),
poi si esegue for #I=0 to 10 : #C = C(10,#I); stamp = #I#C che
accumula per la stampa le coppie #i,#c, che poi si possono ottenere sulla finestra uscite mediante il comando
". Col comando "clip sono invece copiate nella memoria di Windows;
se poi in Stat, posizionatomi nella finestra-dati, aziono Ctrl+C (eventualmente dopo aver azionato Ctrl+A per selezionare ed eliminare il
vecchio contenuto) la sequenza delle coppie viene automaticamente copiata in Stat.
Genera i file MONETESP e MONETEO (questo lo puoi trovare già memorizzato) e, poi, analizzali con STAT.
Confronta gli esiti ottenuti con quanto riportato sopra e qui sotto.
Analizzando con STAT il file MONETEO.STF otteniamo la seguente rappresentazione della legge di distribuzione (per la scelta di "[a,b)" e di "n.classi" vedi ques. 9 della scheda 2):
|
1024 dati in 11 intervalli min,max: 0,10
media: 5 mediana: 5
5% :2 25% :4 50% :5
95% :8 75% :6 percentili
-------|------|==|==|------|-------
moda: [4.5,5.5) freq.rel.modale: 24.6094%
sc.quad.med.= 1.5811388 |
L'istogramma "sperimentale", ottenuto con 5000 prove, ha forma quasi uguale a
quello "teorico" ora ottenuto. STAT consente anche di sovrapporre i due istogrammi e confrontarli. Prova a farlo (un clic su [P] richiama la figura precedente,
un doppio clic unisce la precedente all'attuale): dovresti ottenere un esito analogo a quello riprodotto a lato.
|
|
Come Pr(N=5) (freq. rel. della moda) ho ottenuto lo stesso valore ottenuto in precedenza con il calcolo combinatorio.
|
Vediamo come effettuare il calcolo di Pr(N>5) con
Poligon. Questo programma ha predefinita la funzione fattoriale,
indicata con il simbolo funzionale ! (in Poligon occorre scrivere !(t) per il fattoriale di
un termine generico, ma si può scrivere ad es. 4! e, in generale, n! se n è un numero intero).
Come posso calcolare C(n,k) usando il fattoriale?
Basta osservare che n·(n1)·(n2)·
·(nk+1) =
n!/(nk)! e che, quindi, C(n,k) =
n!/((nk)! k!).
Quindi come Pr(N=x) in Poligon posso definire P(x) = !(10)/(!(10-x)*!(x))/2^10.
Per ottenere Pr(N>5) posso eseguire il comando (1-P(5)/2= ottenendo:
(1-P(5))/2 = 0.376953125
=193/512.
Potevo anche calcolare P(6)+
P(10) con [6,10] P SUM ottenendo lo stesso
risultato.
Nota. Poligon calcola il fattoriale di x facendo la
moltiplicazione degli interi positivi minori o uguali a x se x≤50; per x maggiori usa
un metodo approssimato ("di Stirling"), che fornisce un risultato che approssima x! con circa 5 cifre
significative. Di conseguenza anche il coefficiente binomiale per n>50 viene calcolato
in modo approssimato. Ecco qualche calcolo:
50!/49!=50 51!/50!=50.99993305917678 52!/51!=52.00000257835871
Si vede che nel calcolo da 51! in su intervengono delle approssimazioni (52!/51! è ottenuto con maggiore
precisione di 51!/50! in quanto 51! e 52! sono approssimati con uno stesso errore "sistematico".
Se nel programma con cui abbiamo costruito MONETEO
sostituiamo nm=10 con nm=50 (consideriamo, cioè,
quante volte esce "testa" lanciando 50 volte una moneta) e facciamo scrivere i dati in un file
(come nel programma Fa_Rnd.bas) e analizziamo il file con STAT, o se, più semplicemente,
generiamo e memorizziamo
i dati con POLIGON, mediante i comandi (vedi la Nota prima del ques. 11):
c(x,y)=cbin
FOR #i=0 TO 50 : #c = C(50,#i); #x = VAL(#i-1/2); STAMP = #x#c
"CLIP
e poi li incolliamo con Ctr+C nella finestra-input di STAT, dalla analisi otteniamo:
| media: 25 mediana = 25
moda: [24.5,25.5) FreqRel: 11.2275%
massima densita' di freq.:
11.2275% in [24.5,25.5)
5% :19.14969814 25% :22.6047939
50% :25
95% :30.85030186 75% :27.3952061
sc.quad.med.= 3.5355337 |
Nota, Se nel programma Monete.bas sostituissi mn=10 con nm=50 senza altre modifiche,
non riuscirei a vedere tutte le uscite. Agendo sulle prorietà delle finestra (cliccando in alto
a sinistra sulla finestra del QBasic) posso far aumentare la dimensione della finestra fino ad una
altezza di 50 righe, comunque non sufficienti. Potrei allora sostituire la riga all'interno del
FOR i - NEXT con
PRINT i - 1 / 2; ","; C(nm, i);
IF i = 25 THEN INPUT "", x ELSE PRINT
in modo da arrestare la stampa a metà, copiare e incollare una prima parte delle uscite,
premere Enter per rispondere alla (fittizia) istruzione di input e, quindi, ottenere la
seconda parte delle uscite.
|
|