Search
\[ \def\_#1{\mathbf{#1}} \def\R{\mathbb{R}} \]
Pracujete na meteorologické stanici ve Svatoňovicích a od Vašeho kolegy meteorologa jste získali měření průměrné denní teploty od roku 2005 do roku 2007. Váš kolega neprováděl měření každý den, ale jen jednou za měsíc. Konkrétně měřil teplotu pokaždé 15. dne v měsíci. Naměřené teploty jsou vyneseny v grafu a vybrané hodnoty uvedeny v tabulce. Modré body v grafu značí průměrné denní teploty měřené na stanici ve Svatoňovicích mezi roky 2005 až 2007. Měření prováděno vždy 15. dne v měsíci. Den $0$ odpovídá datu 1.1.2005. Červená křivka je odhadnuta z naměřených hodnot metodou nejmenších čtverců. Data si stáhněte ze souboru teplota.txt.
Cílem je odhadnout, jaká byla teplota ve dnech, pro něž Vám kolega měření nedodal. Tuto úlohu vyřešíte tak, že proložíte (interpolujete) množinu naměřených teplot funkcí, kterou pak lze použít k dopočítaní hodnot v bodech, kde měření nejsou k dispozici.
Z grafu je vidět, že závislost teploty na čase není ani přibližně lineární, jako tomu bylo v úloze o průměrných mzdách. Naopak, závislost je silně nelineární a teplota má tendenci se měnit cyklicky s periodou jednoho roku. Jako rozumná volba pro regresní funkci se proto jeví např. \[ \hat{T}(t) = x_1 + x_2 t + x_3 \sin\left(\omega t \right ) + x_4 \cos\left (\omega t\right ) \] kde $\hat{T}(t)$ je odhadovaná teplota v čase $t$, $\omega=2\pi/365$ je úhlová frekvence odpovídající periodě jednoho roku a $x_1,\ldots,x_4 \in\R$ jsou neznámé parametry. Budeme opět hledat takové parametry, při nichž bude funkce $\hat{T}(t)$ co nejvíce odpovídat naměřeným hodnotám $\{(t_1,T_1),\ldots,(t_m,T_m)\}$. Parametry chceme nalézt metodou nejmenších čtverců, tj. chceme minimalizovat funkci \[ \sum_{i=1}^m ( \hat{T}(t_i) - T_i )^2 \]
Úkol: Implementujte funkci x = fit_temps(t,T,omega) kde t a T jsou vektory délky $m$ s časy a teplotami, omega je skalár, a x je vektor délky 4 s parametry $(x_1,x_2,x_3,x_4)$. Správnost funkce nejprve ověřte na výše uvedených datech.
x = fit_temps(t,T,omega)
t
T
omega
x