Re: NonlinearRegress fitfail error
- To: mathgroup at smc.vnet.net
- Subject: [mg89352] Re: NonlinearRegress fitfail error
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sat, 7 Jun 2008 02:56:18 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g2b4pu$nn4$1@smc.vnet.net>
Meaghan wrote: > I'm updating an old program to Mathematica 6. Here's the problem > code: > > Needs["NonlinearRegression`"] > > msoln = BestFitParameters /. > NonlinearRegress[part1, a2*(Exp[b2*x] - 1) + c2*x, startpoints, x, > AccuracyGoal -> 5, PrecisionGoal -> 5, MaxIterations -> 500, > RegressionReport -> BestFitParameters] > where "part1" is a long list of data points. > > I know this method of replacement was valid in 5.2, but here I get: > FindFit::nrlnum: The function value {0.+(-1.+2.71828^(0. b2)) a2+0. > c2,0.104632+(-1.+2.71828^(0.195816 b2)) a2+0.195816 c2,<<8>>,<<92>>} > is not a list of real numbers with dimensions {102} at {a,b,c} = > {0.0369002,0.32,0.158379}. > NonlinearRegress::fitfail: The fitting algorithm failed. > ReplaceAll::reps: "{msoln} is neither a list of replacement rules nor > a valid dispatch table, and so cannot be used for replacing." My understanding is that you have forgotten to tell Mathematica what are the parameters of the model, i.e. the symbol *startpoints* is not defined or contains an erroneous definition. You should set it to, or replace it by,{a2, b2, c2}. In[40]:= Needs["NonlinearRegression`"] (* The following data are phony! This is just for the sake of the example about parameter definition. *) part1 = {{2, -0.99}, {6, -0.7}, {10, 0.58}, {14, 0.41}, {18, -0.66}}; startpoints = {a2, b2, c2}; msoln = BestFitParameters /. NonlinearRegress[part1, a2*(Exp[b2*x] - 1) + c2*x, startpoints, x, AccuracyGoal -> 5, PrecisionGoal -> 5, MaxIterations -> 500, RegressionReport -> BestFitParameters] During evaluation of In[40]:= FindFit::cvmit: Failed to converge to \ the requested accuracy or precision within 500 iterations. >> Out[43]= {a2 -> -3.37398*10^-19, b2 -> 2.3599, c2 -> 0.0159547}