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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
  
     | 
    
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 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.3 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 the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library – Reference Manual: Nonlinear Least-Squares Testing for Convergence</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Nonlinear Least-Squares Testing for Convergence">
<meta name="keywords" content="GNU Scientific Library – Reference Manual: Nonlinear Least-Squares Testing for Convergence">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Nonlinear-Least_002dSquares-Fitting.html#Nonlinear-Least_002dSquares-Fitting" rel="up" title="Nonlinear Least-Squares Fitting">
<link href="Nonlinear-Least_002dSquares-High-Level-Driver.html#Nonlinear-Least_002dSquares-High-Level-Driver" rel="next" title="Nonlinear Least-Squares High Level Driver">
<link href="Nonlinear-Least_002dSquares-Iteration.html#Nonlinear-Least_002dSquares-Iteration" rel="previous" title="Nonlinear Least-Squares Iteration">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Nonlinear-Least_002dSquares-Testing-for-Convergence"></a>
<div class="header">
<p>
Next: <a href="Nonlinear-Least_002dSquares-High-Level-Driver.html#Nonlinear-Least_002dSquares-High-Level-Driver" accesskey="n" rel="next">Nonlinear Least-Squares High Level Driver</a>, Previous: <a href="Nonlinear-Least_002dSquares-Iteration.html#Nonlinear-Least_002dSquares-Iteration" accesskey="p" rel="previous">Nonlinear Least-Squares Iteration</a>, Up: <a href="Nonlinear-Least_002dSquares-Fitting.html#Nonlinear-Least_002dSquares-Fitting" accesskey="u" rel="up">Nonlinear Least-Squares Fitting</a>   [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Testing-for-Convergence"></a>
<h3 class="section">39.8 Testing for Convergence</h3>
<a name="index-nonlinear-fitting_002c-stopping-parameters_002c-convergence"></a>
<p>A minimization procedure should stop when one of the following conditions is
true:
</p>
<ul>
<li> A minimum has been found to within the user-specified precision.
</li><li> A user-specified maximum number of iterations has been reached.
</li><li> An error has occurred.
</li></ul>
<p>The handling of these conditions is under user control.  The functions
below allow the user to test the current estimate of the best-fit
parameters in several standard ways.
</p>
<dl>
<dt><a name="index-gsl_005fmultifit_005fnlinear_005ftest"></a>Function: <em>int</em> <strong>gsl_multifit_nlinear_test</strong> <em>(const double <var>xtol</var>, const double <var>gtol</var>, const double <var>ftol</var>, int * <var>info</var>, const gsl_multifit_nlinear_workspace * <var>w</var>)</em></dt>
<dt><a name="index-gsl_005fmultilarge_005fnlinear_005ftest"></a>Function: <em>int</em> <strong>gsl_multilarge_nlinear_test</strong> <em>(const double <var>xtol</var>, const double <var>gtol</var>, const double <var>ftol</var>, int * <var>info</var>, const gsl_multilarge_nlinear_workspace * <var>w</var>)</em></dt>
<dd><p>These functions test for convergence of the minimization method
using the following criteria:
</p>
<ul>
<li> Testing for a small step size relative to the current parameter vector
<div class="example">
<pre class="example">|\delta_i| <= xtol (|x_i| + xtol)
</pre></div>
<p>for each <em>0 <= i < p</em>. Each element of the step vector <em>\delta</em>
is tested individually in case the different parameters have widely
different scales. Adding <var>xtol</var> to <em>|x_i|</em> helps the test avoid
breaking down in situations where the true solution value <em>x_i = 0</em>.
If this test succeeds, <var>info</var> is set to 1 and the function
returns <code>GSL_SUCCESS</code>.
</p>
<p>A general guideline for selecting the step tolerance is to choose
<em>xtol = 10^{-d}</em> where <em>d</em> is the number of accurate
decimal digits desired in the solution <em>x</em>. See Dennis and
Schnabel for more information.
</p>
</li><li> Testing for a small gradient (<em>g = \nabla \Phi(x) = J^T f</em>)
indicating a local function minimum:
<div class="example">
<pre class="example">||g||_inf <= gtol
</pre></div>
<p>This expression tests whether the ratio
<em>(\nabla \Phi)_i x_i / \Phi</em> is small. Testing this scaled gradient
is a better than <em>\nabla \Phi</em> alone since it is a dimensionless
quantity and so independent of the scale of the problem. The
<code>max</code> arguments help ensure the test doesn’t break down in
regions where <em>x_i</em> or <em>\Phi(x)</em> are close to 0.
If this test succeeds, <var>info</var> is set to 2 and the function
returns <code>GSL_SUCCESS</code>.
</p>
<p>A general guideline for choosing the gradient tolerance is to set
<code>gtol = GSL_DBL_EPSILON^(1/3)</code>. See Dennis and Schnabel for
more information.
</p>
</li></ul>
<p>If none of the tests succeed, <var>info</var> is set to 0 and the
function returns <code>GSL_CONTINUE</code>, indicating further iterations
are required.
</p>
</dd></dl>
<hr>
<div class="header">
<p>
Next: <a href="Nonlinear-Least_002dSquares-High-Level-Driver.html#Nonlinear-Least_002dSquares-High-Level-Driver" accesskey="n" rel="next">Nonlinear Least-Squares High Level Driver</a>, Previous: <a href="Nonlinear-Least_002dSquares-Iteration.html#Nonlinear-Least_002dSquares-Iteration" accesskey="p" rel="previous">Nonlinear Least-Squares Iteration</a>, Up: <a href="Nonlinear-Least_002dSquares-Fitting.html#Nonlinear-Least_002dSquares-Fitting" accesskey="u" rel="up">Nonlinear Least-Squares Fitting</a>   [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
 
     |