clear
% Harjutustund nr. 10, Ülesanne 1
% andmed
x=[2014:2021];
y=[22.2,19.5,18.0,17.9,25.2,18.6,18.7,29.3];
kaalud=[3,4,4,4,2,4,4,1];
% joonis
plot(x,y,'o')
grid on
hold on
% a) lähendame andmeid lineaarfunktsiooniga (sirge) vähimruutude mõttes
% kaalud on võrdsed 
k1=polyfit(x,y,1)
yk1=polyval(k1,x);
plot(x,yk1,'b')
hold on
% kaalusid arvestades
% lahendame võrrandisüsteemi AC=B, C=A^-1*B
% otsitav polünoom on Phi(x)=c_1*x+c_0
% c_1=? ja c_0=?
% esitame maatriksid A ja B
A(1,1)=sum(kaalud.*x.^2);
A(1,2)=sum(kaalud.*x);
A(2,1)=sum(kaalud.*x);
A(2,2)=sum(kaalud);
A
B(1,1)=sum(kaalud.*y.*x);
B(2,1)=sum(kaalud.*y);
B
% leiame C
C=inv(A)*B
% saime lineaarfunktsiooni Phi(x)=0.1168*x-215.7961
% joonis
ylineaarkaalud=polyval(C,x);
plot(x,ylineaarkaalud,'r')
hold on

% lähendame ruutfunktsiooniga vähimruutude mõttes
% kaalud on võrdsed, st kaalud=1.
k2=polyfit(x,y,2)
% Phi(x)=0.0000*10^6*x^2-0.0018*10^6*x+1.7770*10^6
xvork=[2014:0.2:2021];
yk2=polyval(k2,xvork);
plot(xvork,yk2,'g')
hold on
% kaalusid arvestades
uusA(1,1)=sum(kaalud.*x.^4);
uusA(1,2)=sum(kaalud.*x.^3);
uusA(1,3)=sum(kaalud.*x.^2);
uusA(2,1)=sum(kaalud.*x.^3);
uusA(2,2)=sum(kaalud.*x.^2);
uusA(2,3)=sum(kaalud.*x.^1);
uusA(3,1)=sum(kaalud.*x.^2);
uusA(3,2)=sum(kaalud.*x);
uusA(3,3)=sum(kaalud);
uusA
uusB(1,1)=sum(kaalud.*y.*x.^2);
uusB(2,1)=sum(kaalud.*y.*x);
uusB(3,1)=sum(kaalud.*y);
uusB
uusC=inv(uusA)*uusB
% Phi(x)=0.0000*10^6*x^2-0.0014*10^6*x+1.4380*10^6
yruutkaalud=polyval(uusC,xvork);
plot(xvork,yruutkaalud,'k')
hold off
% c) prognoosime temperatuuri Tallinnas, 15. juulil, 2023. aastal
% näiteks kaale arvestades
polyval(C,2023) % lineaarfunktsiooniga
polyval(uusC,2023) % ruutfunktsiooniga