Re: FindFit issue
- To: mathgroup at smc.vnet.net
- Subject: [mg86432] Re: FindFit issue
- From: Duffy <duffy.tilleman at gmail.com>
- Date: Tue, 11 Mar 2008 02:58:49 -0500 (EST)
- References: <fr2mhj$o5h$1@smc.vnet.net>
On Mar 10, 3:04 am, t.du... at gmail.com wrote: > Hi, > I am trying to fit experimental data > > d = {{1000, 44.576*10^(-3)}, > {600, 49.546*10^(-3)}, > {800, 46.757*10^(-3)}, > {400, 55.023*10^(-3)}, > {200, 61.209*10^(-3)}, > {10, 71.584*10^(-3)}, > {100, 65.367*10^(-3)}} > > and model is: > > y = 0.072214 - a*Log[10, 1+b*x] > > but Mathematica after typing > > FindFit[d, 0.072214 - a*Log[10, 1 + b*x], {a, b}, x] > > return > > FindFit::nrlnum: The function value {-0.0226973-0.0208168 \ > \[ImaginaryI],<<5>>,-0.0282009-<<21>> \[ImaginaryI]} is not a list of > \ > real numbers with dimensions {7} at {a,b} = {0.0152574,-1.99204}. > > {a -> 0.0152574, b -> -1.99204} > > (especialy value of "b" is really awful - negative number in Log) > > But I know, there is Fit (calculated in Scientist) with coefficients > a = 0.033706 > b = 0.0057934 > > Can someone explain what I'm doing wrong? > > Best regards, > > T.D. Try constraining your fit parameters and using appropriate starting points. I got a decent looking fit using: y = 0.072214 - a*Log[10, 1 + b*x] FindFit[d, {y, b > 0}, {{a, .02}, {b, .02}}, x] output: {a -> 0.0339414, b -> 0.00571289} the {y, b > 0} tells mathematica to constrain b to positive values, and the {{a, .02}, {b, .02}} tells it to start looking for a fit with parameters a and b set to .02. A good way to find reasonable starting guesses is by using Manipulate, if you're familiar with that and running version 6. -Duffy Tilleman