function F = brachifcn ( x );
% BrachiFcn
%
% Function value for 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
%
% Author :      Prof. Dr. M. Arnold, martin.arnold@mathematik.uni-halle.de
% Version of :  Feb 8, 2006

% -> allocate memory
F = zeros ( size(x) );

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

u_0 = (-y_0)^(3/2);
u_B = (-y_B)^(3/2);

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

u = [ u_0; x(1:(N-1)); u_B ];
C = x(N);

% -> evaluate function
for i=1:N,
    F(i) = (u(1+i)-u(1+i-1))/h - ...
        ( 3/2*sqrt(C^2-(u(1+i-1)^2)^(1/3)) + 3/2*sqrt(C^2-(u(1+i)^2)^(1/3)) ) / 2;
end;
