I metodi Montecarlo sono citati spesso come ‘metodi di integrazione’ anche se la precisione che si può ottenere da essi è in effetti limitata. Nel post sopra si parla in generale di ‘n interazioni’ senza specificare quanto ‘grande’ deve essere n. A titolo puramente sperimentale ho usato un metodo standard di generazione di numeri casuali applicandolo ai seguenti tre integrali…
a) $int_0^1 2x*dx$ (1)
E’ ovvio che il valore ‘esatto’ dell’integrale vale $1$. I valori approssimati dell’integrale ottenuti mediando $n$ campioni casuali della funzione $f(x)=2x$ sono i seguenti…
.968442 con $n=10$
1.022323 con $n=100$
.9699346 con $n=1000$
1.004076 con $n=10000$
Per ottenere una precisione ‘appena accettabile’ occorre mediare su 10000 punti…
b) $int_0^1 ln x dx$ (2)
Il valore ‘esatto' dell’integrale è $-1$. I valori ottenuti mediando $n$ campioni casuali della funzione $f(x)= ln x$ sono i seguenti
-.851585 con $n=10$
-.943923 con $n=100$
-1.053027 con $n=1000$
-.996054 con $n=10000$
In questo caso l’errore, a parità di punti, è circa un ordine di grandezza superiore rispetto al caso precente…
c) $int_0^1 1/x*sin(1/x)*dx$ (3)
La funzione sotto il segno di integrale stavolta è la celebre ‘funzione di superemicrania’, altamente oscillante è divergente nell’intorno dello $0$. Anche se può sembrare strano, si dimostra che è integrabile operando la sostituzione $t=1/x$…
$int_0^1 1/x*sin(1/x)*dx= int_1^(+oo) (sin t)/t * dt= pi/2 – Si(1)$ (4)
… in cui $Si(x)$ è la funzione ‘seno integrale’ il cui sviluppo in serie è…
$Si(x)= sum_(n=0)^(+oo) (-1)^n*x^(2n+1)/((2n+1)*(2n+1)!)$ (5)
Usando dieci termini della (5) si trova che è…
$int_0^1 1/x*sin(1/x)*dx = .762717374443$ (6)
Ecco invece i valori ottenuti mediando $n$ campioni casuali della funzione $f(x)= 1/x*sin (1/x)$ [brrrrrr!!!…]
-.3135511 con $n=10$
1.33157 con $n=100$
-.145482 con $n=1000$
9.07115 con $n=10000$
Meglio non fare commenti…
cordiali saluti
lupo grigio
An old wolf may lose his tee4th, but never his nature