Recent Changes · Search:

Dispense


Navigation Tips - Dritte


PmWiki

pmwiki.org

edit SideBar

FitNonLineareMinuit

< Errori | Indice | Strategia da seguire ed errori più comuni >


Uso di MINUIT entro matlab


Prima di cominciare digitate help fminuit dalla finestra dei comandi: se non compare l'help, controllate di aver istallato fminuit correttamente.


Per prima cosa occorre costruire la funzione che calcola il {$\chi^2$} della legge scelta. Supponiamo che la legge sia:

{$ y=f(\alpha), $}

dove con {$\alpha$} si intendono gli {$M$} parametri da ottimizzare. Supponiamo inoltre che i dati sperimentali siano {$N$} valori {$y_i$} della grandezza {$y$} ottenuti con incertezze {$\sigma_i$}, in corrispondenza di altrettanti valori della variabile indipendente {$x$}. Allora costruiremo una matrice di dati così composta:

dati=[x;y;sigma];

La matrice ha tre righe di pari dimensioni, contenenti rispettivamente i valori della variabile indipendente, quelli della variabile dipendente e le relative incertezze. I parametri si suppongono ordinati in un vettore a. Conviene allora costruire una funzione, chiamiamola ad esempio legge, che calcoli dapprima la legge e poi la sua funzione {$\chi^2$}. Per chiarezza immaginiamo che la legge sia {$a_1 exp(-x/a_2)$}:

function f=legge(a,dati)

f=a(1)*exp(-dati(1,:)/a(2)); % qui si esprime la legge

f=sum((dati(2,:)-f)/dati(3,:)).^2; % qui si calcola il chi quadro

Si noti che va rispettato l'ordine con cui la function legge riceve a e dati, dato che sarà Minuit a passare i valori dei parametri scelti dal programma, e lo farà proprio con questo ordine.

L'esecuzione della minimizzazione procede con la supposizione (initial guess)di un buon punto di partenza per i parametri (chiamiamo a0 il vettore di questi valori). Conviene di solito confrontare il grafico dei dati e quello della funzione {$f(\alpha_0)$}, aggiustando i valori iniziali a mano finchè le due curve si assomigliano. La chiamata a fminuit è:

[a,e,c]=fminuit('legge',a0,dati)

Dopo aver lanciato questo comando compare l'indicazione che si è all'interno di MINUIT. La sequenza tipica di base per l'ottimizzazione è:

MIGRAD

EXIT


< Errori | Indice | Strategia da seguire ed errori più comuni >

Edit - History - Print - PDF - Recent Changes - Search
Page last modified on November 20, 2006, at 03:32 PM