Sei sulla pagina 1di 23

Integrale: metodo Monte Carlo

aggiornato: 2020-12-09

1 / 23
Metodo Monte--Carlo

Immaginiamo di voler dare una stima del valore di π; consideriamo il cerchio


di raggio 1 inscritto nel quadrato di lato 2: il quadrato ha area 4 e il disco area
π. Abbiamo quindi subito che π < 4.

2 / 23
Per procedere possiamo reticolare il quadrato attraverso un insieme di nT
quadratini Q di area Aquadratino = 4/nT . Per esempio se dividiamo il
quadrato in una scacchiera 8 × 8 di 64 quadratini

Si ha

4 1
Aquadratino = =
2
8 16

3 / 23
Ciascun quadratino può essere

Completamente interno al disco [I]


Parte dentro e parte fuori (di confine) [C]
Completamente esterno al disco [E]

Come dare una stima per difetto e per eccesso di π (area del disco)? Alla stima
per difetto contribuiscono gli nI quadratini interni. Alla stima per eccesso gli
nC quadratini di confine (insieme a quelli interni).

L'errore del metodo è dovuto ai quadrati di confine. Possiamo stimare per


difetto l'area del disco come
nI
Stima per difetto di π = Aquadratino ∗ nI = 4
nT

nC + nI
Stima per eccesso di π = Aquadratino ∗ (nC + nI ) = 4
nT

Nella situazione della Figura abbiamo 32 quadratini interni e la stima per


difetto risulta 4 ∗ 32/64 = 2. 60 quadratini sono sufficienti a ricoprire il disco
e la stima per eccesso risulta 4 ∗ 60/64 = 3.75.

4 / 23
Scacchiera di lato 16

Qui si considera una scacchiera di 16 quadratini per lato (totale 256) abbiamo
164 quadratini interni e la stima per difetto risulta 4 ∗ 164/256 = 2.5625
mentre 224 sono sufficienti a ricoprire il disco e la stima per eccesso risulta
4 ∗ 224/256 = 3.5.

5 / 23
La tabella seguente illustra la situazione per quadrettature più fini.

di stima per stima per


interni esterni media
confine difetto eccesso

8 32 4 28 2.0000000 3.7500000 2.875000000

16 164 32 60 2.5625000 3.5000000 3.031250000

32 732 168 124 2.8593750 3.3437500 3.101562500

64 3080 764 252 3.0078125 3.2539062 3.130859375

6 / 23
Risulta evidente che procedere in questo modo diviene poco pratico. I
quadratini diverranno sempre più piccoli e il loro conteggio praticamente
impossibile.

L'idea può però essere modificata: immaginiamo una suddivisione


infinitamente fitta: anziché avere quadratini possiamo pensare di avere punti,
ma non potendo generare / considerare infiniti punti si potrebbe pensare di
sondare lo spazio in modo non deterministico. Generiamo quindi punti in
modo casuale (ma uniformemente distribuiti nel quadrato) e per ciascuno di
essi rispondiamo alla stessa domanda che ci siamo posti prima per i
quadratini: il punto è esterno o interno (non si ha qui la situazione di
confine)?

Procedendo come prima giungiamo alla stima intuitiva

punti interni
π = area ≈ ∗ 4
punti totali

7 / 23
La figura illustra la situazione.

Nel nostro caso abbiamo trovato con 10000 tiri e 7858 successi la stima
π ≈ 3.1432.

8 / 23
Il metodo
Quanto ora esposto è alla base del metodo Monte--Carlo. Il metodo di
integrazione Monte–Carlo consente in generale di valutare numericamente
l’area τ di regioni di forma anche abbastanza complessa.

La condizione essenziale affinché il metodo funzioni è che τ sia contenuta in


un rettangolo R = [a, b] × [c, d] di confronto con area R = (b − a) ∗ (d − c)
nota (nel caso precedente un quadrato di area 4).

9 / 23
Nel caso in cui la parte di piano τ in questione sia quella compresa fra il
grafico di una funzione f (x) ≥ 0 e l'asse X, fra le ascisse x = a e x = b,
a < b, ogni valutazione numerica dell'area di τ si traduce automaticamente in
una valutazione numerica dell'integrale

T = area(τ ) = ∫ f (x) dx
a

