function [y,fval]=fminbndn(f,a,b,n,OPTIONS,varargin)
% FMAXBNDN(f,a,b,n,OPTIONS,varargin)
% This is a crude way at trying to have a better chance of finding global maxima.
% Suppose you have a function F(x_1,x_2,x_3,...x_n) that you want to maximize
% as a function of its ith argument x_i over the intervall [a,b].
% You want to find a global maximum. What FMAXBNDN does is subdivide the interval
% [a,b] into n intervalls, find a local maximum in each and then take the
% global maximum of all.
% Consider the example where you have four arguments, you want to maximize over
% the third argument while the other arguments are x_1=1, x_2=2 and x_4=4.
% Futhermore suppose that [a,b]=[0,1], that you want subdivision into 10 intervalls.
% Then you would use the command
%
% fmaxbndn('F',0,1,10,1,2,[],4)
%
% Notice that an empty matrix [] was specified for the argument over which you want
% to maximizae.
n_parameters=length(varargin);
parameter_string='';
for i=1:n_parameters
if isempty(varargin{i})
parameter_string=[parameter_string 'x'];
else
parameter_string=[parameter_string num2str(varargin{i},15)];
end
if i