%algandmed
x=[1 4 8 12 14 17 20 25 31 40];
y=[8 15 21 25 29 33 34 40 45 60];
kaalud=[1 1 2 2 3 1 4 2 1 1];
a=5; %eesnime tähtede arv
b=8; %perekonnanime tähtede arv

%andmete muutmine
for i=1:10
    x(i)=x(i)-(-1)^i*0.01*a;
    y(i)=y(i)+(-1)^i*0.1*b;
end

%võrgu otspunktid
x(1)
x(10)
vork=1.05:1e-3:39.95;

%1) lähendamine splainiga
ysplain=interp1(x,y,vork,'spline');

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

%3) lähendamine kaalusid arvestades
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)=sum(kaalud.*x.^5);
A(2,2)=sum(kaalud.*x.^4);
A(2,3)=sum(kaalud.*x.^3);
A(2,4)=sum(kaalud.*x.^2);
A(3,1)=sum(kaalud.*x.^4);
A(3,2)=sum(kaalud.*x.^3);
A(3,3)=sum(kaalud.*x.^2);
A(3,4)=sum(kaalud.*x);
A(4,1)=sum(kaalud.*x.^3);
A(4,2)=sum(kaalud.*x.^2);
A(4,3)=sum(kaalud.*x);
A(4,4)=sum(kaalud);
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);
c=inv(A)*B'; %kordajate vektor - veeruvektor!
ykuupkaalud=polyval(c',vork);

%joonis
plot(x,y,'r*',vork,ysplain,vork,ykuup,vork,ykuupkaalud)
legend('algandmed','kuupsplain','vähimruutude kuupfunktsioon','vähimruutude kuupfunktsioon kaaludega')
xlabel('x')
ylabel('y')
title('Joonis nr 1')

%arvutamine
vastus1=interp1(x,y,15.52,'spline')
vastus2=polyval(kordajad,15.52)
vastus3=polyval(c',15.52)