RunMat
GitHub

fminunc — Find unconstrained local minima in MATLAB and RunMat.

x = fminunc(fun, x0) minimizes a finite real scalar objective starting from x0. Scalar guesses return scalars, and vector or array guesses return solutions with the same shape as x0.

Syntax

x = fminunc(fun, [0; 0; 0])

How fminunc works

  • Uses a host-side BFGS quasi-Newton method with a strong-Wolfe line search.
  • When SpecifyObjectiveGradient is false or omitted, gradients are estimated with forward finite differences.
  • When SpecifyObjectiveGradient is true, the objective callback is called as [f, g] = fun(x) and g must contain one gradient entry per element of x.
  • Options are supplied as a struct, usually from optimoptions or optimset. TolX, TolFun, MaxIter, MaxFunEvals, Display, Algorithm, and SpecifyObjectiveGradient are accepted.
  • Supported Algorithm values are 'quasi-newton' and 'bfgs'; trust-region mode is not enabled in this implementation.
  • Multi-output forms return x, fval, exitflag, output, grad, and an approximate Hessian.

Does RunMat run fminunc on the GPU?

The builtin registers ResidencyPolicy::GatherImmediately because BFGS iterations need scalar objective values, gradient vectors, and adaptive line-search decisions on the CPU.

Providers do not implement a direct fminunc hook; acceleration remains available inside user callback computations.

GPU memory and residency

fminunc is a host-side optimization sink. GPU-resident initial guesses are gathered before the solve, and objective callbacks may opt back into GPU work internally.

Examples

Minimize a quadratic vector objective

fun = @(x) sum((x - [1; 2; 3]).^2);
x = fminunc(fun, [0; 0; 0])

Expected output:

x =
    1.0000
    2.0000
    3.0000

Use an objective gradient

fun = @(x) deal(sum((x - [1; 2]).^2), 2*(x - [1; 2]));
opts = optimoptions('fminunc', 'SpecifyObjectiveGradient', true);
[x, fval, exitflag, output, grad] = fminunc(fun, [0; 0], opts)

Expected output:

x =
    1.0000
    2.0000

fval = 0
exitflag = 1

Using fminunc with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how fminunc changes the result.

Run a small fminunc example, explain the result, then change one input and compare the output.

FAQ

Does fminunc use the GPU?

The optimizer state and line search run on the host because the solver repeatedly invokes user callbacks. The callback itself can use GPU-aware operations.

What is in the output struct?

output contains iterations, funcCount, algorithm, firstorderopt, stepsize, and message fields.

Elementwise

abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · heaviside · 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

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

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

Symbolic

digits · int · limit · sym · syms · vpa

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