[Date Index] [Thread Index] [Author Index]
Re: Confusing results with N[expr]?
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