Re: ListPlotFit
- To: mathgroup at smc.vnet.net
- Subject: [mg17191] Re: ListPlotFit
- From: Allan Hayes <hay at haystack.demon.co.uk>
- Date: Tue, 20 Apr 1999 01:21:02 -0400
- References: <7fbnsj$957@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Marrten, ListPlotFit[l_, start_:1, stop_] := Module[ {lp, fie, fiep}, lp = ListPlot[l, DisplayFunction -> Identity, PlotStyle -> PointSize[0.015], PlotRange -> All]; fie = Fit[l[[Table[j, {j, start, stop}]]], {1, x}, x]; fiep = Plot[fie, {x, 1, Length[l]}, DisplayFunction -> Identity]; Show[lp, fiep, DisplayFunction -> $DisplayFunction] ] ListPlotFit[l_, start_:1]:= ListPlotFit[l, start, Length[l]] Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 <Maarten.vanderBurgt at icos.be> wrote in message news:7fbnsj$957 at smc.vnet.net... > Hello, > > > With the function ListPlotFit below I combine ListPlot with Fit and Plot in > order to show the data from list l together with the straight line fitted > through a part of the data points from list l. The list l is of form > {{x1,y1},{x2,y2}, ...}. > > The part of the data points I want to fit a line through is determined by > start and stop. The default value for the optional argument stop is 10. > This is not really what I want: I want the default value for stop to be > stop = Length[l]. How can I achieve this? > > I tried ListPlotFit[l_, start_:1, stop_:Hold[Lenght[l]] := Module[{},stop = > ReleaseHold[stop];...], but this did not work (I get an error: "Hold is > Protected..."). I think I need Hold or something of the sort otherwise > Lenght[l] gets evaluated to 1 immediately. > > I guess I can phrase my question more general: how do I define a function F > with an optional argument v which has as default value a function g of a > non-optional argument u (i.e. F[u_, v_:g[u]])? > > > In[1]:= ListPlotFit[l_, start_:1, stop_:10] := > Module[ > {lp, fie, fiep}, > lp = ListPlot[l, DisplayFunction -> Identity, PlotStyle -> > PointSize[0.015], PlotRange -> All]; > fie = Fit[l[[Table[j, {j, start, stop}]]], {1, x}, x]; > fiep = Plot[fie, {x, 1, Length[l]}, DisplayFunction -> Identity]; > Show[lp, fiep, DisplayFunction -> $DisplayFunction] > ] > > In[2]:= dat= Table[{i,3*i^2+5+2*(Random[]-0.5)},{i,1,15}]; > In[3]:= ListPlotFit[dat, 2, 12]; > > > Any help is greatly appreciated > thanks > > Maarten > > > _______________________________________________________________ > > Maarten van der Burgt > R&D Department > > ICOS Vision Systems > Esperantolaan 9 > B-3001 Leuven, Belgium > tel. + 32 16 398220; direct + 32 16 398316; fax. + 32 16 400067 > e-mail: maarten.vanderburgt at icos.be > _______________________________________________________________ > > > > >