fminbnd — Find a local minimum of a scalar function on a bounded interval using Brent's method.
x = fminbnd(fun, x1, x2) searches the closed interval [x1, x2] for a local minimum of the scalar function fun using Brent's method (golden-section search combined with parabolic interpolation). Additional output arities expose the function value at the minimum, an exit flag, and a diagnostic struct.
How fminbnd works
- The function handle must return a finite real scalar for every sampled point in the interval.
- If
x1 > x2, the bounds are inconsistent andexitflag = -2. - If
x1 == x2, that point is returned withexitflag = 1. - Options are supplied as a struct, usually built with
optimset.TolX,MaxIter,MaxFunEvals, andDisplayare accepted. Displaymay be'off','iter','notify'(default; only prints when the solver fails to converge), or'final'.exitflagis1on convergence withinTolX,0when the iteration or evaluation budget is exhausted.- The fourth output is a struct with
iterations,funcCount,algorithm, andmessagefields.
Examples
Minimize a quadratic
x = fminbnd(@(x) (x-2).^2, 0, 5)Expected output:
x =
2.0000Capture the function value too
[x, fval] = fminbnd(@(x) (x-3).^2 + 1, 0, 5)Expected output:
x =
3.0000
fval =
1.0000Tighten tolerances
opts = optimset('TolX', 1e-10, 'Display', 'off');
[x, fval, exitflag] = fminbnd(@cos, 0, pi, opts)Expected output:
x =
3.1416
fval =
-1.0000
exitflag =
1FAQ
Does fminbnd support unbounded minimization?⌄
No. fminbnd requires finite scalar bounds. Use fminunc or fminsearch for unconstrained problems.
Can I retrieve the iteration history?⌄
Yes — request the four-output form [x, fval, exitflag, output] = fminbnd(...) to receive a struct with iterations, funcCount, algorithm, and message.
Does fminbnd guarantee a global minimum?⌄
No. Brent's method converges to a local minimum on [x1, x2]. For multi-modal functions, narrow the interval to bracket the desired minimum.
Related Math functions
Elementwise
abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · hypot · imag · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · sign · single · sqrt · times
Trigonometry
acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · deg2rad · rad2deg · sin · sind · sinh · tan · tand · tanh
Reduction
all · any · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · mean · median · min · nnz · prod · std · sum · trapz · var
Structure
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how fminbnd works, line by line, in Rust.
- View fminbnd.rs on GitHub
- Learn how the runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code — faster, on any GPU, with no license required.
- Simulations that took hours now take minutes. RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed.
- Start running code in seconds. Open the browser sandbox or download a single binary. No license server, no IT ticket, no setup.
- A full development environment. GPU-accelerated 2D and 3D plotting, automatic versioning on every save, and a browser IDE you can share with a link.