blob: ac0e46dac4e45fd909e8f4fb944bfc41c54b37b0 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>BrentOptimizer (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BrentOptimizer (Apache Commons Math 3.3 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BrentOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BracketFinder.html" title="class in org.apache.commons.math3.optimization.univariate"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/optimization/univariate/SimpleUnivariateValueChecker.html" title="class in org.apache.commons.math3.optimization.univariate"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/optimization/univariate/BrentOptimizer.html" target="_top">Frames</a></li>
<li><a href="BrentOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.optimization.univariate</div>
<h2 title="Class BrentOptimizer" class="title">Class BrentOptimizer</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html" title="class in org.apache.commons.math3.optimization.univariate">org.apache.commons.math3.optimization.univariate.BaseAbstractUnivariateOptimizer</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.optimization.univariate.BrentOptimizer</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/commons/math3/optimization/BaseOptimizer.html" title="interface in org.apache.commons.math3.optimization">BaseOptimizer</a>&lt;<a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optimization.univariate">UnivariatePointValuePair</a>&gt;, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseUnivariateOptimizer.html" title="interface in org.apache.commons.math3.optimization.univariate">BaseUnivariateOptimizer</a>&lt;<a href="../../../../../../org/apache/commons/math3/analysis/UnivariateFunction.html" title="interface in org.apache.commons.math3.analysis">UnivariateFunction</a>&gt;, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariateOptimizer.html" title="interface in org.apache.commons.math3.optimization.univariate">UnivariateOptimizer</a></dd>
</dl>
<hr>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>As of 3.1 (to be removed in 4.0).</i></div>
</div>
<br>
<pre><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public class <span class="strong">BrentOptimizer</span>
extends <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html" title="class in org.apache.commons.math3.optimization.univariate">BaseAbstractUnivariateOptimizer</a></pre>
<div class="block">For a function defined on some interval <code>(lo, hi)</code>, this class
finds an approximation <code>x</code> to the point at which the function
attains its minimum.
It implements Richard Brent's algorithm (from his book "Algorithms for
Minimization without Derivatives", p. 79) for finding minima of real
univariate functions.
<br/>
This code is an adaptation, partly based on the Python code from SciPy
(module "optimize.py" v0.5); the original algorithm is also modified
<ul>
<li>to use an initial guess provided by the user,</li>
<li>to ensure that the best point encountered is the one returned.</li>
</ul></div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>2.0</dd>
<dt><span class="strong">Version:</span></dt>
<dd>$Id: BrentOptimizer.java 1591835 2014-05-02 09:04:01Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BrentOptimizer.html#BrentOptimizer(double, double)">BrentOptimizer</a></strong>(double&nbsp;rel,
double&nbsp;abs)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">The arguments are used for implementing the original stopping criterion
of Brent's algorithm.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BrentOptimizer.html#BrentOptimizer(double, double, org.apache.commons.math3.optimization.ConvergenceChecker)">BrentOptimizer</a></strong>(double&nbsp;rel,
double&nbsp;abs,
<a href="../../../../../../org/apache/commons/math3/optimization/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optimization">ConvergenceChecker</a>&lt;<a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optimization.univariate">UnivariatePointValuePair</a>&gt;&nbsp;checker)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">The arguments are used implement the original stopping criterion
of Brent's algorithm.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optimization.univariate">UnivariatePointValuePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BrentOptimizer.html#doOptimize()">doOptimize</a></strong>()</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Method for implementing actual optimization algorithms in derived
classes.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.commons.math3.optimization.univariate.BaseAbstractUnivariateOptimizer">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.commons.math3.optimization.univariate.<a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html" title="class in org.apache.commons.math3.optimization.univariate">BaseAbstractUnivariateOptimizer</a></h3>
<code><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#computeObjectiveValue(double)">computeObjectiveValue</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getConvergenceChecker()">getConvergenceChecker</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getEvaluations()">getEvaluations</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getGoalType()">getGoalType</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getMax()">getMax</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getMaxEvaluations()">getMaxEvaluations</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getMin()">getMin</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#getStartValue()">getStartValue</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#optimize(int, org.apache.commons.math3.analysis.UnivariateFunction, org.apache.commons.math3.optimization.GoalType, double, double)">optimize</a>, <a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#optimize(int, org.apache.commons.math3.analysis.UnivariateFunction, org.apache.commons.math3.optimization.GoalType, double, double, double)">optimize</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="BrentOptimizer(double, double, org.apache.commons.math3.optimization.ConvergenceChecker)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BrentOptimizer</h4>
<pre>public&nbsp;BrentOptimizer(double&nbsp;rel,
double&nbsp;abs,
<a href="../../../../../../org/apache/commons/math3/optimization/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optimization">ConvergenceChecker</a>&lt;<a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optimization.univariate">UnivariatePointValuePair</a>&gt;&nbsp;checker)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">The arguments are used implement the original stopping criterion
of Brent's algorithm.
<code>abs</code> and <code>rel</code> define a tolerance
<code>tol = rel |x| + abs</code>. <code>rel</code> should be no smaller than
<em>2 macheps</em> and preferably not much less than <em>sqrt(macheps)</em>,
where <em>macheps</em> is the relative machine precision. <code>abs</code> must
be positive.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>rel</code> - Relative threshold.</dd><dd><code>abs</code> - Absolute threshold.</dd><dd><code>checker</code> - Additional, user-defined, convergence checking
procedure.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>abs &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if <code>rel &lt; 2 * Math.ulp(1d)</code>.</dd></dl>
</li>
</ul>
<a name="BrentOptimizer(double, double)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BrentOptimizer</h4>
<pre>public&nbsp;BrentOptimizer(double&nbsp;rel,
double&nbsp;abs)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">The arguments are used for implementing the original stopping criterion
of Brent's algorithm.
<code>abs</code> and <code>rel</code> define a tolerance
<code>tol = rel |x| + abs</code>. <code>rel</code> should be no smaller than
<em>2 macheps</em> and preferably not much less than <em>sqrt(macheps)</em>,
where <em>macheps</em> is the relative machine precision. <code>abs</code> must
be positive.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>rel</code> - Relative threshold.</dd><dd><code>abs</code> - Absolute threshold.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>abs &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if <code>rel &lt; 2 * Math.ulp(1d)</code>.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="doOptimize()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>doOptimize</h4>
<pre>protected&nbsp;<a href="../../../../../../org/apache/commons/math3/optimization/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optimization.univariate">UnivariatePointValuePair</a>&nbsp;doOptimize()</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Method for implementing actual optimization algorithms in derived
classes.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html#doOptimize()">doOptimize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BaseAbstractUnivariateOptimizer.html" title="class in org.apache.commons.math3.optimization.univariate">BaseAbstractUnivariateOptimizer</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>the optimum and its corresponding function value.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BrentOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/optimization/univariate/BracketFinder.html" title="class in org.apache.commons.math3.optimization.univariate"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/optimization/univariate/SimpleUnivariateValueChecker.html" title="class in org.apache.commons.math3.optimization.univariate"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/optimization/univariate/BrentOptimizer.html" target="_top">Frames</a></li>
<li><a href="BrentOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>