Frontend for nonlinear fitting of values, computed by a model function, to observed values.
Please refer to the description of nonlin_residmin. The
differences to nonlin_residmin are the additional arguments
x (independent values, mostly, but not necessarily, an array of
the same dimensions or the same number of rows as y) and
y (array of observations), the returned value fy (final
guess for observed values) instead of resid, that the model
function has a second obligatory argument which will be set to
x and is supposed to return guesses for the observations (with
the same dimensions), and that the possibly user-supplied function
for the jacobian of the model function has also a second obligatory
argument which will be set to x.
Also, if the setting user_interaction is given, additional
information is passed to these functions. Type optim_doc
("Common optimization options") for this setting.
See also: nonlin_residmin.
The following code
## Example for linear inequality constraints
## (see also the same example in 'demo nonlin_residmin')
## independents and observations
indep = 1:5;
obs = [1, 2, 4, 7, 14];
## model function:
f = @ (p, x) p(1) * exp (p(2) * x);
## initial values:
init = [.25; .25];
## linear constraints, A.' * parametervector + B >= 0
A = [1; -1]; B = 0; # p(1) >= p(2);
settings = optimset ("inequc", {A, B});
## start optimization
[p, model_values, cvg, outp] = nonlin_curvefit (f, init, indep, obs, settings)
Produces the following output
p =
0.6203
0.6203
model_values =
1.1536 2.1451 3.9891 7.4179 13.7941
cvg = 3
outp =
scalar structure containing the fields:
user_interaction =
scalar structure containing the fields:
stop = [](0x1)
info = {}(0x1)
niter = 7
lambda =
scalar structure containing the fields:
lower =
0
0
upper =
0
0
eqlin = [](0x0)
ineqlin = 269.24
eqnonlin = [](1x0)
ineqnonlin = [](1x0)
Package: optim