RunMat
GitHub

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

NameTypeRequiredDefaultDescription
funAnyYesScalar objective callback.
x1AnyYesLower bound.
x2AnyYesUpper bound.
optionsAnyNoOptions struct from optimset.

Returns

NameTypeDescription
xNumericScalarEstimated minimizer location.
fvalNumericScalarObjective value at x.
exitflagNumericScalarConvergence status code.
outputAnyIteration/function-count metadata struct.

Returned values from fminbnd depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:fminbnd:InvalidArgumentArgument grammar/options parsing is invalid.fminbnd: invalid argument
RunMat:fminbnd:InvalidInputBounds/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 and exitflag = -2.
  • If x1 == x2, that point is returned with exitflag = 1.
  • Options are supplied as a struct, usually built with optimset. TolX, MaxIter, MaxFunEvals, and Display are accepted.
  • Display may be 'off', 'iter', 'notify' (default; only prints when the solver fails to converge), or 'final'.
  • exitflag is 1 on convergence within TolX, 0 when the iteration or evaluation budget is exhausted.
  • The fourth output is a struct with iterations, funcCount, algorithm, and message fields.

Examples

Minimize a quadratic

x = fminbnd(@(x) (x-2).^2, 0, 5)

Expected output:

x =
    2.0000

Capture the function value too

[x, fval] = fminbnd(@(x) (x-3).^2 + 1, 0, 5)

Expected output:

x =
    3.0000
fval =
    1.0000

Tighten 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 =
     1

Using 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.

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

Signal

blackman · butter · conv · conv2 · deconv · filter · hamming · hann · sawtooth · sinc · square

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · pinv · rank · rcond · rref

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Interpolation

interp1 · interp2 · pchip · ppval · spline

Ode

ode15s · ode23 · ode45

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how fminbnd is executed, line by line, in Rust.

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.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.