I've been trying to find a good curve fitting library for Java for the last couple of weeks. I came across Apache Commons Math and was really excited because I like all things Apache. The curve fitting API looks good and is fairly easy to use, however, it doesn't seem to be as accurate as it should/could be.
I've produced some code and data that shows that the initial parameter guesses affect the results too much. Guess low and the curve ends up low, guess high and the curve ends up high. I wish I had a stronger statistics/math background to make more sense of this. I've tried playing with the optimizer's options (costRelativeToTolerance, initialStepBoundFactor, maxEvaluations, maxIterations, orthTolerance and parRelativeTolerance) but nothing seems to improve the end result.
I've attached the spreadsheet and Java code. FYI, in the spreadsheet you'll see an entry in the chart for DataFitX. It is a COM library used in my company's current software that needs to be replaced.
Any help on this would be greatly appreciated. If you need more info, let me know and I'll supply it as quickly as I can.