# Difference between revisions of "Fminnewton.m"

From Spinach Documentation Wiki

(Updated to the current doc style and updated syntax + options) |
m (→See also) |
||

Line 45: | Line 45: | ||

− | ''Revision | + | ''Revision 3399, authors: [[David Goodwin]]'' |

## Revision as of 15:07, 2 September 2016

Finds a local minimum (or maximum) of a function of several variables, based on fminlbfgs.m code from D. Kroon, University of Twente (Nov 2010).

## Syntax

[x,fx,grad,hess,data]=fminnewton(cost_function,x_0,optim,hess_init)

## Description

This is the most developed optimisation algorithm within Spinach. It uses a line search

The `cost_function` is a function handle to that which produces as cost, gradient, and\or Hessian as a function of an initial guess, `x_0`. `optim` is an optional argument containing the optimisation options as a pair-wise cell structure.

## Arguments

cost_function - Function handle, e.g. @cost_function, x_0 - Initial guess for the waveform. optim - Structure providing the options for the numerical optimisation algorithm. See optim_tols.m for all options. hess_init - (optional) an initial Hessian to use for quasi-newton methods. If not provided, the identity is used as a default.

## Returns

x - Output waveform at the end of the optimisation. Should be the waveform at a local minimum (or maximum) cost. fx - Output cost at the end of the optimisation. grad - Output gradient at the end of the optimisation. hess - Output Hessian matrix at the end of the optimisation. Has meaning from 'bfgs', 'sr1', or 'newton', returns the identity otherwise. data - data structure containing diagnostics of the optimisation algorithm.

## Notes

This function is coded both for minimisation (default) and maximisation. This option is defined in the `optim` structure from optim_tols.m.

## See also

linesearch.m, optim_tols.m, hessreg.m, hessprep.m

*Revision 3399, authors: David Goodwin*