% Approximation von Pi
% mit Hilfe der Fläche eines
% regulären n-Ecks

% DP1a SoSe 05
% NMMa2 Serie2 Aufgabe 5

%/*--------------------------------------------------*/

Nmax = input('Nmax = ')

% mit der Formel
% mit Benuetzung von pi
n = 3;
ng = [];
nn = [];
F_n = [];
for i = 1:Nmax
    n = 2*n;
    nn = [nn, n];
    ng = [ng, n];
    alpha_n = 2*pi/n;
    F_n = [F_n n/2*sin(alpha_n)];
end
F_n;
ng = 1:Nmax;

figure(1)
hold off
subplot(2,1,1), plot(ng, F_n, 'rp-')
title('(Fläche des regulären n-Ecks) mit der Formel und mit pi')
grid
absF = abs(F_n - pi);
subplot(2,1,2), semilogy(ng, absF, 'k.-')
xlabel('Anzahl Verdoppelungen')
grid

% rekursiv
% MIT Ausloeschung
% F_2k = (2k)/2 sqrt(1 - sqrt(1 - (2/(k/2)*F_k)^2))/sqrt(2)
% was ist hier faul ???
% cos ist negativ für alpha_n > pi/2 !!

F_nr = [];
n = 3;
nnr = [];
n2 = 3;
%F_2k = n2/2*sin(2*pi/n2); 
F_2k = n2/2*sqrt(3)/2;      % sin(2*pi/3) = sqrt(3)/2
for i = 1:Nmax
    n = 2*n;
    nnr = [nnr n];
    F_k = F_2k;
    w1 = sqrt(1 - (2/(n/2)*F_k)^2);
    if i==1
        F_2k = n/2*sqrt(1 + w1)/sqrt(2.0);      % cos ist negativ für alpha_n > pi/2
    else
        F_2k = n/2*sqrt(1 - w1)/sqrt(2.0);
    end
    F_nr = [F_nr, F_2k];
end

F_nr;
ng = 1:Nmax;


figure(2)
hold off
subplot(2,1,1), plot(ng, F_nr, 'r.-')
title('Approximation von pi (Fläche des regulären n-Ecks)')
grid
absFr = abs(F_nr - pi);
subplot(2,1,2), semilogy(ng, absFr, 'k.-')
xlabel('Anzahl Verdoppelungen, rekursiv')
title('instabile Rekursion, MIT Auslöschung')
grid

% rekursiv, stabil
% OHNE Ausloeschung
% -----------------------------------------------------------
% w1 = 1 - sinus^2 und sinus (= alter sinus) aus der Rekursion
% drittes Binom für sqrt((1 - w1)/2) sqrt((1 - w1^2)/(2 + 2*w1)
% sqrt(1 - w1^2) = alter sinus!
% ----------------------------------------------------------
F_nrs = [];
n = 3;
nnr = [];
n2 = 3;
%F_2k = n2/2*sin(2*pi/n2); 
F_2k = n2/2*sqrt(3)/2;        % sin(2*pi/3) = sqrt(3)/2 
for i = 1:Nmax
    n = 2*n;
    nnr = [nnr n];
    F_k = F_2k;
    sinus = 2/(n/2)*F_k;
    w1 = sqrt(1 - (sinus)^2);
    if i==1
        F_2k = n/2*sinus/sqrt(2.0 - 2.0*w1);      % cos ist negativ für alpha_n > pi/2
    else
        F_2k = n/2*sinus/sqrt(2.0 + 2.0*w1);
    end
    F_nrs = [F_nrs, F_2k];
end

F_nrs;
ng = 1:Nmax;


figure(3)
hold off
subplot(2,1,1), plot(ng, F_nrs, 'm.-')
title('Approximation von pi (Fläche des regulären n-Ecks)')
grid
absFrs = abs(F_nrs - pi);
subplot(2,1,2), semilogy(ng, absFrs, 'k.-')
xlabel('Anzahl Verdoppelungen, rekursiv')
title('stabile Rekursion, OHNE Auslöschung')
grid
