       Re: Re: Confusing results with N[expr]?

```On 20 Nov 2005, at 18:50, Andrzej Kozlowski wrote:

> 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:=
> SetAttributes[f, NumericFunction]
>
> In:=
> N[f[a, b]]
>
> Out=
> f[2., b]
>
> In:=
> N[f[b, a]]
>
> Out=
> f[b, 2.]
>
> So we see no problem. However,  although Power does have the
> attribute NumericFunction:
>
> In:=
> Attributes[Power]
>
> Out=
>
> if we set f above to Power things will no longer work properly with
> the second argument of Power:
>
> In:=
> f = Power;
> In:=
> N[f[a, b]]
>
> Out=
> 2.^b
>
> but
>
> In:=
> N[f[b, a]]
>
> Out=
> 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
>
>

I think I see a few things that were wrong with my post. First, a
minor matter: I mistakenly assumed that the behaviour

N[a] = 2.;

N[f[a]]

f[2.]

would only occur if f had the Attribute NumericFunction. This is of
course not the case. But furthermore, I failed to not the following
special feature of Power:

N[x^2]

x^2

Note that we get a 2 in the exponent and not 2. There is an obvious
reason for this: if this was not the case applying N to a polynomial
would produce a something that was no longer a polynomial! Not that
however

N[x^Pi]

x^3.141592653589793

as one would wish.

So now I am inclined to believe that the behaviour you are seeing is
perhaps related to the fact that N is not applied to the second
argument of Power when that argument is an integer. Still, it looks
like a bug since when you evaluate

N[a] = 2; N[x^a]

It is clear that you are not trying to obtain a numerical polynomial.

Andrzej Kozlowski

```

• Prev by Date: Re: Hardcopy or electronic books?
• Next by Date: How to View Mathematica and Hardcopy Books
• Previous by thread: Re: Confusing results with N[expr]?
• Next by thread: Re: Confusing results with N[expr]?