Re: Confusing results with N[expr]?
- To: mathgroup at smc.vnet.net
- Subject: [mg62361] Re: Confusing results with N[expr]?
- From: Peter Pein <petsie at dordos.net>
- Date: Tue, 22 Nov 2005 04:42:02 -0500 (EST)
- References: <dlp320$1bs$1@smc.vnet.net> <dls4su$mlh$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Peter Pein schrieb: > Thomas Bohl schrieb: >> 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. >> >> > Hi Thomas, > > that's really strange. The reason seems to be Power[]: > > N /@ k > > z^(6.283185307179586*x) > > but when I tried > > Unprotect[Power]; > Power /: N[p_Power] := N /@ p; > Protect[Power]; > > the kernel died at the evaluation of N[k]. > > The best I have to offer is in the moment: > > 1.) use "N //@ expr" to evaluate a in Exp[Exp[a Pi]] > or > 2.) > Unprotect[Power]; > Power /: N[(x_)^(y_)] := Pow$[N[x], N[y]]; > Protect[Power]; > $Post = #1 /. Pow$ -> Power & ; > > Regards, > Peter > Andrzeij pointed out that Solve[N[x2 - 1 == 0], x] and even Plot[1,{x,0,1}] do not work any more as expected when using "2.)" above. Well it seems, I tried to cure a mosquito bite by amputation... I am sorry, Peter