RunMat
GitHub

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

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 · 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

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 works, line by line, in Rust.

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.

Getting started · Benchmarks · Pricing

Try RunMat for free

Write code or describe what you want to compute. The sandbox is free, no account required.