% Harjutustund 8, ylesanne 4
% andmed kirja ja joonisele
x=[1,2,4,6];
y=[2,-2,-2,2];
plot(x,y,'o')
axis([-2,8,-4,3])
grid on
yline(0)
xline(0)

% a) koostame Lagrange'i interpolatsioonipolünoomi
% Phi(x)=c_3*x^3+c_2*x^2+c_1*x+c_0

syms xx; % sümboolne muutuja
L30=((xx-2)*(xx-4)*(xx-6))/((1-2)*(1-4)*(1-6));
L31=((xx-1)*(xx-4)*(xx-6))/((2-1)*(2-4)*(2-6));
L32=((xx-1)*(xx-2)*(xx-6))/((4-1)*(4-2)*(4-6));
L33=((xx-1)*(xx-2)*(xx-4))/((6-1)*(6-2)*(6-4));
Lagrangepol=L30*y(1)+L31*y(2)+L32*y(3)+L33*y(4)
simplify(Lagrangepol)

% kontrollime, kas interpolatsioonitingimused on täidetud
% st Phi(x_i)=y_i  iga i korral
lagrfun=@(x) -x^3/6+(5*x^2)/2-(31*x)/3+10;
[lagrfun(1) lagrfun(2) lagrfun(4) lagrfun(6)]
hold on
fplot(lagrfun,[-2,8])

% c) koostame Newtoni interpolatsioonipolünoomi
% samuti Phi(x_i)=y_i  iga i korral
% Phi(x)=c_3*x^3+c_2*x^2+c_1*x+c_0
syms xx;
newtonipol=y(1)+(-4)*(xx-1)+4/3*(xx-1)*(xx-2)+(-1/6)*(xx-1)*(xx-2)*(xx-4)
simplify(newtonipol)

% vaatame, kas saime samad polünoomid Lagrange ja Newtoni interp korral
[simplify(Lagrangepol)
   simplify(newtonipol) ]