Re: Using Fit to interpolate data
- To: mathgroup at smc.vnet.net
- Subject: [mg127447] Re: Using Fit to interpolate data
- From: "Kevin J. McCann" <kjm at KevinMcCann.com>
- Date: Wed, 25 Jul 2012 02:34:36 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <jullkd$ptc$1@smc.vnet.net>
Kris, This is a follow up to my earlier post. If you do a plot of {x,Log[y]} of your data. You will see a very good fit to a straight line (if you drop the first point). This suggests that you do a nonlinear fit to an exponential or a linear fit to the log. Kevin fiberDataDensitiesFeierabend = {{16, 0}, {10.7, 0.11}, {10.4, 0.19}, {9.77, 0.41}, {8.29, 3.05}, {7.14, 19.86}}; data2 = ({#[[1]], Log[#[[2]]]} &) /@ fiberDataDensitiesFeierabend data2 = Drop[data2, 1] p1 = ListPlot[data2, PlotRange -> All] f[x_] = Fit[data2, {1, x}, x] p2 = Plot[f[x], {x, 7, 11}, Epilog -> p1[[1]]] On 7/24/2012 4:16 AM, Kris Carlson wrote: > Hi, > > Can someone enlighten me about how to fit a curve to data? These data are > of the density of axons of given diameters in the spinal cord. The density > of smaller fibers is dramatically larger than that of larger fibers. There > cannot be density < 0 of any diameter, so heuristically to prevent a fit > yielding an equation that dips below 0 I added an end point with fiber > diameter = 16 that is 0. Then using Fit I try to increase the exponent of x > until the curve doesn't yield negative values. The fit looks good in large > scale but when I plot the region of greatest interest, 8 < x < 14, it no > longer looks so good. Maybe I am simply ignorant about fitting a curve to > somewhat irregular data? Or can it be done? > > Thank you. > > Kris > > fiberDataDensitiesFeierabend = {{16, 0}, {10.7, 0.11}, {10.4, > 0.19}, {9.77, 0.41}, {8.29, 3.05}, {7.14, 19.86}}; > > fbddPlot = > ListPlot[fiberDataDensitiesFeierabend, > PlotMarkers -> {Automatic, Medium}] > > fbddFit = Fit[fiberDataDensitiesFeierabend, {1, x, x^-13}, x] > > Show[Plot[fbddFit, {x, 4, 20}, > PlotRange -> {{4.5, 20}, {-0.5, 25}}], fbddPlot] > > Show[Plot[fbddFit, {x, 4, 28}, > PlotRange -> {{8, 16}, {-0.5, 1}}], fbddPlot] > >