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 2 0.5 1 2 2 4 0.1 5];

%xvork
xvork=1.2:1e-3:2;
%lähendamine
%1)kuupsplainiga
ysplain=interp1(x,y,xvork,'spline');

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

%3) erinevate kaaludega kuupfunktsioon
%teeme maatriksi A
A(1,1)=sum(kaalud.*x.^6);
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(1,3);
A(3,2)=A(1,4);
A(3,3)=A(2,4);
A(3,4)=sum(kaalud.*x);
A(4,1)=A(1,4);
A(4,2)=A(2,4);
A(4,3)=A(3,4);
A(4,4)=sum(kaalud);
A
%vektor b
b(1)=sum(kaalud.*x.^3.*y);
b(2)=sum(kaalud.*x.^2.*y);
b(3)=sum(kaalud.*x.*y);
b(4)=sum(kaalud.*y);
%lahendame süsteemi Ac=b'
c=inv(A)*b'
ykuup1=polyval(c',xvork);
%joonis
plot(x,y,'r*',xvork,ysplain,xvork,ykuup,xvork,ykuup1)
xlabel('x')
ylabel('y')
legend('lähteandmed','kuupsplain','vähimruutude kuupfunktsioon','vähimruutude kuupfunktsioon kaaludega')

%arvutamine
%1) Kui x=1,12, siis
vastus1=interp1(x,y,1.12,'spline')
vastus2=polyval(kordajad,1.12)
vastus3=polyval(c',1.12)

%2) Kui x=1,35, siis
vastus4=interp1(x,y,1.35,'spline')
vastus5=polyval(kordajad,1.35)
vastus6=polyval(c',1.35)