Wrong commit of two empty files
[scilab.git] / scilab / modules / optimization / macros / neldermead / neldermead_contour.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - INRIA - Michael Baudin
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 //
11 // neldermead_contour --
12 //   Computes data necessary to create a contour plot of the cost function.
13 //   The cost function must be a function with two parameters.
14 // TODO : move to optimbase_compcontour
15 // Arguments
16 //   xmin , xmax , ymin , ymax : the bounds for the contour plot
17 //   nx , ny : the number of points in the directions x, y
18 //   xdata , ydata , zdata : vectors of data, as required by the contour command
19 //
20 function [ this , xdata , ydata , zdata ] = neldermead_contour ( this , xmin , xmax , ymin , ymax , nx , ny )
21   // Check that there are only 2 parameters
22   n = neldermead_cget ( this , "-numberofvariables" );
23   if n <> 2 then
24     errmsg = msprintf(gettext("%s: Unexpected number of variables %d. Cannot draw contour plot for functions which do not have two parameters."),"nmplot_contour",n)
25     error(errmsg)
26   end
27   stepx = (xmax - xmin)/nx
28   xdata = xmin:stepx:xmax;
29   stepy = (ymax - ymin)/ny
30   ydata = ymin:stepy:ymax;
31   // 1. Compute the matrix of experiments
32   nexp = length(xdata) * length(ydata)
33   iexp = 1;
34   for ix = 1:length(xdata)
35     for iy = 1:length(ydata)
36       x(iexp,1:2) = [xdata(ix) ydata(iy)];
37       iexp = iexp + 1;
38     end
39   end
40   // 2. Perform the experiments
41   // Vectorize the call to the cost function if possible
42   vectorizefunction = neldermead_cget ( this , "-vectorizefunction" );
43   if vectorizefunction == 0 then
44     for iexp = 1:nexp
45       [ this , f(iexp) ] = neldermead_function ( this , x(iexp,1:2) );
46     end
47   else
48     [ this , f ] = neldermead_function ( this , x );
49   end
50   // 3. Store the experiments results in a matrix, suitable for input to the contour function
51   iexp = 1;
52   for ix = 1:length(xdata)
53     for iy = 1:length(ydata)
54       zdata ( ix , iy ) = f(iexp);
55       iexp = iexp + 1;
56     end
57   end
58 endfunction
59