Matematica finanziaria e Statistica
Esercizi svolti
Lancio di un dado 
Problema
Utilizzando l'ambiente PROGRAM EDITOR delle calcolatrici, realizzare un programma che simuli il lancio di un dado n volte e fornisca i valori delle frequenze assolute e relative di uscita di ciascuna faccia per 100, 1000 e 10000 lanci.
Questo problema si pone l'obiettivo di utilizzare le capacità di programmazione delle calcolatrici grafico-simboliche della Texas Instruments per una verifica sperimentale della "legge dei grandi numeri": per n abbastanza grande la frequenza con cui un evento aleatorio si verifica tende ad assumere il valore della probabilità calcolata "a priori".
Risoluzione
Costruiamo un nuovo programma dal nome simdado in una cartella a nostra scelta:


- comparirà un modello vuoto di programma

Riempiamo ora il modello con le istruzioni necessarie.
Decidiamo di utilizzare le variabili:
- lancio, contenente il numero della faccia che di volta in volta si presenta;
- i, che farà da contatore;
- numlanci, che conterrà il numero dei lanci che si desidera effettuare;
- esiti, una lista di 6 elementi che sarà utilizzata per memorizzare il numero di uscite di ogni singola faccia.
Le variabili saranno definite con il comando LOCAL, in quanto la loro visibilità sarà limitata all'interno del programma:
.......
Local lancio,i,numlanci,esiti
Inseriamo quindi l'istruzione ClrIO per cancellare l'ambiente PrgmIO nel quale vengono eseguiti i programmi, creiamo la lista esiti e richiediamo quanti lanci si vogliono effettuare, memorizzando questo dato in numlanci:
.......
ClrIO
newList(6)
esiti
Input "inserisci il numero dei lanci: ",numlanci
Effettuiamo ora i lanci richiesti facendo uso dell'istruzione rand() e memorizzando i risultati nella lista esiti:
For i,1,numlanci
rand(6)
lancio
esiti[lancio]+1
esiti[lancio]
EndFor
Visualizziamo infine i risultati dei lanci con qualche scritta esplicativa:
.....
ClrIO
Disp " Su "&string(numlanci)&" lanci"
For i,1,6
Disp string(i)&" esce "&string(esiti[i])&" volte con fr. rel. "&string(approx(esiti[i]/numlanci))
EndFor
Ecco il nostro programma tutto intero:
simdado()
Prgm
Local lancio,i,numlanci,esiti
ClrIO
newList(6)
esiti
Input "inserisci il numero dei lanci: ",numlanci
For i,1,numlanci
rand(6)
lancio
esiti[lancio]+1
esiti[lancio]
EndFor
ClrIO
Disp " Su "&string(numlanci)&" lanci"
For i,1,6
Disp string(i)&" esce "&string(esiti[i])&" volte con fr. rel. "&string(approx(esiti[i]/numlanci))
EndFor
EndPrgm
Ecco i risultati su 100 lanci:

su 1000 lanci:

e infine, con un po' di pazienza, su 10000 lanci:

Si possono facilmente modificare le istruzioni per ottenere la simulazione di un dado con s facce:
.....
Local lancio,i,numlanci,esiti,numfacce
.....
rand(numfacce)
lancio
.....
For i,1,numfacce
Disp string(i)&" esce "&string(esiti[i])&" volte con fr. rel. "&string(approx(esiti[i]/numlanci))
EndFor
per s=2 si otterrà lo studio dell'analogo esperimento relativo al lancio di una moneta:


Commenti sull'argomento
Se sei un iscritto a Cartesio puoi lasciare il tuo commento su questo argomento. Per iscriverti, clicca qui.
Al momento non ci sono commenti.



