[Date Index]
[Thread Index]
[Author Index]
Re: 'NonlinearFit` confusion
*To*: mathgroup at smc.vnet.net
*Subject*: [mg49878] Re: 'NonlinearFit` confusion
*From*: Paul Abbott <paul at physics.uwa.edu.au>
*Date*: Thu, 5 Aug 2004 09:20:41 -0400 (EDT)
*Organization*: The University of Western Australia
*References*: <ceqt91$jr7$1@smc.vnet.net>
*Sender*: owner-wri-mathgroup at wolfram.com
In article <ceqt91$jr7$1 at smc.vnet.net>, klingot at yahoo.com (Klingot)
wrote:
> I'm trying to fit a sinusoidal function to my data using
> 'NonlinearFit' but it's exhibiting rather odd behaviour. Please see my
> examples below:
>
> EXAMPLE (1).
>
> **** As a test, I created a list of data from a function of the form y
> = 6 + 2Sin[3 + x] with:
>
> datay = Table [6 + 2Sin[3 + x], {x, -10Pi, 10Pi, 0.05}];
> datax = Table [x, {x, -10Pi, 10Pi, 0.05}];
> data = Table[{datax[[i]], datay[[i]]}, {i, 1, Length[datay]}];
You can generate this data directly using
data = Table[{x,6 + 2Sin[3 + x]}, {x, -10Pi, 10Pi, 0.05}]
> **** Then tested to see whether NonlinearFit would correctly deduce
> the equations parameters with:
>
> NonlinearFit[data, c + a Sin[d + e x], x, {a, c, d,e}]
>
> **** As expected, it gave me '6.+ 2. Sin[3. + 1. x]' ... exactly as
> one would expect :)
>
>
> EXAMPLE (2).
>
> **** Second test, I modified the equation by multiplying x by 5, ie.
> y = 6 + 2Sin[3 + 5x]:
>
> datay = Table [6 + 2Sin[3 + 5 x], {x, -10Pi, 10Pi, 0.05}];
> datax = Table [x, {x, -10Pi, 10Pi, 0.05}];
> data = Table[{datax[[i]], datay[[i]]}, {i, 1, Length[datay]}];
After re-generating your data,
data = Table[{x,6 + 2Sin[3 + 5 x]}, {x, -10Pi, 10Pi, 0.05}]
have a look at it:
ListPlot[data]
I think you will see what the problem is.
> ***** and applied the NonlinearFit as before:
>
> NonlinearFit[data, c + a Sin[d + e x], x, {a, c, d,e}]
>
> ***** but this time I get a wildly innacurate result: 6.000165 +
> 0.025086 Sin[0.0080308 - 0.247967 x]
>
> Specifically, the parameters 'a', 'd' and 'e' are all completely in
> error by orders of magnitude.
>
> I tried extending the range of the data to include more cycles of the
> sinusoid, thereby making it more continuous/monotonic but that made no
> difference.
In 5.0 you can use FindFit instead of NonlinearFit. Note that you may
still have to provide a reasonable initial guess for the parameters to
obtain convergence.
Cheers,
Paul
--
Paul Abbott Phone: +61 8 9380 2734
School of Physics, M013 Fax: +61 8 9380 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul
Prev by Date:
**Re: populate a list with random numbers from normaldistribution?**
Next by Date:
**Re: 'NonlinearFit` confusion**
Previous by thread:
**Re: Re: 'NonlinearFit` confusion**
Next by thread:
**How to creat this 8×8 images**
| |