       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:=
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

```

• Prev by Date: Re: Types in Mathematica
• Next by Date: Re: Newbie with simple questions (take 2)
• Previous by thread: Confusing results with N[expr]?
• Next by thread: Re: Re: Confusing results with N[expr]?