Applicazione minimi quadrati, convergenza dei parametri
Salve a tutti!
Mi trovo a dover risolvere un problema ai minimi quadrati di un esperimento con un pendolo.
In particolare misuro il periodo (T) del pendolo al variare della lunghezza (L). In questo modo trovo N (numero di esperimenti) coppie di valori $\tilde{T_i}$, $\tilde{L_i}$ con $i=1,...,N$ (con la $\tilde{}$ indico i valori misurati).
Sapendo che il modello che lega le due variabili risulta del tipo:
$T_{mod}=aL^b$
ho applicato i minimi quadrati nel seguente modo:
1) Sviluppo in serie di Taylor il modello, considerando due valori di primo tentativo dei parametri ($a'$ e $b'$) e lo eguaglio a $\tilde{T_i}(\tilde{L_i})$:
\begin{equation}
\tilde{T_i}(\tilde{L_i})=T_{mod}(\tilde{L_i}, a', b')+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db
\end{equation}
\begin{equation}
\tilde{T_i}(\tilde{L_i})-T_{mod}(\tilde{L_i}, a', b')=\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db
\label{e1}
\end{equation}
dove:
$\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da=(L_i)^b(\tilde{L_i}, b')da=\tilde{L_i}^{b'}da$
$\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db=ab(L_i)^{b-1}(\tilde{L_i}, a', b')db=a'b'\tilde{L_i}^{(b'-1)}db$
2) L'equazione (\ref{e1}) può essere espressa in forma matriciale come $Y=AX$, dove:
\[
Y=
\begin{bmatrix}
\tilde{T_1}(\tilde{L_1})-T_{mod}(\tilde{L_1}, a', b')\\
\tilde{T_2}(\tilde{L_2})-T_{mod}(\tilde{L_2}, a', b') \\
\vdots\\
\tilde{T_N}(\tilde{L_N})-T_{mod}(\tilde{L_N}, a', b') \\
\end{bmatrix}
\]
\[
A=
\begin{bmatrix}
\tilde{L_1}^{b'}&a'b'\tilde{L_1}^{(b'-1)}\\
\tilde{L_2}^{b'}&a'b'\tilde{L_2}^{(b'-1)}\\
\vdots&\vdots\\
\tilde{L_N}^{b'}&a'b'\tilde{L_N}^{(b'-1)}\\
\end{bmatrix}
\]
\[
X=
\begin{bmatrix}
da\\
db
\end{bmatrix}
\]
3) Si può quindi determinare il vettore degli incrementi $X$ come:
\begin{equation}
X=(A^TA)^{-1}A^TY
\end{equation}
andando a determinare $da$ e $db$ che sono delle "correzioni" da sommare ai valori di primo tentativo ($a'$, $b'$). In questo modo si trovano dei valori di secondo tentativo:
$a''=a'+da$ e $b''=b'+db$
che permettono l'iterazione (si torna al punto 1) con i valori di secondo tentativo, poi di terzo e così via), finché si giungerà a dei valori di $X$ ($da$, $db$) "sufficientemente piccoli" da ritenersi accettabili.
Ho implementato in MATLAB il procedimento ma non giungo ad una convergenza di $da$ e $db$ e non capisco il perché. Ho sbagliato qualcosa nell'applicazione dei minimi quadrati? C'è qualche problema matematico che mi sfugge e che non mi permette la convergenza? Devo ricontrollare il codice MATLAB (
)?
Grazie a chi vorrà rispondermi!!
Mi trovo a dover risolvere un problema ai minimi quadrati di un esperimento con un pendolo.
In particolare misuro il periodo (T) del pendolo al variare della lunghezza (L). In questo modo trovo N (numero di esperimenti) coppie di valori $\tilde{T_i}$, $\tilde{L_i}$ con $i=1,...,N$ (con la $\tilde{}$ indico i valori misurati).
Sapendo che il modello che lega le due variabili risulta del tipo:
$T_{mod}=aL^b$
ho applicato i minimi quadrati nel seguente modo:
1) Sviluppo in serie di Taylor il modello, considerando due valori di primo tentativo dei parametri ($a'$ e $b'$) e lo eguaglio a $\tilde{T_i}(\tilde{L_i})$:
\begin{equation}
\tilde{T_i}(\tilde{L_i})=T_{mod}(\tilde{L_i}, a', b')+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db
\end{equation}
\begin{equation}
\tilde{T_i}(\tilde{L_i})-T_{mod}(\tilde{L_i}, a', b')=\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da+\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db
\label{e1}
\end{equation}
dove:
$\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial a}da=(L_i)^b(\tilde{L_i}, b')da=\tilde{L_i}^{b'}da$
$\frac{\partial T_{mod}(\tilde{L_i}, a', b')}{\partial b}db=ab(L_i)^{b-1}(\tilde{L_i}, a', b')db=a'b'\tilde{L_i}^{(b'-1)}db$
2) L'equazione (\ref{e1}) può essere espressa in forma matriciale come $Y=AX$, dove:
\[
Y=
\begin{bmatrix}
\tilde{T_1}(\tilde{L_1})-T_{mod}(\tilde{L_1}, a', b')\\
\tilde{T_2}(\tilde{L_2})-T_{mod}(\tilde{L_2}, a', b') \\
\vdots\\
\tilde{T_N}(\tilde{L_N})-T_{mod}(\tilde{L_N}, a', b') \\
\end{bmatrix}
\]
\[
A=
\begin{bmatrix}
\tilde{L_1}^{b'}&a'b'\tilde{L_1}^{(b'-1)}\\
\tilde{L_2}^{b'}&a'b'\tilde{L_2}^{(b'-1)}\\
\vdots&\vdots\\
\tilde{L_N}^{b'}&a'b'\tilde{L_N}^{(b'-1)}\\
\end{bmatrix}
\]
\[
X=
\begin{bmatrix}
da\\
db
\end{bmatrix}
\]
3) Si può quindi determinare il vettore degli incrementi $X$ come:
\begin{equation}
X=(A^TA)^{-1}A^TY
\end{equation}
andando a determinare $da$ e $db$ che sono delle "correzioni" da sommare ai valori di primo tentativo ($a'$, $b'$). In questo modo si trovano dei valori di secondo tentativo:
$a''=a'+da$ e $b''=b'+db$
che permettono l'iterazione (si torna al punto 1) con i valori di secondo tentativo, poi di terzo e così via), finché si giungerà a dei valori di $X$ ($da$, $db$) "sufficientemente piccoli" da ritenersi accettabili.
Ho implementato in MATLAB il procedimento ma non giungo ad una convergenza di $da$ e $db$ e non capisco il perché. Ho sbagliato qualcosa nell'applicazione dei minimi quadrati? C'è qualche problema matematico che mi sfugge e che non mi permette la convergenza? Devo ricontrollare il codice MATLAB (

Grazie a chi vorrà rispondermi!!
Risposte
"GianDa95":
Sapendo che il modello che lega le due variabili risulta del tipo:
$T_{mod}=aL^b$
E' una funzione linearizzabile. Applica il logaritmo naturale ad entrambi i membri e trova la retta di regressione di $ln(T_{mod})=bln(L)+ln(a)$
Ciao!
Questa era la soluzione che avevo proposto anch'io, mi semplificavo la vita e non mi serviva l'iterazione, ma mi è stato richiesto esplicitamente di implementare il codice con lo sviluppo di Taylor.
Grazie lo stesso per la risposta!
"Bokonon":
E' una funzione linearizzabile. Applica il logaritmo naturale ad entrambi i membri e trova la retta di regressione di $ ln(T_{mod})=bln(L)+ln(a) $
Questa era la soluzione che avevo proposto anch'io, mi semplificavo la vita e non mi serviva l'iterazione, ma mi è stato richiesto esplicitamente di implementare il codice con lo sviluppo di Taylor.
Grazie lo stesso per la risposta!
E allora dillo!
