% Harjutustunni nr. 8, ülesanne 3
% andmed
syms xx; % sümboolne muutuja xx
x=[0,1,4];
y=[1,2,2];
disp([x;y])
% joonis
plot(x,y,'o')
hold on
grid on

% d) koostame teise astme polünoomi kasutades maatriksvõrrandit
% võrrand C*B=A, kus C- tundmatute ees olevate kordajate maatriks
% B - tundmatute maatriks (otsitavad polünoomi kordajad)
% A - vabaliikmete maatriks (y-i väärtused)
C=[0^2,0,1;1^2,1,1;4^2,4,1];
A=[1;2;2];
B=inv(C)*A
% saime teise astme polünoomiks f(x)=-0.25*x^2+1.25*x+1
% kontrollime, kas leitud polünoom rahuldab interpolatsioonitingimusi
% st f(0)=1,f(1)=2 ja f(4)=2
f=@(x) -0.25*x.^2+1.25*x+1;
[f(0),f(1),f(4)]
% esitame leitud polünoomi joonisel
fplot(f)

% a) leiame Lagrange'i interpolatsioonipolünoomi
sum=0;
for (i=1:length(x))
    L=1;
   for (j=1:length(x))
      if (i~=j)
         L=L*(xx-x(j))/(x(j)-x(i));
      end
   end
   sum=sum+L*y(i);
end
Lagrangepol=simplify(sum)

% b) kontrollime interpolatsioonitingimusi
syms z(xx);
z(xx)=Lagrangepol;
kontroll1=z(0)
kontroll2=z(1)
kontroll3=z(4)

% c) leiame f(0.5)~Lagrangepolünoom(0.5)
lahend=z(0.5)
vpa(lahend)