10 / 23
Precisiamo meglio quanto stiamo facendo. Indichiamo con E l'esperimento
che consiste nello scegliere un punto P a caso in una regione R (il quadrato
nell'esempio precedente). Nella pratica questo punto potrà essere scelto con le
istruzioni

n = 1
x = runif(n, a, b) # a<x<b
y = runif(n, c, d) # c<y<d
P = c(x, y)

dove in generale R = [a, b] × [c, d] .

Diremo che abbiamo ottenuto un successo se il punto P (scelto a caso) è


interno a τ (nell'esempio precedente il disco), che è il target/bersaglio del
metodo, e parleremo di insuccesso in caso contrario, come se si trattasse di un
tiro al bersaglio. L'intuizione ci dice che la probabilità p di successo è uguale
al rapporto

p = T /R

fra l'area T del bersaglio e l'area R del rettangolo di confronto dove viene
scelto (a caso) il punto P .

11 / 23
Siamo quindi in una situazione bernoulliana: possiamo ripetere la scelta a
caso di P per n volte e contare il numero k dei successi. Intuitivamente la
frequenza k/n tende a p al crescere di n. L'area T si può quindi stimare come
una percentuale dell'area R di riferimento:

k
T = p ∗ R ≈ R
n

12 / 23
Calcolo di Integrali definiti

b
La stima di T = ∫
a
f (x)dx sarà qui

successi
T ≈ ∗ (b − a) ∗ d
tiri

13 / 23
Talora conviene ridurre la regione rettangolare (gialla) R di riferimento, per
esempio eliminando la regione grigia visto che ha area nota (b − a) ∗ c

b
La stima di T = ∫
a
f (x)dx sarà qui

successi
T ≈ ∗ (b − a) ∗ (d − c) + (b − a) ∗ c
tiri

14 / 23
Esempio II

Come secondo esempio di applicazione del metodo di integrazione Monte--


Carlo calcoliamo l'area del segmento parabolico compreso fra la parabola
y = 4x(1 − x) e l'asse X , fra le ascisse x = 0 e x = 1. In termini di integrale

si tratta di calcolare
1

T = ∫ 4x(1 − x) dx
0

Nell'opera Quadratura della parabola, Archimede dimostrò


che l'area di un segmento parabolico è uguale a 4/3 dell'area del triangolo
avente la stessa base e la stessa altezza.

Nel nostro caso il triangolo in questione ha area 1/2. Quindi qui


T = 4/3 ∗ 1/2 = 2/3.

15 / 23
Scegliamo ancora il quadrato Q = [0, 1] × [0, 1] di area R = 1 come
rettangolo di confronto, ed in esso scegliamo n = 10000 punti a caso.

Nella realizzazione concreta presentata abbiamo trovato k = 6581 successi su


n = 10000 prove, con una stima di p = 0.6581, e quindi, p

T = ∫ 4x(1 − x) dx ≈ 0.6581 ∗ 1 = 0.6581


0

Come sappiamo il valore esatto è


T = 2/3 = 0.6666 ….

16 / 23
Esempio III

Come ulteriore esempio di applicazione del metodo di integrazione Monte--


Carlo calcoliamo
10

T = ∫ {2 + sin(cos(2x) log(x))} dx
1

17 / 23
Qui non si vede direttamente un rettangolo di confronto: occorre
preliminarmente farsi un'idea del grafico della funzione

f (x) = 2 + sin(cos(2x) log(x))

definita sull'intervallo [1, 10], eventualmente tracciandolo con R.

Così facendo si scopre che per 1 ≤ x ≤ 10 si ha (con una certa abbondanza)


che 0 ≤ f (x) ≤ 3.5. (in effetti 3 sarebbe sufficicente). Prendiamo allora come
rettangolo di confronto R = [1, 10] × [0, 3.5], la cui area è
R = 9 ∗ 3.5 = 31.5, ed in esso scegliamo n = 10000 punti a caso

18 / 23
Nella realizzazione concreta presentata abbiamo trovato k = 5792 successi su
n = 10000 prove, con una stima di p = 0.5792, e quindi

10

T = ∫ {2 + sin(cos(2x) log(x))} dx ≈ 0.5792 ∗ 31.5 = 18.2448


1

Possiamo confrontare questo valore con quello fornito dall'integratore


numerico di R che è 18.5091546.

19 / 23
Isola delle Volpi

Scegliamo come bersaglio il rettangolo [−5, 6] × [−5, 6].


Generiamo poi 10000 punti ivi distribuiti uniformemente.
Il contorno dell'isola è una linea poligonale chiusa generata da 360
punti. Il pacchetto sp di R consente di caratterizzare ciascun punto
generato precedentemente come interno o esterno ottenendo i risultati
mostrati in Figura.

Valore corretto 52.2358162

Stima con Montecarlo 52.151

20 / 23
Stimare l'integrale
5
2
−(x−4) /5
∫ (2 + e ) dx
1

con il metodo dei rettangoli e dei trapezi


Programmare con R il metodo di integrazione Monte--Carlo per la stima
di
1/2
2
−x
∫ e dx
0

Usare il metodo di integrazione Monte--Carlo per la stima di


3
1 2
−x /2
∫ e dx
√2π −3

21 / 23
Ogni stima p ≈ k/n di un parametro p con il metodo Monte--Carlo può essere
accompagnata da una stima probabilistica dell'errore. Si può dimostrare che
con circa n = 10 000 prove l'errore nell'approssimazione k/n di p è inferiore
ad 1/100 con una probabilità del 95%.

Se si rileggono gli esempi di integrazione Monte--Carlo di sopra riportati, nei


quali sono stati riportati i risultati di n = 10000 prove,

Esempio π/4 Archimede 2 + sin(cos(2x) log(x)) Isola Volpi

p 0.78540 2/3 0.58759 0.43170

k/n 0.78580 0.6581 0.5792 0.431

Per l'Esempio 2 + sin(cos(2x) log(x)) il valore di p = 0.5876 di sopra


indicato è stato ottenuto indirettamente dividendo per 31.5 il valore
dell'integrale in questione come calcolato dall'integratore numerico di R; è
certamente esatto con almeno due cifre decimali (quelle che ci interessano).

22 / 23
23 / 23

Potrebbero piacerti anche