function A11

load_and_plot('F11_1.dat');
load_and_plot('F11_2.dat');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function load_and_plot(f)

F=load(f);

% Stützstellen
x = F(:,1);
y = F(:,2);
 
%Anzahl der Interpolationspunkte
nint=length(x);
 
% Stützpunkte zeichnen
figure;
plot(x,y,'r*');
drawnow;
hold on;
 
n=nint-1;
%Tschebyscheff Interpolationspunkte
ti=( cos((2*(0:n)/(2*n+1)*pi)) + 1)/2;
%Plotpunkte
tplt=[];
for i=1:nint-1
tplt=[tplt,linspace(ti(i),ti(i+1),5)];
end;
%Polynominterpolation der beiden Kurvenkomponenten
xi=Neville_Aitken(ti,x,tplt);
yi=Neville_Aitken(ti,y,tplt);
plot(xi,yi,'b');
hold off;
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function f = Neville_Aitken(x,y,xj)
% Neville-Aitken-Algorithmus für die Stützstellen x
% und den Funktionswerten y. Dieser Algorithmus wertet
% das Interpolationspolynom durch die Punkte (x,y)
% an den Stellen xj aus.
%
% Eingabe: x  Stützstellen
%          y  Funktionswerte, die interpoliert werden
%          xj Stellen, an denen das Polynom ausgewertet wird
%
% Ausgabe: f  = P(xj), interpolierte Werte

n = length(x);
f = zeros(size(xj));

for j=1:length(xj)
   P = y;
   
   for k=2:n
      for i=n:-1:k
         P(i) = P(i) + (xj(j)-x(i)) / (x(i)-x(i-k+1)) * (P(i)-P(i-1));
      end;
   end;
   
   f(j) = P(n);
end;

