% 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];
kaalud=[3,4,4,4,2,4,4,1,2,3];
plot(x,y,'o')
% a) l2hendame andmeid lineaarfunktsiooniga v2himruutude mottes kaalusid
% mitte arvestades ehk iga solm on sama kaaluga
p1=polyfit(x,y,1) % sirge ehk polynoomi aste on 1
% saime c1=0.0715 ja c0=-123.7933
% Phi(x)=0.0715x-123.7933
yp1=polyval(p1,x);
hold on
plot(x,yp1)
% b) l2hendame andmeid lineaarfunktsiooniga v2himruutude mottes 
% kaalusid arvestades
% lahendame maatriksvorrandi AC=B, C=A^(-1)B
A=[sum(kaalud.*x.^2) sum(kaalud.*x)
    sum(kaalud.*x) sum(kaalud)]  % komponentide kaupa tehted, andmed vktorina
B=[sum(kaalud.*y.*x)
   sum(kaalud.*y) ]
C=A^(-1)*B
% c1=-0.0229, c0=65.9722
phi=@(x) C(1,1)*x+C(2,1)
hold on
fplot(phi,[2010,2025])
% prognoos, x=2024
[polyval(p1,2024) phi(2024)]

% lähendame andmeid vähimruutude mõttes ruutfunktsiooniga
% kaalusid mitte arvestades 
% ehk kõikide sõlmede korral, kaalud on ühesugused
% Phi(x)=c2*x^2+c1*x+c0,  c2,c1,c0=?
p2=polyfit(x,y,2)
yp2=polyval(p2,x);
hold on 
plot(x,yp2,'r')

% lähendame andmeid vähimruutude mõttes 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)]
% lahendame AC=B
C=A^(-1)*B
f=@(x) C(1)*x^2+C(2)*x+C(3);
hold on
fplot(f,[2010,2026])

% d) lähendame andmeid lineaarsplainiga S^(1,0)(x)
ys1=interp1(x,y,x,'linear'); % S^(1,0)(x)
hold on
plot(x,ys1)

% e) kuupsplainiga S^(3,2)(x)
xx=[2014:0.1:2023];
ys3=interp1(x,y,xx,'spline'); % S^(3,2)(xx)
hold on
plot(xx,ys3)