clear
%algandmed
x=-4:5;
y=[2.03 3 5.2 6.8 7 9.6 11 13.6 14 16.6];
kaalud=[1 1 2 2 3 3 2 2 1 1];

%teeme võrgu
xvork=-4:1e-3:5;

%lähendamine
%1) võrdsete kaaludega ruutfunktsioon
kordajad=polyfit(x,y,2); %leiame ruutfunktsiooni kordajad
yruut=polyval(kordajad,xvork); %arvutame ruutfunktsiooni väärtused

%2) kaaludega ruutfunktsioon
A(1,1)=sum(kaalud.*x.^4);
A(1,2)=sum(kaalud.*x.^3);
A(1,3)=sum(kaalud.*x.^2);
A(2,1)=A(1,2);
A(2,2)=A(1,3);
A(2,3)=sum(kaalud.*x);
A(3,1)=A(1,3);
A(3,2)=A(2,3);
A(3,3)=sum(kaalud);
b(1)=sum(kaalud.*y.*x.^2);
b(2)=sum(kaalud.*y.*x);
b(3)=sum(kaalud.*y);

%ruutfunktsiooni kordajad on võrrandisüsteemi Ac=b lahendid
c=A\b' %NB! b peab olema transponeeritud

yruut1=polyval(c',xvork); %leiame uue ruutfunktsiooni väärtused

%Joonis
plot(x,y,'r*',xvork,yruut,xvork,yruut1)
legend('Algandmed','Ruutfunktsioon','Ruutfunktsioon erinevate kaaludega')
xlabel('x')
ylabel('y')
title('Funktsioonide lähendamine')