Hello again!

I tried working with lsfitfit again, to fit a nonlinear function:

y=c0 (x0+c1)^2/(1+c2* x1).

I would like to get c0, c1 and c2 by providing datapoints ({x0,x1},y).

However, I don't have a high amount of datapoints (~3-5) and only the order of magnitude for c-starting parameter.

As a side-note, is this function solving the equation system when only called with 3 parameters? As far as I have experienced, it doesn't seem to and usually gets unaccurate at the 4th or 5th digit.

A set of Parameters that I call the function with:

**Code:**

y="[130.9045354801, 135.9066659041, 131.9036065061, 123.9053434201]";

x="[[32.13088888,128],[46.53452299,126],[49.49980573,128],[45.8625616,132]]";

For this, the solution should be around c="[0.069118, 1184,4528.38, 0.810883]";

The settings I call it with:

**Code:**

c="[0.01,1000,0.1]"

cScale[0]=0.01;

cScale[1]=1000;

cScale[2]=0.1;

epsf=1e-10;

epsx=1e-10;

maxits=0;

diffstep=1e-7;

bndl="[-1e8,-1e8,-1e8]";

bndu="[-1e8,-1e8,-1e8]";

The function and gradient:

**Code:**

void function_cx_1_func(const real_1d_array &c, const real_1d_array & x, double &func, void *ptr) {

func = c[0] * square(x[0] + c[1]) / square(1.0 + c[2] * x[1]);

}

void function_cx_1_grad(const real_1d_array &c, const real_1d_array & x, double &func, real_1d_array &grad, void *ptr) {

grad[0] = square(x[0] + c[1]) / square(1 + c[2] * x[1]);

grad[1] = 2 * c[0] * (x[0] + c[1]) / square(1 + c[2] * x[1]);

grad[2] = -2 * c[0] * c[1] * square(x[0] + c[1]) / (square(1 + c[2] * x[1])*(1 + c[2] * x[1]));

}

and the call to lsfitfit:

**Code:**

lsfitcreatefg(x, y, c, diffstep, state);

lsfitsetcond(state, epsf, epsx, maxits);

lsfitsetbc(state, bndl, bndu);

lsfitsetscale(state, cScale);

alglib::lsfitfit(state, function_cx_1_func, function_cx_1_grad);

lsfitresults(state, info, c, rep);

However, last time I tried this, the y-values of the fittet function at the x-coordinates were around 0.1 instead of 130... So I guess I messed up some accuracy-parameters...

However after searching for days I still can't seem to find any clue how to use this right...

Can someone please tell me if I misunderstood the using of e.g. epsx/epsf/cScale/diffstep to get a accurate fit?