File: Nonlinear-Least_002dSquares-Testing-for-Convergence.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (147 lines) | stat: -rw-r--r-- 7,854 bytes parent folder | download
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 &ndash; Reference Manual: Nonlinear Least-Squares Testing for Convergence</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Nonlinear Least-Squares Testing for Convergence">
<meta name="keywords" content="GNU Scientific Library &ndash; 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> &nbsp; [<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| &lt;= xtol (|x_i| + xtol)
</pre></div>
<p>for each <em>0 &lt;= i &lt; 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 &lt;= 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&rsquo;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> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>