% Harjutustund nr. 8, Ülesanne nr. 3
% andmed
syms xx; % xx on sümboolne muutuja
x=[0,1,4];
y=[1,2,2];
% joonis
plot(x,y,'o')
hold on
axis([-1,5,-2,6])
grid on
% leiame 2-astme polünoomi f(x)=c2*x^2+c1*x+c0
% koostame polünoomi, mis läbib ette antud punkte
% moodustasime maatriksvõrrandi CB=A
% C - tundmatute (c2,c1,c0) ees olevad kordajad 
% A - vabaliikmete maatriks (funktsiooni väärtused sõlmedes x)
% B - tundmatute maatriks (c2,c1,c0)

% andmed
A=[1;2;2];
C=[0^2,0,1;1^2,1,1;4^2,4,1];
% leiame maatriksi B
B=inv(C)*A

% kontrollime interpolatsioonitingimusi
% interpolatsioonipolünoomi defineerimine
f=@(x) -0.25*x.^2+1.25*x+1;
[f(0),f(1),f(4)]

%  esitame polünoomi joonisel
fplot(f)

% a) leiame Lagrange interpolatsioonipolünoomi Phi(x) - teise astme
% polünoom
sum=0;
for (i=1:length(x))
    L=1;
    for (j=1:length(x))
        if (i~=j)
            L=L*(xx-x(j))/(x(i)-x(j));
        end
    end 
    sum=sum+L*y(i);
end
lagrangepolynoom=simplify(sum)

% b) kontrollime interpolatsioonitingimuste täidetust
syms z(xx); % sümboolne funktsioon
z(xx)=lagrangepolynoom; % funktsiooni z avaldiseks on 
%Lagrange interpolatsioonipolünoom
kontroll=[z(0),z(1),z(4)]

% c) leiame f(0.5)~Phi(0.5)
vpa(z(0.5)) % väärtus kümnendmurruna