Remove the obsolete DEFMTRFUN-EXTERNAL macro
[maxima.git] / share / nelder_mead / nelder_mead.texi
blob4164cf1e48f6f399e8c11802986d9882a142a6b4
1 \input texinfo
3 @setfilename nelder_mead.info
4 @settitle Package nelder_mead
6 @ifinfo
7 @macro var {expr}
8 <\expr\>
9 @end macro
10 @end ifinfo
12 @dircategory Mathematics/Maxima
13 @direntry
14 * Package nelder_mead: (maxima)Maxima share package implementing the Nelder-Mead minimization algorithm
15 @end direntry
17 @node Top, Introduction to package nelder_mead, (dir), (dir)
18 @top
19 @menu
20 * Introduction to package nelder_mead::
21 * Definitions for package nelder_mead::
22 * Function and variable index::
23 @end menu
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.
39 References
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.
64 Examples:
66 @c ===beg===
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]);
72 @c ===end===
73 @example
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]
82 @end example
83 @end deffn
85 @node Function and variable index,  , Definitions for package nelder_mead, Top
86 @appendix Function and variable index
87 @printindex fn
88 @printindex vr
90 @bye