Re: Confusing results with N[expr]?
- To: mathgroup at smc.vnet.net
- Subject: [mg62328] Re: [mg62318] Confusing results with N[expr]?
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 20 Nov 2005 04:50:32 -0500 (EST)
- References: <200511200419.XAA28539@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 20 Nov 2005, at 13:19, Thomas Bohl wrote: > I have the impression that since some time (since Vers. 5.0?) N > [expr] does > not give anymore the results I expect. > > The following code should illustrate this: > > N[a] = 2.; > > k = z*(a*Pi); > N[k] >> 6.28319 z (* "a" and "Pi" are replaced by their numerical >> value as >> expected *) > > k = z^(a*Pi) > N[k] >> z^(3.14159 a) (* "Pi" is replaced by its numerical value but >> not "a", >> why not? *) > > > There are more examples of this behaviour: If the expression is Log > [z*a*Pi], > the numerical values of "a" and "Pi" are evaluated, if the > expression is > Exp[z*a*Pi] the numerical value of "a" is not evaluated. Why not? > > The motivation behind my question is that I was used to write > expressions > symbolically and assign numerical values with N[expr] = num. value. > This way > you could keep those expressions symbolically and just apply //N > when you > needed numerical values. Now it seems that I have lost this > possibility. > > Could you please comment my observation and maybe suggest a way out? > > Thank you very much for any idea. > > Kind regards, > Thomas. > > I don't remember if it used to be different before version 5, but it looks to me like a bug that affects the second argument in Power. For a general function f everything works as expected. First, let's define an NValue for the symbol a, just as you have been doing: N[a] = 2.; Now, let's assign to a general function f the attribute NumericFunction: In[2]:= SetAttributes[f, NumericFunction] In[3]:= N[f[a, b]] Out[3]= f[2., b] In[4]:= N[f[b, a]] Out[4]= f[b, 2.] So we see no problem. However, although Power does have the attribute NumericFunction: In[5]:= Attributes[Power] Out[5]= {Listable,NumericFunction,OneIdentity,Protected,ReadProtected} if we set f above to Power things will no longer work properly with the second argument of Power: In[6]:= f = Power; In[7]:= N[f[a, b]] Out[7]= 2.^b but In[8]:= N[f[b, a]] Out[8]= b^a So it looks like a bug to me. Curiously, if you set NumericQ[a] = True; you own example will now work as expected: N[z^(a*Pi)] z^6.283185307179586 but if you omit Pi it again does not work: N[z^a] z^a There is a very simple workaround for the problem; instead of just using N use MapAll[N, ]: MapAll[N,z^a] z^2. If your expressions are very complicated there may be a noticeable loss of performance, but in simple cases like the above everything is instantaneous. Andrzej Kozlowski
- Follow-Ups:
- Re: Re: Confusing results with N[expr]?
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Re: Confusing results with N[expr]?
- References:
- Confusing results with N[expr]?
- From: "Thomas Bohl" <Thomas.Bohl@cern.ch>
- Confusing results with N[expr]?