function[L] = legendre(n)

% function[L] = legendre(n)
% 
% Diese Funktion liefert die Koeffizienten der Legendre - Polynome n-ten
% Grades. Sie werden zeilenweise in der (n+1)x(n+1)-Ausgabematrix 
% gespeichert, in der Reihenfolge der abfallenden Potenzen.
% Die Rekursionsformel lautet:
%    (n+1)*P_{n+1}(x) - (2n+1)*x*P_n(x) + n*P_{n-1}(x) = 0, 
% wobei P_0(x) = 1, P_1(x) = x und P_2(x) = (3x^2 - 1)/2.

L = [];
if (n < 0) 
    error('Geben Sie bitte als Parameter eine natuerliche Zahl ein!!');
    return;
end

switch n
case 0, 
    L = 1;  % P_0
case 1, 
    L = [0, 1; 1, 0]; % P_1
case 2, 
    L = [0, 0, 1; 0, 1, 0; 3/2, 0, -1/2];  % P_2
end

if (n <= 2)
    return
else
    L = zeros(n+1);
    L(1,end)   = 1; % 1. Polynom
    L(2,end-1) = 1; % 2. Polynom
    L(3,[end-2 end-1 end]) = [3/2, 0, -1/2];
    
    for k = 4:n+1
       a = zeros(1,n+1);
       b = zeros(1,n+1);
       a = (1/(k-1))*((2*(k-2)+1)*L(k-1,:));
       b = -(1/(k-1))*((k-2)*L(k-2,:));
       L(k,1:n) = a(2:n+1); 
       L(k,:) = L(k,:) + b;
    end
end

