%% Ülesanne 7

% antud on 15. juuli temperatuurid Tallinnas 
% lähendame andmeid esimese ja neljanda astme polünoomiga

% andmed 

x = [2014 2015 2016 2017 2018 2019 2020 2021 2023 2024];
y = [22.2 19.5 18.0 17.9 25.2 18.6 18.7 29.3 20.2 25.2];

hold on

scatter(x, y, 'filled', 'DisplayName', 'andmed')

% a) lähendame esimese astme polünoomiga

k1 = polyfit(x, y, 1)

% polünoom graafikule
% polünoomi väärtused leiame argumentide xx korral

hold on

xx = linspace(2010, 2028, 100);
yy1 = polyval(k1, xx);

plot(xx, yy1)

% b) lähendame neljanda astme polünoomiga

k4 = polyfit(x, y, 4);

hold on

xx = linspace(2010, 2028, 100);
yy4 = polyval(k4, xx);

hold on
plot(xx, yy4)

grid on 

axis equal 
axis([2009 2035 10 40])

title('Andmete lähendamine polünoomidega')
legend('andmed','1-astme p(x)','4-astme p(x)')

xlabel('x (aasta)')
ylabel('y (temperatuur)')

% c) prognoosime temperatuuri 15. juulil Tallinnas käesoleval aastal 2025

y_1_2025 = polyval(k1, 2025);
y_4_2025 = polyval(k4, 2025);
 
fprintf('Kui andmeid lähendada 1-astme polünoomiga, siis temperatuur Tallinnas 15.07.2025 on %.1f\n ', y_1_2025)
fprintf('Kui andmeid lähendada 4-astme polünoomiga, siis temperatuur Tallinnas 15.07.2025 on %.1f\n ', y_4_2025)
fprintf('Jooniselt on näha, et kumbki polünoom ei ole sobiv nende andmete lähendamiseks. \n ')
fprintf('Kui andmeid lähendada kõrgema astme polünoomiga, siis tekivad graafikul nö võnkumised. \n ')
fprintf('Seda on näha järgmisel joonisel, kus andmeid lähendati 6-astme polünoomiga. \n ')
fprintf('Seetõttu oleks hea lähendada andmeid mingi madalama astme funktsiooniga. \n ')

figure

k = polyfit(x, y, 6);
yy = polyval(k, xx);

scatter(x, y, 'filled', 'DisplayName', 'andmed')

hold on 

plot(xx, yy)

axis equal 
axis([2009 2035 10 40])

title('Andmete lähendamine 6-astme polünoomiga')

xlabel('x (aasta)')
ylabel('y (temperatuur)')
