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')
hold on
grid on
% a) lähendame andmeid lineaarfunktsiooniga vähimruutude mõttes, kui kaalud
% on võrdsed
k1=polyfit(x,y,1)
yk1=polyval(k1,x)
plot(x,yk1,'r')
hold on
% arvestades kaalusid
% lahendame võrrandisüsteemi maatrikskujul, AC=B, C=A^-1*B
A(1,1)=sum(kaalud.*x.^2);
A(1,2)=sum(kaalud.*x);
A(2,1)=A(1,2);
A(2,2)=sum(kaalud);
A
% esitame vabaliikmete maatriksi B
B(1)=sum(kaalud.*y.*x);
B(2)=sum(kaalud.*y);
B % see on reamaatriks
% läheb vaja veerumaatriksit, st transponeerime, B'
% leiame maatriksi C
C=inv(A)*B'
% saime polünoomi Phi(x)=0.1168x-215.7961
ylineaar=polyval(C,x)
plot(x,ylineaar,'b')
hold on

% b) lähendame ruutfunktsiooniga vähimruutude mõttes
% kaalusid mitte arvestades ehk kaalud on võrdsed
k2=polyfit(x,y,2)
xvork=[2014:0.2:2021];
yk2=polyval(k2,xvork);
plot(xvork,yk2,'g')
hold on
% kaalusid arvestades
A(1,1)=sum(kaalud.*x.^4);
A(1,2)=sum(kaalud.*x.^3);
A(1,3)=sum(kaalud.*x.^2);
A(2,1)=sum(kaalud.*x.^3);
A(2,2)=sum(kaalud.*x.^2);
A(2,3)=sum(kaalud.*x.^1);
A(3,1)=sum(kaalud.*x.^2);
A(3,2)=sum(kaalud.*x.^1);
A(3,3)=sum(kaalud.*x.^0);
A
B(1)=sum(kaalud.*y.*x.^2);
B(2)=sum(kaalud.*y.*x.^1);
B(3)=sum(kaalud.*y.*x.^0);
B'
C=inv(A)*B' % ruutpolünoomi kordajad
% Phi(x)=0.0000*x^2-0.0014*x+1.4380
yruutpolynoom=polyval(C,xvork);
plot(xvork,yruutpolynoom,'k')
hold off
% c) prognoosime temperatuuri 2023. aastal, 15. juunil, Tallinnas
% lineaarfunktsioon, kaale mitte arvestades
polyval(k1,2023)
% ruutfunktsioon, kaale arvestades
polyval(C,2023)