% Tund 10, ülesanne 1
% andmed
x=[2014:1: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];
plot(x,y,'o')
hold on
% lähendame andmeid vähimruutude mõttes lineaarfunktsiooniga
% a) kaalusid mitte arvestades (kaalud võrdsed)
kordajad1=polyfit(x,y,1)
% Saime Phi(x)=c1*x+c0
% Phi(x)=10^3*0.0007*x-10^3*1.2950
yvaartused1=polyval(kordajad1,x)
plot(x,yvaartused1,'b-')
hold on
% milline võiks olla temperatuur 15.07 Tallinnas sel aastal
polyval(kordajad1,2023)
% b) kaalusid arvestades
A(1,1)=sum(kaalud.*x.^2);
A(1,2)=sum(kaalud.*x);
A(2,1)=sum(kaalud.*x);
A(2,2)=sum(kaalud);
B(1,1)=sum(kaalud.*y.*x);
B(2,1)=sum(kaalud.*y);
A
B
% kordajate maatriks C
C=inv(A)*B % c1=0.1168,c0=-215.7961
% Phi(x)=0.1168*x-215.7961
yvaartused1kaalud=polyval(C,x)
plot(x,yvaartused1kaalud,'r-')
hold on
% milline võiks olla temperatuur sel aastal Tallinnas 15. juulil
polyval(C,2023)

% lähendame andmeid ruutfunktsiooniga vähimruutude mõttes
% a) kaalusid mitte arvestades
kordajad2=polyfit(x,y,2) 
% Saime Phi(x)=10^6*0.0000x^2-10^6*0.0018*x+10^6*1.7770
yvaartused2=polyval(kordajad2,x);
plot(x,yvaartused2,'g-')
hold on
% et parabool ei oleks nii sakiline
xx=[2014:0.1:2025];
yvaartused22=polyval(kordajad2,xx);
plot(xx,yvaartused22,'k-')
hold on
% b) 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);
A(3,1)=sum(kaalud.*x.^2);
A(3,2)=sum(kaalud.*x);
A(3,3)=sum(kaalud);
A
B(1,1)=sum(kaalud.*y.*x.^2);
B(2,1)=sum(kaalud.*y.*x);
B(3,1)=sum(kaalud.*y);
B
C=inv(A)*B
% saime Phi(x)=10^6*0.0000x^2-10^6*0.0014x+10^6*1.4380
yvaartused22kaalud=polyval(C,xx);
plot(xx,yvaartused22kaalud,'m-')
hold on
% d) lähendame andmeid lineaarsplainiga
y1splain=interp1(x,y,x,'linear')
plot(x,y1splain,'b-')
hold off