Reblog: “Introduction to Bayesian lecture: Accompanying handouts and demos”

Quando ho visto questo articolo mi sono ricordato di quali sforzi mentali ho dovuto compiere per entrare nella mentalità delle simulazioni “montecarlo”, quindi cercherò di spiegarlo nella maniera più semplice possibile.

Come si può calcolare il valore di Pi-Greco ?

Il metodo grafico – che mi aveva insegnato la maestra – consisteva di disegnare un cerchio inscritto in un quadrato  all’interno del quale stava una griglia di quadrati più piccoli possibile, come quella in figura sotto:

Stima di PI tramite rapporto fra aree Pi-Greco = ( Area del Cerchio / Area del quadrato ) * 4

Siccome l’area del quadrato è:

A1 =  Lato * Lato

e l’area del cerchio è (in funzione del lato del quadrato):

A2 =  (Lato/2)*(Lato/2)*π

Di conseguenza il rapporto A2/A1 e’ uguale a π/4.

Questo vol dire che nella figura vista sopra se facciamo il rapporto fra le 2 aree attribuendo al cerchio i quadrati che sono scuri per piu’ del 50% avremo una stima di π/4. Il risultato il figura è tale valore moltiplicato per 4.

Come si può vedere l’approssimazione migliora all’aumentare dei quadrati della griglia, ma fare questa stima in modo grafico non consente di andare oltre certi limiti dovuti alla dimensione del foglio e della penna che ha tracciato griglia e figure geometriche.

Il metodo descritto nell’articolo venne anche illustrato su “Scientific American” non mi ricordo di quale anno, ma mi ricordo che mi fece provare un notevole sconcerto riguardo all’approccio usato.

Nota: se non si fosse capito, ero un appassionato lettore di quella rivista, e devo dire che da essa ho preso molti spunti di riflessione e – nel mio piccolo – di ricerca.

Invece che coprire il quadrato ed il cerchio inscritto con una griglia molto sottile si tratta di “sparare” a caso un gran numero di punti sulla figura e poi controllare ( e contare ) quali colpiscono solo il quadrato o  si vengono a trovare nel cerchio, come viene fatto vedere dalla figura seguente:

La seconda parte della figura, ci fa vedere come l’approssimazione, all’aumentare del numero dei punti migliori il valore trovato di π.

Ovviamente non essendo un metodo “deterministico” anche ripetendo 2 volte la stessa simulazione si hanno valori leggermente differenti, ma la grandezza di queste differenze diminuisce all’aumentare dei punti utilizzati nel fare la stima.

Ma allora, ci si può chiedere, che vantaggi ha questo sistema per calcolare π? Non esiste una formula che ci consenta di calcolarlo ? Si, ne esistono diverse, e le potere vedere su questa pagina di wikipedia oppure su questa pagina di Wolfram Mathworld. Come si può vedere a colpo d’occhio, queste formule hanno un piccolo svantaggio: sono complesse!

Realizzare un programma che calcoli quelle formule è ancora più complesso, ovvero richiederebbe centinaia e centinaia di linee di codice per essere realizzato, e man mano che aumenta la complessità di un programma aumenta la possibilità di commettere errori logici che sfuggono a chi lo scrive.

Il metodo montecarlo di stima di π invece è molto semplice da realizzare (e quindi da controllare) ed al contempo la sua stesura richiede poco tempo.

Di conseguenza non è un metodo da scartare a priori, tanto che questo tipo di approccio viene utilizzato sia nella soluzione dei problemi della fisica delle particelle, che nelle previsioni meteo ed altri campi, dove un approccio più rigoroso sarebbe, come minimo estremamente complesso e molto oneroso sia nel tempo di realizzazione che di esecuzione dello stesso.

Programma di stima di PI-Greco usando il Metodo Montecarlo

Scritto in octave preso dal sito Rosetta Code (qui la pagina dove potere trovare le implementazioni nei vari linguaggi di programmazione). Vorrei specificare che queste righe di codice non sono mie, ho solo aggiunto i commenti e la stampa a terminale per vedere come varia il valore stimato di π al variare dei punti impiegati. Inoltre, per realizzare lo stesso metodo computazionale si potevano seguire altri modi, pur usando lo stesso linguaggio di programmazione, scrivendo codici fondamentalmente diversi e di diversa efficienza computazionale.

%——————————————————
% Routine di calcolo
%——————————————————
function p = montepi(samples)
  in_circle = 0;
  for samp = 1:samples
    v = [ unifrnd(-1,1), unifrnd(-1,1) ];
    if ( v*v.' <= 1.0 )
      in_circle++;
    endif
  endfor
  p = 4*in_circle/samples;
endfunction
%------------------------------------------------------
% Programma principale (callmonte.m)
%------------------------------------------------------
l = 1e2;
p=0.0;
massimo=1e9;
differenza=0.0;
    while (l < massimo)
        p=disp(montepi(l));
        l *= 10;
        printf ("Numero di punti 10^%d valore stimato %s \n ",log10(l),p);
    endwhile
%------------------------------------------------------

Risultato:

>>>callmonte
Numero di punti 10^3 valore stimato 3.3600
Numero di punti 10^4 valore stimato 3.1360
Numero di punti 10^5 valore stimato 3.1288
Numero di punti 10^6 valore stimato 3.1426
Numero di punti 10^7 valore stimato 3.1433
Numero di punti 10^8 valore stimato 3.1416
Numero di punti 10^9 valore stimato 3.1415


Per chi volesse vedere on-line come funziona questo metodo
può trovare una applet java nella pagina del Center for Polymer scritta da Gary McGath.

bayesianbiologist

I recently posted the slides from a guest lecture that I gave on Bayesian methods for biologists/ecologist. In an effort to promote active learning, the class was not a straight forward lecture, but rather a combination of informational input from me and opportunities for students to engage with the concepts via activities and discussion of demonstrations. These active components were designed with the goal of promoting students’ construction of knowledge, as opposed to a passive transfer from teacher to learner.

In order to bring the online reader into closer allignment with the experience of attending the class, I have decided to provide the additional materials that I used to promote active learning.

1) Monte-Carlo activity:

In pairs, students are provided with a random number sheet and a circle plot handout:

One student is the random number generator, the other is the plotter. After students plot a few points…

View original post 114 altre parole

Annunci

2 pensieri su “Reblog: “Introduction to Bayesian lecture: Accompanying handouts and demos”

  1. Pingback: Curiosità sul Pi-Greco | Num3ri v 2.0

  2. Pingback: I found π using bash and Montecarlo method and it was shocking! | Extended Reality

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...