Fitting con doppio esponenziale

elgiovo
Voglio fittare delle curve che cambiano su base esponenziale con una relazione del tipo

$y(x)=A e^{ax}+ B e^{b x}$

Qui $x$ è la variabile indipendente, A e B sono i parametri di fitting, a e b sono numeri (noti) positivi.

Primo problema: se fitto i dati in lineare, ovvero senza considerarne il logaritmo, ottengo un buon fitting negli ultimi punti ma pessimo nei primi, visto che gli ultimi punti sono enormi rispetto ai primi.

Secondo problema: se avessi un solo esponenziale basterebbe fittare il logaritmo dei dati con una retta, ma avendone due devo fittare il log dei dati con una cosa del tipo \(\displaystyle \log\left(Ae^{ax}+Be^{bx}\right) \), e provando con Matlab e Mathematica ottengo risultati sballati (si vede che è una funzione un pò cattivella da trattare con algoritmi ai minimi quadrati tipo Levenberg - Marquardt).

Suggerimenti?

Risposte
apatriarca
Quello che proverei a fare è definire delle nuove variabili \(z = e^{a\,x}\) e \(w = e^{b\,x}\). A questo punto calcoli questi valori per ogni \(x\) nei dati e poi utilizzi la regressione lineare per stimarti i parametri di \(y = A\,z + B\,w\). Fammi sapere se risolve il tuo problema.

elgiovo
Ciao, ho provato col tuo ottimo consiglio (ho usato LinearModelFit[] di Mathematica) ma la situazione è cambiata solo di poco e non è soddisfacente.
Tra l'altro (un pò scioccamente) mi sono dimenticato di dire che \(\displaystyle b=\frac{a}{2} \). Perciò ho provato anche con il cambio di variabile \(\displaystyle u = e^{ax} \), fittando dunque con \(\displaystyle y=Au+B\sqrt{u} \) ma niente. Continuo a ottenere curve che ricalcano gli ultimi punti e ignorano i primi.

PS: il fitting ora l'ho fatto a mano (cambiando a occhio i parametri), ed è soddisfacente, ma resto curioso di vedere se si può fare qualcosa in modo automatico.

apatriarca
Sei certo di essere interessato alla curva che minimizza la distanza secondo i minimi quadrati? Può a volte essere utile ricorrere a modelli diversi. Per esempio si potrebbe voler minimizzare l'errore relativo invece che quello assoluto. Non ne so molto di questi metodi, mi occupo di altro, ma qualche tempo fa avevo trovato ad esempio questo articolo che puoi forse provare ad implementare per vedere se fornisce un qualche risultato migliore.

elgiovo
No infatti, non sono interessato ai minimi quadrati, mi interessa solo un fitting "decente", che più o meno passi sopra ai dati (come quello che ho fatto a mano). E' che sono abituato a fittare le curve in modo automatico con Mathematica usando modelli personalizzati ma non avevo mai fittato dati che cambiano di molti ordini (e a dirla tutta ho scoperto solo da poco cos'è l'algoritmo di Levenberg e Marquardt). Comunque ti ringrazio dell'aiuto, darò un'occhiata all'articolo.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.