1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
<html lang="en">
<head>
<title>Minimization Algorithms using Derivatives - GNU Scientific Library -- Reference Manual</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU Scientific Library -- Reference Manual">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Nonlinear-Least_002dSquares-Fitting.html" title="Nonlinear Least-Squares Fitting">
<link rel="prev" href="Search-Stopping-Parameters-for-Minimization-Algorithms.html" title="Search Stopping Parameters for Minimization Algorithms">
<link rel="next" href="Minimization-Algorithms-without-Derivatives.html" title="Minimization Algorithms without Derivatives">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Free Software
Needs Free Documentation'', the Front-Cover text being ``A GNU Manual'',
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled ``GNU Free Documentation
License''.
(a) The Back-Cover Text is: ``You have freedom to copy and modify this
GNU Manual, like GNU software.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<p>
<a name="Minimization-Algorithms-using-Derivatives"></a>
Next: <a rel="next" accesskey="n" href="Minimization-Algorithms-without-Derivatives.html">Minimization Algorithms without Derivatives</a>,
Previous: <a rel="previous" accesskey="p" href="Search-Stopping-Parameters-for-Minimization-Algorithms.html">Search Stopping Parameters for Minimization Algorithms</a>,
Up: <a rel="up" accesskey="u" href="Nonlinear-Least_002dSquares-Fitting.html">Nonlinear Least-Squares Fitting</a>
<hr>
</div>
<h3 class="section">37.6 Minimization Algorithms using Derivatives</h3>
<p>The minimization algorithms described in this section make use of both
the function and its derivative. They require an initial guess for the
location of the minimum. There is no absolute guarantee of
convergence—the function must be suitable for this technique and the
initial guess must be sufficiently close to the minimum for it to work.
<!-- ============================================================ -->
<p><a name="index-Levenberg_002dMarquardt-algorithms-2414"></a>
<div class="defun">
— Derivative Solver: <b>gsl_multifit_fdfsolver_lmsder</b><var><a name="index-gsl_005fmultifit_005ffdfsolver_005flmsder-2415"></a></var><br>
<blockquote><p><a name="index-LMDER-algorithm-2416"></a><a name="index-MINPACK_002c-minimization-algorithms-2417"></a>This is a robust and efficient version of the Levenberg-Marquardt
algorithm as implemented in the scaled <span class="sc">lmder</span> routine in
<span class="sc">minpack</span>. Minpack was written by Jorge J. Moré, Burton S. Garbow
and Kenneth E. Hillstrom.
<p>The algorithm uses a generalized trust region to keep each step under
control. In order to be accepted a proposed new position x' must
satisfy the condition |D (x' - x)| < \delta, where D is a
diagonal scaling matrix and \delta is the size of the trust
region. The components of D are computed internally, using the
column norms of the Jacobian to estimate the sensitivity of the residual
to each component of x. This improves the behavior of the
algorithm for badly scaled functions.
<p>On each iteration the algorithm attempts to minimize the linear system
|F + J p| subject to the constraint |D p| < \Delta. The
solution to this constrained linear system is found using the
Levenberg-Marquardt method.
<p>The proposed step is now tested by evaluating the function at the
resulting point, x'. If the step reduces the norm of the
function sufficiently, and follows the predicted behavior of the
function within the trust region, then it is accepted and the size of the
trust region is increased. If the proposed step fails to improve the
solution, or differs significantly from the expected behavior within
the trust region, then the size of the trust region is decreased and
another trial step is computed.
<p>The algorithm also monitors the progress of the solution and returns an
error if the changes in the solution are smaller than the machine
precision. The possible error codes are,
<dl>
<dt><code>GSL_ETOLF</code><dd>the decrease in the function falls below machine precision
<br><dt><code>GSL_ETOLX</code><dd>the change in the position vector falls below machine precision
<br><dt><code>GSL_ETOLG</code><dd>the norm of the gradient, relative to the norm of the function, falls
below machine precision
</dl>
<p class="noindent">These error codes indicate that further iterations will be unlikely to
change the solution from its current value.
</blockquote></div>
<div class="defun">
— Derivative Solver: <b>gsl_multifit_fdfsolver_lmder</b><var><a name="index-gsl_005fmultifit_005ffdfsolver_005flmder-2418"></a></var><br>
<blockquote><p>This is an unscaled version of the <span class="sc">lmder</span> algorithm. The elements of the
diagonal scaling matrix D are set to 1. This algorithm may be
useful in circumstances where the scaled version of <span class="sc">lmder</span> converges too
slowly, or the function is already scaled appropriately.
</p></blockquote></div>
<hr>The GNU Scientific Library - a free numerical library licensed under the GNU GPL<br>Back to the <a href="/software/gsl/">GNU Scientific Library Homepage</a></body></html>
|