% Harjutustund 10, ylesanne 5
% andmed kirja ja joonisele
x=[2014:2023];
y=[22.2,19.5,18.0,17.9,25.2,18.6,18.7,29.3,15.0,21.2];
plot(x,y,'o')
kaalud=[3,4,4,4,2,4,4,1,2,3];
% d) lähendame andmeid lineaarsplainiga
ys1=interp1(x,y,x,"linear");
hold on
% plot(x,ys1)
% e) lähendame andmeid kuupsplainiga
xx=[2014:0.1:2023];
ys3=interp1(x,y,xx,"spline");
hold on
% plot(xx,ys3)

% lähendame andmeid vähimruutude mõttes sirgega kaalusid arvestades
% lahendame maatriksvõrrandi AC=B
% otsime sirget kujul Phi(x)=c1*x+c0
A=[sum(kaalud.*x.^2) sum(kaalud.*x)
    sum(kaalud.*x) sum(kaalud)]
B=[sum(kaalud.*y.*x)
   sum(kaalud.*y) ]
C=A^(-1)*B
% Phi(x)=-0.0229*x+65.9722
f=@(x) -0.0229*x+65.9722;
fplot(f,[2010,2028])
% kaalusid ei arvesta ehk kõik kaalud on võrdsed ehk kaalud=1 iga sõlme
% korral
p1=polyfit(x,y,1) % koostame 1 astme polünoomi
% Phi(x)=0.0715*x-123.7933
hold on
g=@(x) 0.0715*x-123.7933;
fplot(g,[2010,2028])
% prognoosime temperatuuri 2024 aastal
[f(2024) g(2024)]

% lähendame andmeid vähimruutude mõttes ruutfunktsiooniga
% kaalusid mitte arvestades ehk kaalud on võrdsed
p2=polyfit(x,y,2) % koostame 2 astme polünoomi
f2=@(x) p2(1)*x^2+p2(2)*x+p2(3);
hold on
fplot(f2,[2010,2028])
% prognoos
f2(2024)

% lähendame ruutfunktsiooniga kaalusid arvestades
A=[sum(kaalud.*x.^4) sum(kaalud.*x.^3) sum(kaalud.*x.^2) 
   sum(kaalud.*x.^3) sum(kaalud.*x.^2) sum(kaalud.*x)
   sum(kaalud.*x.^2) sum(kaalud.*x) sum(kaalud)]
B=[sum(kaalud.*y.*x.^2)
    sum(kaalud.*y.*x)
    sum(kaalud.*y)]
C=A^(-1)*B
f3=@(x) C(1)*x^2+C(2)*x+C(3);
hold on
fplot(f3,[2010,2028])
f3(2024)