function A20

%Maximalfrequenz 
K=30;

%Sprünge der Ableitungen der Funktion f_1
jump=[2*pi];
%FourierKoeffizienten
c1=pol_coeff(jump,K);
c1=[conj(fliplr(c1)),0,c1];
%Spektrum zeichnen
figure;
bar(-K:K,abs(c1),0.3,'r');
axis([-K K 0 1.1]);

%Sprünge der Ableitungen der Funktion f_2
jump=[0,-4*pi];
c2=pol_coeff(jump,K);
c2=[conj(fliplr(c2)),0,c2];
figure;
bar(-K:K,abs(c2),0.3,'r');
axis([-K K 0 2.1]);

%Sprünge der Ableitungen der Funktion f_3
jump=[0,0,-707*pi^5/36,0,-3640*pi^3/3,0,-10080*pi,0];
c3=pol_coeff(jump,K);
c3=[conj(fliplr(c3)),0,c3];
figure;
bar(-K:K,abs(c3),0.3,'r');
axis([-K K 0 35]);

%Koeffizienten der charakteristischen Funktion f_4
a=1/5;
c4=a*sinc(a*[-K:K]);
figure;
bar(-K:K,abs(c4),0.2,'r');
axis([-K K 0 1.1*a]);

%2n+1=Grad des Fourierpolynoms
n=30;

t=linspace(-pi,pi,100);

figure;
%Rekonstruktion Funktion f_1
f1=t;
plot(t,real(foupol(c1(K+1-n:K+1+n),t)),t,f1);

figure;
%Rekonstruktion Funktion f_2
f2=(pi-t).*(pi+t)-2/3*pi^2;
plot(t,real(foupol(c2(K+1-n:K+1+n),t)),t,f2);

figure;
%Rekonstruktion Funktion f_3
f3=(pi-t).*(5*pi/6-t).*(pi/2-t).*t.*(5*pi/6+t).*(pi/2+t).*(pi+t);
plot(t,real(foupol(c3(K+1-n:K+1+n),t)),t,f3);

figure;
%Rekonstruktion Funktion f_4
f4=t>-pi/5 & t<pi/5;
plot(t,real(foupol(c4(K+1-n:K+1+n),t)),t,f4);


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

function f=foupol(c,t)
%Berechnet das Fourierpolynom zu gegebenen Koeffizienten
%an Stuetzstellen t

n=(length(c)-1)/2;
m=t(:)*[-n:n];
f=exp(i*m)*(c.');
f=reshape(f,size(t));


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

function c=pol_coeff(jump,K)
% berechnet die Fourier-Koeffizienten eines periodisch
% fortgesetzten reellen Polynoms auf (-pi,pi)
% für die Frequenzen 1 bis K
% der Vektor jump muss die Differenz der Ableitungen 0 bis grad-1 des
% Polynoms zwischen rechtem und linkem Ende enthalten 

c=zeros(1,K);
%Frequenzen
k=1:K;
%Vorfaktor
s=(-1).^(k+1)/(2*pi);
%grad des Polynoms
d=length(jump);
%nutze rekursive Formel
for j=d:-1:1
  c=(c+s*jump(j))./(i*k);
end;
