function lambda = A6_i(Stuetzstellen,nVector,plotten)
% labmda = A6_i(Stuetzstellen,nVector,plotten)
%
% Eingabe: Stuetzstellen 0 = äquidistant
%                        1 = Tschebyscheff
%          nVector       Vektor der n, für die Übung 1:30
%          plotten       0 = nicht plotten
%                        1 = plotten
%
% Ausgabe: lambda        Vektor der Lambda_n

xx     = linspace(0,1,100);
lambda = zeros(length(nVector),1);
fprintf('\n\nBerechne Lambda_n für n=%i,...,%i\n\n',nVector(1),nVector(end));

for j=1:length(nVector)
   n = nVector(j);
   if Stuetzstellen==0 x = linspace(0,1,n+1);   
   else x = ( cos(((2*(0:n)+1)/(2*n+2)*pi)) + 1)/2; end;
   
   yy = zeros(size(xx));
   
   for i=1:n+1
      yy = yy + abs(psi(i,x,xx));
   end;   
   
   lambda(j) = max(yy);
   fprintf('n=%3i   lambda_n=%g\n',n,lambda(j));
end;

if plotten
   xlabel n
   semilogy(nVector,lambda,'.-k');
   hold on;
   
   if Stuetzstellen==0
      g = 2.^nVector ./ (2*sqrt(pi)*nVector.^1.5);
      semilogy(nVector,g,':k');
      
      title('\Lambda_n für äquidistante Stützstellen')
      legend('\Lambda_n','f(n) = 2^n / (2 \pi^{1/2} n^{3/2})');   
   else
      semilogy(nVector,log(nVector),':k');
      
      title('\Lambda_n für Tschebyscheff-Stützstellen');
      legend('\Lambda_n','f(n) = log(n)');
   end;
end;



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function f = psi(i,x,xj);
% Werte die Funktion psi_i für die Stützstellen x
% an den Stellen xj aus. ACHTUNG: der erste index i
% ist 1, nicht 0 (im Gegensatz zur Vorlesung)!
%
% Eingabe: i  1 <= i <= n=length(xj)
%          x  Stützstellen
%          xj Stellen, an denen psi_i ausgewertet wird
%
% Ausgabe: f  = psi_i(xj),

f = zeros(size(xj));

for j=1:length(xj)
   f(j) = prod((xj(j)-x([1:i-1 i+1:length(x)])) ./ (x(i)-x([1:i-1 i+1:length(x)])));
end;


