Function std.numeric.findLocalMin
Find a real minimum of a real function f(x) via bracketing.
Given a function f and a range (ax .. bx),
returns the value of x in the range which is closest to a minimum of f(x).
f is never evaluted at the endpoints of ax and bx.
If f(x) has more than one minimum in the range, one will be chosen arbitrarily.
If f(x) returns NaN or -Infinity, (x, f(x), NaN) will be returned;
otherwise, this algorithm is guaranteed to succeed.
						
				Tuple!(T,"x",Unqual!(ReturnType!DF),"y",T,"error") findLocalMin(T, DF)
				(
				
				  scope DF f,
				
				  const T ax,
				
				  const T bx,
				
				  const T relTolerance = sqrt(T
				  const T absTolerance = sqrt(T
				)
				
				if (isFloatingPoint!T && __traits(compiles, ()
{
T _ = DF
				Parameters
| Name | Description | 
|---|---|
| f | Function to be analyzed | 
| ax | Left bound of initial range of f known to contain the minimum. | 
| bx | Right bound of initial range of f known to contain the minimum. | 
| relTolerance | Relative tolerance. | 
| absTolerance | Absolute tolerance. | 
Preconditions
ax and bx shall be finite reals. 
    relTolerance shall be normal positive real. 
    absTolerance shall be normal positive real no less then T.
Returns
A tuple consisting of x, y = f(x) and error = 3 * (absTolerance * fabs(x) + relTolerance).
The method used is a combination of golden section search and successive parabolic interpolation. Convergence is never much slower than that for a Fibonacci search.
References
"Algorithms for Minimization without Derivatives", Richard Brent, Prentice-Hall, Inc. (1973)
See Also
findRoot, std
Example
import stdAuthors
Andrei Alexandrescu, Don Clugston, Robert Jacques, Ilya Yaroshenko