fminbnd — Find bounded scalar minima with Brent's method in MATLAB and RunMat.
x = fminbnd(fun, x1, x2) searches the closed interval [x1, x2] for a local minimum of scalar function fun using Brent's method. Optional outputs return the minimum value, exit flag, and diagnostics, with tolerance and iteration behavior matching MATLAB semantics.
Syntax
x = fminbnd(fun, x1, x2)
x = fminbnd(fun, x1, x2, options)
[x, fval] = fminbnd(fun, x1, x2)
[x, fval] = fminbnd(fun, x1, x2, options)
[x, fval, exitflag] = fminbnd(fun, x1, x2)
[x, fval, exitflag] = fminbnd(fun, x1, x2, options)
[x, fval, exitflag, output] = fminbnd(fun, x1, x2)
[x, fval, exitflag, output] = fminbnd(fun, x1, x2, options)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
fun | Any | Yes | — | Scalar objective callback. |
x1 | Any | Yes | — | Lower bound. |
x2 | Any | Yes | — | Upper bound. |
options | Any | No | — | Options struct from optimset. |
Returns
| Name | Type | Description |
|---|---|---|
x | NumericScalar | Estimated minimizer location. |
fval | NumericScalar | Objective value at x. |
exitflag | NumericScalar | Convergence status code. |
output | Any | Iteration/function-count metadata struct. |
Returned values from fminbnd depend on how many outputs the caller requests.
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:fminbnd:InvalidArgument | Argument grammar/options parsing is invalid. | fminbnd: invalid argument |
RunMat:fminbnd:InvalidInput | Bounds/callback/input scalar semantics are invalid. | fminbnd: invalid input |
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 =
1Using fminbnd with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how fminbnd changes the result.
Run a small fminbnd example, explain the result, then change one input and compare the output.
FAQ
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 is executed, line by line, in Rust.
- View the source for fminbnd in Rust on GitHub
- Learn how the RunMat 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 blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.