function brachani ( x, nit ),
% TrapAni
%
% Animation for trapezoidal rule applied to Brachistochrone problem
%
% Dieses m-file ist Teil der Arbeitsmaterialien des 
%   Schuelerseminars "Optimale Bahnplanung von Robotern"
% am Fachbereich Mathematik und Informatik der
% Martin-Luther-Universitaet Halle-Wittenberg, Deutschland
%
% Parameters
%   x      (input)  : initial guess
%   nit    (input)  : number of iteration steps
%
% Example
%   x = [ 0.4*ones(199,1); 1 ];
%   brachani ( x, 10 );
%
% Author :      Prof. Dr. M. Arnold, martin.arnold@mathematik.uni-halle.de
% Version of :  Feb 8, 2006

% -> boundary data
x_0 =  0;
x_B =  0.8;
y_0 =  0;
y_B = -0.8;

% -> read input
N = length(x);
h = 1/N;

% -> animation of solution process
xgrid = linspace ( x_0, x_B, N+1 );
for iit=1:nit,
    F  = brachifcn ( x );
    DF = brachijac ( x );
    p  = - DF\F;
    x = x + p;
    ygrid = [ y_0; -(real(x(1:(N-1))).^2).^(1/3); y_B ];
    plot ( xgrid, ygrid );
    axis ( [ 0 1 -1 0 ] );
    xlabel ( 'x' );
    ylabel ( 'y' );
    title ( sprintf('Iterationsschritt %2i,  Residuum %6.2e,  max. Imaginaerteil %6.2e',iit,norm(F),max(abs(imag(x)))) );
    drawnow,  pause ( 2 );
end;
