clear
%Lähteandmed
x=1.2:0.1:2;
y=[9.08 10.43 11.9 13.48 15.19 17.03 19.01 21.13 23.39];
kaalud=[1 1 2 5 1 4 2 2 1];

%teeme võrgu
xvork=1.2:1e-3:2;

%Lähendamine
%1) kuupsplain
ysplain=interp1(x,y,xvork,'spline');

%2) vähimruutude mõttes kuupfunktsioon
kordajad=polyfit(x,y,3); %tahame kuupfunktsiooni, sellepärast 3
ykuup=polyval(kordajad,xvork);

%3) vähimruutude mõttes kaalusid arvestades
%sisestame maatriksi A
A(1,1)=sum(kaalud.*x.^6); %korrutamine ja astendamine vektori elementide haaval
A(1,2)=sum(kaalud.*x.^5);
A(1,3)=sum(kaalud.*x.^4);
A(1,4)=sum(kaalud.*x.^3);
A(2,1)=A(1,2);
A(2,2)=A(1,3);
A(2,3)=A(1,4);
A(2,4)=sum(kaalud.*x.^2);
A(3,1)=A(2,2);
A(3,2)=A(2,3);
A(3,3)=A(2,4);
A(3,4)=sum(kaalud.*x);
A(4,1)=A(3,2);
A(4,2)=A(3,3);
A(4,3)=A(3,4);
A(4,4)=sum(kaalud);
A

%sisestame vektori b
b(1)=sum(kaalud.*y.*x.^3); %korrutamine ja astendamine elementida haaval
b(2)=sum(kaalud.*y.*x.^2);
b(3)=sum(kaalud.*y.*x);
b(4)=sum(kaalud.*y);
b

%lahendame süsteemi A*c=b
c=inv(A)*b' %b on reavektor, meil vaja veeruvektorit
%saime kätte kuupfunktsiooni kordajad

ykuup1=polyval(c,xvork); %leiame kuupfunktsiooni väärtused xvork igas punktis

%Joonis
plot(x,y,'b*',xvork,ysplain,xvork,ykuup,xvork,ykuup1)
legend('Algandmed','Kuupsplain','Vähimruutude mõttes kuupfunktsioon','Vähimruutude mõttes kuupfunktsioon kaaludega')

%arvutamine
%1) x=1.12
vastus1=interp1(x,y,1.12,'spline')
vastus11=polyval(kordajad,1.12)
%2) x=1.32
vastus2=interp1(x,y,1.35,'spline')
vastus22=polyval(kordajad,1.35)