Re: non-linear regression update.
- From: Morten Welinder <terra diku dk>
- To: dcarrera math toronto edu
- Cc: gnumeric-list gnome org
- Subject: Re: non-linear regression update.
- Date: 28 May 2002 17:38:59 -0000
Let me see...
1. chi_pre is undefined the first time around.
2. The improvement test looks fishy. Shouldn't it be "- DELTA/2"?
3. You use the same DELTA for several different things. The one
you use for numeric differentiation might be problematic for
cases where the parameters themselves are small. The root
finder in Gnumeric uses something like abs(x/1e6) (for x!=0 and
something else for x==0).
4. The algorithm definitely need to know the valid ranges for the
parameters. Suppose you wanted to fit with
sqrt (a*x1*x1 + b*x2*x2)
You then need to make sure that a>0 and b>0. The current algorithm
could wander outside this areas and would then bail out even though
a smaller step might have kept it inside the proper area.
5. "for (count = 0; count < MAX_STEPS; cout++)": use count, not cout...
6. "par = tmp_par;" -- this is pointer assignement. I bet you meant
to assign all elements.
7. "derivative" actually changes params. I don't think that is a good
idea, at least not without restoring.
8. More or less all the error cases leak memory.
] [Thread Prev