%algandmed
x=1.2:0.1:2;
y=[10.08 11.43 10.9 12.48 16.19 18.03 21.01 21.13 20.39];
kaalud=[1 1 2 5 1 4 2 2 1];
%võrk
xvork=1.2:10^-3:2;
%kuupsplain
ysplain=interp1(x,y,xvork,'spline');
%vähimruutude mõttes kuupfunktsioon
kordajad=polyfit(x,y,3); %kordajate arvutamine
ykuup=polyval(kordajad,xvork);

%vähimruutude mõttes lähendamine erinevate kaaludega
%maatriks 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(2,3);
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.*y.*x.^3);
b(2)=sum(kaalud.*y.*x.^2);
b(3)=sum(kaalud.*y.*x);
b(4)=sum(kaalud.*y);
b
%lahendame süsteemi Ac=b
c=inv(A)*b' %need ongi kuupfunktsiooni kordajad

%leiame kuupfunktsiooni väärtused
ykuup1=polyval(c',xvork); %leitakse uue kuupfunktsiooni väärtused

%joonis
plot(x,y,'r*',xvork,ysplain,xvork,ykuup,xvork,ykuup1)
legend('algandmed','kuupsplain','kuupfunktsioon','kuupfunktsioon erinevate kaaludega')

%arvutamine
vastus1=interp1(x,y,1.58,'spline');
vastus2=polyval(kordajad,1.58);
vastus3=polyval(c',1.58)
vastus=[vastus1,vastus2,vastus3]
