Pagina 1 di 1

Simulazione Montecarlo\

MessaggioInviato: 19/10/2006, 11:33
da UnKnown089
non mi è stato molto chiaro il metodo montecarlo :abbinare eventi che hanno una probabilità di accadimento di tipo uniforme ad eventi la cui probabilità di accadimento non è uniforme.......
qualcuno me lo potrebbe spiegare, dal principio, oppure sapte dove potre trovare qualche dispensa fatta bene?
grazie....

MessaggioInviato: 19/10/2006, 14:21
da lupo grigio
Riporto da Francis Sheid, Numerical Analysis, McGrow-Hill New York…

I metodi Montecarlo risolvono certi tipi di problemi con l’uso di numeri casuali. Anche se teoricamente i metodi convergono in definitiva ai risultati esatti, in pratica da essi è possibile ottenere solo una precisione modesta. Ciò è dovuto alla loro intrinseca velocità di convergenza, assai bassa. Talvolta i metodi Montecarlo sono usati per ottenere approssimazioni iniziali ‘buone’ per algoritmi di raffinamento veloci. Esamineremo due tipi di applicazione…

Simulazione – La simulazione consiste nel fornire un’approssimazione aritmetica dei fenomeni ‘reali’. In senso generale è questa l’idea della matematica applicata. Ad esempio un’equazione differenziale può simulare il volo di un missile. Qui tuttavia il termine ‘simulazione’ si riferisce all’imitazione di processi casuali con i metodi Montecarlo. L’esempio classico è la simulazione del moto di un neutrone nella parete di un reattore, nella quale si imita il moto a zig-zag con una passeggiata casuale aritmetica…

Campionamento – Il campionamento consiste nella deduzione delle proprietà di un insieme ‘grande’ di elementi attraverso lo studio di un sottoinsieme ‘piccolo’. Ad esempio il valore medio di una $f(x)$ in un certo intervallo dalla media di un numero finito di ‘punti casuali’ compresi nell’intervallo. Dal momento che il valor medio di una funzione è un integrale, ciò suggerisce l’impiego dei metodi Montecarlo come tecnica di integrazione numerica. Altro esempio è la determinazione del baricentro di un insieme di N punti utilizzando poche centinaia o migliaia di punti come campione…


Spesso nella pratica mi sono trovato nella necessità di utilizzare la ‘simulazione’ come vero e proprio strumento di progetto. Personalmente ho fatto ricorso ad essa tutte le volte che la soluzione ‘matematica’ non era possibile. Altri colleghi invece sono soliti usarla sempre, cosa che secondo la mia opinione è errata poiché spesso non si ha una stima esatta della ‘affidabilità’ che tale approccio consente…

cordiali saluti

lupo grigio

Immagine

An old wolf may lose his teeth, but never his nature

MessaggioInviato: 19/10/2006, 15:06
da GIOVANNI IL CHIMICO
Giusto Lupo Grigio! una cosa che non sempre si dice quando si parla di metodi numerici è che non basta un buon codice numerico, bisogna anche avere una certa raccolta di dati sperimentali da confrontare con i risultati del codice numerico, prima di poterlo usare per simulare qualcosa di completamente nuovo.
Ad esempio nell'ambito della CFD prima di affrontare un caso complesso, ad esempio il moto del fluido di raffreddamento all'interno del mantello di uno scambiatore a fascio tubiero, fare il tuning del modello di turbolenza usando un modello più semplice, come ad esempio il flusso attraverso una semplice terna di tubi di scambio termico, in modo da confrontare i dati del modello con quelli sperimentali che si posso raccogliere su un prototipo di laboratorio.
In passato ci sono stati casi clamorosi di fallimento di progetti anche ambizioni basati esclusivamente sulla CFD analysis.

MessaggioInviato: 19/10/2006, 18:00
da UnKnown089
potreste darmi un URL dove vi sia una dispensa con qualche esempio di applicazione di una simulazione affrontata con questo metodo...
grazie...

MessaggioInviato: 19/10/2006, 18:18
da Maxos
Dunque.

Per un fisico teorico il metedo montecarlo è uno strumento sperimentale quanto un altro, non è mai subordinato.

Come per uno strumento ordinario bisogna conoscere preliminarmente una stima dell'incertezza sulla misura, così succede per i metodi di simulazione numerica.

MessaggioInviato: 21/10/2006, 11:35
da UnKnown089
potreste darmi un URL dove vi sia una dispensa con qualche esempio di applicazione di una simulazione affrontata con questo metodo...
grazie...

MessaggioInviato: 22/10/2006, 10:14
da Andrea2976
Se X e una v.a. uniforme (0,1) e sia g(X): (0,1) -> R
allora E(g(x))=\int g(X), ma per la legge dei grandi numeri \sum_i=1^n g(X_i)/n -> E(g(x)) (X_i sono ovviamente i.i.d. Uniformi(0,1), in questo caso).
Un semplice metodo per calcolare gli integrali.
Infine basta fare n simulazioni casuali in (0,1) per avere una buona approssimazione dell'integrale.

P.S: Si generalizza facilmente.

MessaggioInviato: 23/10/2006, 14:16
da lupo grigio
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… :twisted:

cordiali saluti

lupo grigio

Immagine

An old wolf may lose his tee4th, but never his nature

MessaggioInviato: 25/10/2006, 10:11
da Andrea2976
Il metodo Montecarlo, come ogni altra approssimazione numerica ha le sue limitazioni.
Il numero di iterazioni dipende da quale approssimazione si voglia ottenere dato il tipo di convergenza (per convergenza in probabilità si può usare la disuguaglianza di Chebichev oppure dedurre n dal quantile assegnato per un intervallo di confidenza...anche se la convergenza che si ottiene in molti casi è quella forte (quella puntuale in Analisi)). Purtroppo dalla teoria alla pratica il problema si evidenzia con la generazione di numeri casuali (che poi casuali non sono...si tratta sempre di algortimi basati su congruenze), questa limitazione non è da poco quando si considerano funzioni come di cui sopra (in particolare l'ultima).
Provate a generare un migliaio di numeri casuali in (0,1) con VBA e vedrete (basta fare l'istogramma) che la deviazione standard non si accorda molto con quella teorica. Il metodo rimane...un po' meno il suo utilizzo.