Si è visto come applicare il metodo Monte Carlo per determinare l'area del cerchio.
Per determinare l'area sottesa dal grafico di una funzione \(f:[a,b]\to \mathbb R\) non negativa e l'asse delle ascisse si può procedere in modo analogo:
Qualche altro esempio interessante:
Math.sqrt(1.x*x) su \([-1,1]\) essendo \(\displaystyle\int_{-1}^1\sqrt{1-x^2}=\frac{\pi}{2};\)1/x tra 1 e \(b,\) ricordando che \(\displaystyle \int_1^b\frac{1}{x} dx = \log b;\)Math.exp(-x*x/2)/Math.sqrt(2*Math.PI) tra -1 e 1, cioè l'integrale della densità della distribuzione normale standardizzata \(\displaystyle\int_{-1}^1 \frac{e^{-\frac{x^2}{2}}}{\sqrt{2\pi}}=68.3\%.\)Si osservi che \(\frac{\displaystyle\int_a^bf(x) dx}{(b-a)} \approx \min_f+(\max_f-\min_f) \frac{M}{N} \), quindi il valore medio della funzione è \[\frac{\text{n° punti sotto la curva}\cdot\max_f+ \text{n°punti sopra la curva}\cdot\min_f}{\text{n° totale punti}},\] media pesata di \(\max_f\) e \(\min_f\) con pesi dati dal numero di punti estratti casualmente in \([a,b]\times[\min_f,\max_f]\) che cadono sotto e che cadono sopra la curva.
Naturalmente si può applicare il metodo al calcolo di integrali di funzioni di più variabili reali.
Possiamo anche applicare il metodo di Monte Carlo al calcolo del valor medio \(\overline f\) di \(f\) per poi determinare \(\displaystyle \int_a^bf(x) dx = \overline f (b-a).\) Il codice Javascript seguente, che può essere eseguito e al quale si possono apportare modifiche, è una descrizione del procedimento. Mentre la function int fornisce solo la stima dell'integrale, la function int_err fornisce anche l'errore dato dallo scarto.
Si osservi anche che \(\displaystyle \frac{1}{n} \sum_i f(x_i)(b-a)= \frac{1}{n} \sum_i \frac{f(x_i)}{\frac{1}{b-a}}\) e \(p(x)=\frac{1}{b-a}\) è la densità di probabilità della distribuzione uniforme su \([a,b].\) Ciò suggerisce l'idea che si possano considerare altre più opportune distribuzioni per la scelta casuale dei campioni \(x_i,\) ad esempio in modo che siano più frequenti là dove la funzione da integrare cambia più rapidamente, meno frequenti dove è stazionaria, determinando quindi \(\displaystyle \overline f=\frac{1}{n} \sum_i \frac{f(x_i)}{p(x_i)}\).
Il metodo Monte Carlo adattivo migliora il Monte Carlo classico, che calcola la media dei valori della funzione estraendo campioni uniformi in \([a,b],\) concentrando più campioni dove la funzione varia maggiormente:
Il codice JavaScript seguente può essere eseguito e modificato per sperimentare il metodo.
Si tratta di un problema che al crescere della dimensione conduce al calcolo di integrali di difficile risoluzione esatta.
Dati due punti indipendenti e uniformi \(P,Q \in [0,1]^d,\) la distanza euclidea è
\[
d = \sqrt{\sum_{k=1}^d (x_{P,k} - x_{Q,k})^2}.
\]
Ad esempio se \(d=1\) la distanza media è \(\mathbb{E}[d] = \int_0^1\int_0^1|x_P-x_Q|dx_Pdx_Q =\frac{1}{3}.\)
Se \(d=2\) allora \[\mathbb{E}[d] = \int_0^1\int_0^1\int_0^1\int_0^1\sqrt{(x_{P,1}-x_{Q_1})^2+(x_{P,2}-x_{Q_2})^2}dx_{P,1}dx_{Q,1}dx_{P,2}dx_{Q,2} =\dots=\]\[=\frac{2+\sqrt2+5\log(1+\sqrt2)}{15}≈ 0.521405.\]
Se \(d=3\) il calcolo esatto è ancora più complicato: \(\mathbb{E}[d] = \frac{4 + 17\sqrt2 - 6\sqrt3
+ 21\log(1 + \sqrt2) + 42\log(2 + \sqrt3)- 7\pi}{105} ≈0.661707182.\)
È concettualmente molto più semplice stimare \(\mathbb{E}[d]\) con il metodo Monte Carlo.