3 @setfilename nelder_mead.info
4 @settitle Package nelder_mead
12 @dircategory Mathematics/Maxima
14 * Package nelder_mead: (maxima)Maxima share package implementing the Nelder-Mead minimization algorithm
17 @node Top, Introduction to package nelder_mead, (dir), (dir)
20 * Introduction to package nelder_mead::
21 * Definitions for package nelder_mead::
22 * Function and variable index::
24 @chapter Package nelder_mead
26 @node Introduction to package nelder_mead, Definitions for package nelder_mead, Top, Top
27 @section Introduction to package nelder_mead
29 Package @code{nelder_mead} implements the Nelder-Mead minimization algorithm [1],
30 also known as the polytope or amoeba method.
32 The Nelder-Mead algorithm is a derivative-free minimization algorithm;
33 only evaluations of the objective function are required.
35 @code{nelder_mead} implements the "grid-restrained" Nelder-Mead algorithm published by A. Bürmen et al. [2],
36 and implemented in Common Lisp by Mario S. Mommer.
37 Thanks to Andrej Vodopivec for the Maxima interface to the Common Lisp code.
41 [1] J.A. Nelder and R. Mead, "A simplex method for function
42 minimization," The Computer Journal, vol. 7, pp. 308-313, 1965.
44 [2] A. Bürmen, J. Puhan and T. Tuma, "Grid Restrained Nelder-Mead
45 Algorithm", Computational Optimization and Applications, vol.
46 34, no. 3, pp. 359 - 375, 2006.
48 @node Definitions for package nelder_mead, Function and variable index, Introduction to package nelder_mead, Top
49 @section Definitions for package nelder_mead
51 @deffn {Function} nelder_mead (@var{obj}, @var{vars}, @var{init})
53 Returns an approximate minimum of the objective function @var{obj},
54 as a function of the variables @var{vars},
55 starting at the initial point @var{init}.
57 The objective function may be discontinuous,
58 but if it is continuous,
59 the algorithm ("grid-restrained" Nelder-Mead)
60 is provably convergent.
61 The objective function need not be differentiable;
62 derivatives are not computed, not even approximately.
67 @c load ("nelder_mead") $
68 @c nelder_mead (if x<0 then -x else x^2, [x], [4]);
69 @c f(x) := if x < 0 then -x else x^2 $
70 @c nelder_mead (f, [x], [4]);
71 @c nelder_mead (x^4 + y^4 - 2*x*y - 4*x - 3*y, [x, y], [2, 2]);
74 (%i1) load ("nelder_mead") $
75 (%i2) nelder_mead (if x<0 then -x else x^2, [x], [4]);
76 (%o2) [x = 9.536387892694628E-11]
77 (%i3) f(x) := if x < 0 then -x else x^2 $
78 (%i4) nelder_mead (f, [x], [4]);
79 (%o4) [x = 9.536387892694628E-11]
80 (%i5) nelder_mead (x^4 + y^4 - 2*x*y - 4*x - 3*y, [x, y], [2, 2]);
81 (%o5) [x = 1.157212489168102, y = 1.099342680267472]
85 @node Function and variable index, , Definitions for package nelder_mead, Top
86 @appendix Function and variable index