from sympy import *
La somma degli scarti di dati $(x_i,y_i)$ (pesati con l'errore $\sigma_i$ sugli $y_i$) rispetto una linea $y = b \cdot x + a$ è: $$ \chi^2 = \sum_i \frac{(y_i - b \cdot x_i - a)^2}{\sigma_i^2} $$
Per trovare il minimo di questa espressione al variare di $b$ e $a$, cerchiamo gli zeri contemporanei delle derivate di $\chi^2$ rispetto ad $a$ e rispetto a $b$, generalizzando in modo ovvio la formula per gli estremi in una variabile.</br> È sufficiente limitarsi al caso di tre sole misure e poi generalizzare.
Domanda: Perchè tre misure e non una oppure due?
x1,x2,x3,y1,y2,y3,a,b,sq1,sq2,sq3 = symbols('x1 x2 x3 y1 y2 y3 a b sq1 sq2 sq3')
chi2 = (y1 - b*x1 - a)**2/sq1 + (y2 - b*x2 - a)**2/sq2 + (y3 - b*x3 - a)**2/sq3
Derivata rispetto ad a:
chi2_prime_a = diff(chi2,a)
chi2_prime_a
Espandiamo il risultato per poi estrarre i coefficienti di a e b:
chi2_prime_a_expand = expand(chi2_prime_a)
chi2_prime_a_expand
collect(chi2_prime_a_expand,(a,b))
Derivata rispetto a b:
chi2_prime_b = diff(chi2,b)
chi2_prime_b
Espandiamo e estraiamo i coefficienti di a e b:
chi2_prime_b_expand = expand(chi2_prime_b)
chi2_prime_b_expand
collect(chi2_prime_b_expand,(a,b))
A questo punto è facile scrivere l'equazione matriciale che determina $a$ e $b$:
$$ \begin{bmatrix} \sum \frac{1}{\sigma_i^2} & \sum \frac{x_i}{\sigma_i^2} \\ \sum \frac{x_i}{\sigma_i^2} & \sum \frac{x^2_i}{\sigma_i^2} \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} = \begin{bmatrix} \sum \frac{y_i}{\sigma_i^2} \\ \sum \frac{x_i y_i}{\sigma_i^2} \end{bmatrix} $$$$ \begin{bmatrix} Sinv & Sx \\ Sx & Sxsq \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} = \begin{bmatrix} Sy \\ Sxy \end{bmatrix} $$a, b, Sinv, Sx, Sxsq, Sy, Sxy = symbols('a b Sinv Sx Sxsq Sy Sxy')
eq1 = Sinv*a + Sx*b - Sy
eq2 = Sx*a + Sxsq*b -Sxy
solve((eq1,eq2),a,b)
Nel caso particolare in cui tutti i $\sigma_i$ sono uguali, definendo $\bar{u} = \sum u_i /N$ ($u = 1,x,y,xy$)
l'equazione che determina $a, b$ diventa:
con soluzione $a = (\overline{x^2}\cdot \overline{y}-\overline{x}\cdot\overline{xy})/\Delta$,
$b = (\overline{xy}-\overline{x}\cdot\overline{y})/\Delta$
È facile mostrare che il punto $(\overline{x},\overline{y})$ appartiene alla retta di fit cioè che
$ \overline{y} = b \cdot \overline{x} +a $.