### 7.4 Curve fitting

This function is for Matlab compatibility. It attempts to work like `lsqcurvefit` by calling nonlin_curvefit.

Function File: lsqcurvefit (fun, x0, xdata, ydata)
Function File: lsqcurvefit (fun, x0, xdata, ydata, lb, ub)
Function File: lsqcurvefit (fun, x0, xdata, ydata, lb, ub, options)
Function File: [x, resnorm, residual, exitflag, output, lambda, jacobian] = lsqcurvefit (…)

  Solve nonlinear least-squares (nonlinear data-fitting) problems

      min [EuclidianNorm (f(x, xdata) - ydata)] .^ 2
       x

  The first four input arguments must be provided with non-empty initial guess x0. For a given input xdata, ydata is the observed output. ydata must be the same size as the vector (or matrix) returned by fun. The optional bounds lb and ub should be the same size as x0. options can be set with `optimset`. Follwing Matlab compatible options are recognized:

  `Algorithm` String specifying backend algorithm. Currently available "lm_svd_feasible" only.

  `TolFun` Minimum fractional improvement in objective function in an iteration (termination criterium). Default: 1e-6.

  `TypicalX` Typical values of x. Default: 1.

  `MaxIter` Maximum number of iterations allowed. Default: 400.

  `Jacobian` If set to "on", the objective function must return a second output containing a user-specified Jacobian. The Jacobian is computed using finite differences otherwise. Default: "off"

  `FinDiffType` "centered" or "forward" (Default) type finite differences estimation.

  `FinDiffRelStep` Step size factor. The default is sqrt(eps) for forward finite differences, and eps^(1/3) for central finite differences

  `OutputFcn` One or more user-defined functions, either as a function handle or as a cell array of function handles that an optimization function calls at each iteration. The function definition has the following form:

  `stop = outfun(x, optimValues, state)`

  `x` is the point computed at the current iteration. `optimValues` is a structure containing data from the current iteration in the following fields: "iteration"- number of current iteration. "residual"- residuals. `state` is the state of the algorithm: "init" at start, "iter" after each iteration and "done" at the end.

  `Display` String indicating the degree of verbosity. Default: "off". Currently only supported values are "off" (no messages) and "iter" (some messages after each iteration).

  Returned values:

  x

    Coefficients to best fit the nonlinear function fun(x,xdata) to the observed values ydata.

  resnorm

    Scalar value of objective as squared EuclidianNorm(f(x)).

  residual

    Value of solution residuals f(x).

  exitflag

    Status of solution:

    `0`

      Maximum number of iterations reached.

    `2`

      Change in x was less than the specified tolerance.

    `3`

      Change in the residual was less than the specified tolerance.

    `-1`

      Output function terminated the algorithm.

  output

    Structure with additional information, currently the only field is `iterations`, the number of used iterations.

  lambda

    Structure containing Lagrange multipliers at the solution x sepatared by constraint type (lb and ub).

  jacobian

    m-by-n matrix, where jacobian(i,j) is the partial derivative of fun(i) with respect to x(j) If `Jacobian` is set to "on" in options then fun must return a second argument providing a user-sepcified Jacobian. Otherwise, lsqnonlin approximates the Jacobian using finite differences.

  This function is a compatibility wrapper. It calls the more general `nonlin_curvefit` function internally.

  See also: lsqnonlin, nonlin_residmin, nonlin_curvefit.