Re: Perplexed by the behavior of NonlinearFit in Mathematica ver 4.2 vs 5.1

• To: mathgroup at smc.vnet.net
• Subject: [mg54303] Re: Perplexed by the behavior of NonlinearFit in Mathematica ver 4.2 vs 5.1
• From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
• Date: Wed, 16 Feb 2005 14:36:34 -0500 (EST)
• Organization: Uni Leipzig
• References: <cup61t\$dvj\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

you mean

<< "Statistics`"
<< "Graphics`"

Clear[nlr]
pop = {1650, 1750, 1860,
2070, 2300, 2560, 3040,
3710, 4450, 5280, 6080};
nlr[t_] = NonlinearFit[pop,
E^(theta*t)*k, {t},
{theta, k}]

Table[nlr[t], {t, 0, 3}]
Table[Evaluate[nlr[t]],
{t, 0, 3}]
Table[nlr[t] /. t -> i,
{i, 0, 3}]

where nrl[] is define without the SetDelayed[], otherwise

the nonlinear fit is performed for every new t-value, if it is a

numeric value like nlr[4] you can't use it in NonlinearFit[] because it is
not

a valid variable.

Regards

Jens

"G Ellis" <ellisg at rogers.com> schrieb im Newsbeitrag
news:cup61t\$dvj\$1 at smc.vnet.net...
> Please note that my questions are at the end of this Post.  What
> follows is some necessary background:
>
> I include below a NonlinearFit function ("nlr[t]"), which I created in
> ver 4.2 of Mathematica.  It is VERY simple.  I plotted the function
> and the graph was what I expected. However, I never looked at
> tabulated results of the function and therefore I did not notice a
> peculiar issue with my syntax.    It was only when I ran the code in
> ver 5.1 that I saw the odd output.  (The code below includes
> tabulations that I created after I noticed the different behavior
> between ver 4.2 and ver 5.)
>
> In ver 4.2 Mathematica does not "complain" about the function "nlr[t]"
> in the following.  It appears to plot the result correctly; but it
> returns different "Table" results without and with "Evaluate".  I
> believe the correct results are those returned with "Evaluate" or the
> use of the "ReplaceAll" function.
>
> In[1]:=
> << "Statistics`"
> << "Graphics`"
> In[3]:=
> \$Version
> Out[3]=
> "4.2 for Microsoft Windows \
> (June 5, 2002)"
> In[4]:=
> pop = {1650, 1750, 1860,
>    2070, 2300, 2560, 3040,
>    3710, 4450, 5280, 6080};
> nlr[t_] := NonlinearFit[pop,
>   E^(theta*t)*k, {t},
>   {theta, k}]
> t1 = Table[nlr[t], {t, 0, 3}]
> t1 = Table[Evaluate[nlr[t]],
>   {t, 0, 3}]
> t2 = Table[nlr[t] /. t -> i,
>   {i, 0, 3}]
> Out[6]=
> {537.6363636363639,
>  3158.987930628625,
>  1531.0837992793613,
>  1782.0476907177406}
> Out[7]=
> {1130.2076401682348,
>  1315.4628872314652,
>  1531.0837992793613,
>  1782.0476907177406}
> Out[8]=
> {1130.2076401682348,
>  1315.4628872314652,
>  1531.0837992793613,
>  1782.0476907177406}
>
> p1 = Plot[nlr[t], {t, 0, 11}, PlotStyle -> IndianRed];
> p2 = Plot[nlr[t] /. t -> i, {i, 0, 11},
>    PlotStyle -> EmeraldGreen];
>
> In ver 5.1, Mathematica will not let me evaluate "nlr[t]" directly.
> (This is good, I think).  It forces the use of "Evaluate".
>
> \$Version
> "5.1 for Microsoft Windows \
> (October 25, 2004)"
> pop = {1650, 1750, 1860,
>    2070, 2300, 2560, 3040,
>    3710, 4450, 5280, 6080};
> nlr[t_] := NonlinearFit[pop,
>   E^(theta*t)*k, {t},
>   {theta, k}]
> Table[nlr[t], {t, 0, 3}]
> Table[Evaluate[nlr[t]],
>  {t, 0, 3}]
> Table[nlr[t] /. t -> i,
>  {i, 0, 3}]
> \!\(\*
>  RowBox[{\(General::"ivar"\),
>    ":", "\<\"\\!\\(0\\) is not a valid variable.
> \\!\\(\\*ButtonBox[\\\"More\
> ButtonFrame->None, \
> ButtonData:>\\\"General::ivar\\\"]\\)\"\>"}]\)
> NonlinearFit::fitfail:The fitting algorithm failed.
> \!\(\*
>  RowBox[{\(General::"ivar"\),
>    ":", "\<\"\\!\\(1\\) is not a valid variable.
> \\!\\(\\*ButtonBox[\\\"More\
> ButtonFrame->None, \
> ButtonData:>\\\"General::ivar\\\"]\\)\"\>"}]\)
> NonlinearFit::fitfail:The fitting algorithm failed.
> \!\(\*
>  RowBox[{\(General::"ivar"\),
>    ":", "\<\"\\!\\(2\\) is not a valid variable.
> \\!\\(\\*ButtonBox[\\\"More\
> ButtonFrame->None, \
> ButtonData:>\\\"General::ivar\\\"]\\)\"\>"}]\)
> \!\(\*
>  RowBox[{\(General::"stop"\),
>    ":", "\<\"Further output of \\!\\(General :: \\\"ivar\\\"\\) will
> be \
> suppressed during this calculation. \
> \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\",
> \\\", ButtonFrame->None,
> ButtonData:>\\\"General::stop\\\"]\\)\"\>"}]\)
> NonlinearFit::fitfail:The fitting algorithm failed.
> \!\(\*
>  RowBox[{\(General::"stop"\),
>    ":", "\<\"Further output of \\!\\(NonlinearFit ::
> \\\"fitfail\\\"\\) will \
> be suppressed during this calculation.
> \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\
> ButtonData:>\\\"General::stop\\\"]\\)\"\>"}]\)
> {NonlinearFit[{1650, 1750,
>    1860, 2070, 2300, 2560,
>    3040, 3710, 4450, 5280,
>    6080}, k, {0},
>   {theta, k}], NonlinearFit[
>   {1650, 1750, 1860, 2070,
>    2300, 2560, 3040, 3710,
>    4450, 5280, 6080},
>   E^theta*k, {1},
>   {theta, k}], NonlinearFit[
>   {1650, 1750, 1860, 2070,
>    2300, 2560, 3040, 3710,
>    4450, 5280, 6080},
>   E^(2*theta)*k, {2},
>   {theta, k}], NonlinearFit[
>   {1650, 1750, 1860, 2070,
>    2300, 2560, 3040, 3710,
>    4450, 5280, 6080},
>   E^(3*theta)*k, {3},
>   {theta, k}]}
> {1130.2091592378029,
>  1315.4644493997696,
>  1531.0853778619419,
>  1782.049249124357}
> {1130.2091592378029,
>  1315.4644493997696,
>  1531.0853778619419,
>  1782.049249124357}
>
> So my questions are:
>
> 1)Why does "nlr[t]" appear to work in ver 4.2; but return apparently
> invalid results for zero and one, but correct results for higher
> values?
>
> 2) Why, in ver 4.2, does "Plot" return the (apparently) correct values
> with "nlr[t]" without the need for "Evaluate"; whereas "Table" does
> not?
>
> 3)  What changed between versions 4.2 and 5?
>

```

• Prev by Date: Re: Quite Upset with NIntegrate
• Next by Date: Re: Re: Using Select with arrays? (Relative newbie)
• Previous by thread: Perplexed by the behavior of NonlinearFit in Mathematica ver 4.2 vs 5.1
• Next by thread: Re: Perplexed by the behavior of NonlinearFit in Mathematica ver 4.2 vs 5.1