Re: NonLinearFit
- To: mathgroup@smc.vnet.net
- Subject: [mg10795] Re: NonLinearFit
- From: Paul Abbott <paul@physics.uwa.edu.au>
- Date: Thu, 5 Feb 1998 00:58:39 -0500
- Organization: University of Western Australia
- References: <6atagt$jlr$11@dragonfly.wolfram.com>
Phil Howe wrote:
> I'm having a problem working with NonLinearFit, and would like some
> advice. To demonstrate the problem, I'll use a very simple expression,
> y==a*x^c +b, where I have assigned a=3, b=7, and c=2.
>
> This generates a simple data set:
> data=Table[{x, 3*x^2+7 +5*Random[]},{x,0,4,.2}];
>
> Now I try to use NonLinearFit. If I specify the value of the exponent,
> "c", the routine seems to work. If I ask it to find a value of c, it
> chokes, even if I tell it the right answer:
>
> NonlinearFit[data,a*x^c+b,x, {{c,2},{b,7},{a,3}}];
>
> NonlinearFit::"badderiv": "The matrix of model derivatives (dimensions
> \!\({3, 21}\)) includes DirectedInfinity in at least one element. Try
> fitting without data points having indices in the list \!\({1}\)."
The problem is that NonlinearFit computes the model derivatives, i.e.,
In[1]:= D[a*x^c + b, c]
Out[1]=
c
a x Log[x]
and, since your data includes 0, when NonlinearFit evaluates this model
derivative at x->0
In[2]:= % /. x -> 0
Out[2]=
c
0 a (-*)
you get a DirectedInfinity. If you delete 0 from your data,
data=Table[{x, 3*x^2+7 +5*Random[]},{x,0.2,4,.2}];
everything works fine:
Cheers,
Paul
____________________________________________________________________
Paul Abbott Phone: +61-8-9380-2734
Department of Physics Fax: +61-8-9380-1014
The University of Western Australia Nedlands WA 6907
mailto:paul@physics.uwa.edu.au AUSTRALIA
http://www.pd.uwa.edu.au/~paul
God IS a weakly left-handed dice player
____________________________________________________________________