Re: N[] does not work inside Replace[] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg53202] Re: [mg53185] N[] does not work inside Replace[] ?
- From: DrBob <drbob at bigfoot.com>
- Date: Tue, 28 Dec 2004 23:12:28 -0500 (EST)
- References: <200412241059.FAA05903@smc.vnet.net> <200412271141.GAA12681@smc.vnet.net> <200412281130.GAA26995@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
It's just the difference between Rule and RuleDelayed. Observe: (inputs) N[y] Rule[x_,y_]->Rule[x,N[y]] (outputs) y (x_ -> y_) -> x -> y The right hand side of Rule is evaluated immediately, before it's applied to any expression, so N goes away. Both of these approaches work, however: (inputs) s = a -> 10/3; s /. Rule[x_, y_] :> Rule[x, N[y]] N@s (outputs) a -> 3.33333 a -> 3.33333 Bobby On Tue, 28 Dec 2004 06:30:32 -0500 (EST), yehuda ben-shimol <benshimo at bgu.ac.il> wrote: > Hi, > I just found a small but annoying problem with operating N[] inside a > replace rule > s was actually part of an answer I got from Solve[] and I wanted to > leave the Rule, but change the right hand side to a machine real number. > A reduced form of the problem is given below. I'm using version 5.0.0 > (ver 5.1 is on the way ... ) > > s = Rule[a, 10/3] > and the output is > a->10/3 > > case 1: > now use a replace rule with N[] > s /. Rule[x_, y_] -> Rule[x, N[y]] > and the result is still a->10/3 > > case 2: > using some other header in place of N[] > s /. Rule[x_, y_] -> Rule[x, g[y]] > and the results is as expected > a->g[10/3] > > Trying to convert the second argument to a machine real number in > different way > > case 3: > s /. Rule[x_, y_] -> Rule[x, 1. y] > results with > a -> 3.33333 > as expected. > > > Using Trace[] for the three cases reveals that N[y] is replaced by y > very early in the evaluation process, so it explains this unexpected > behavior. > > I tried then a simpler example > b=Range[5]/3 > and then tried the same replacement idea > b/.x_Rational->N[x] > and still the results leave the rational numbers unchanged > > but with the b/.x_Rational->g[x] or b/.x_Rational->1.0 * x Mathematica > works as expected. > > So, again, is this a bug? If it is so in version 5.0.0, does it still > exists in version 5.1? > > Thanks in advanced > yehuda > > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Mathematica language issues
- From: Maxim <ab_def@prontomail.com>
- Re: Mathematica language issues
- From: DrBob <drbob@bigfoot.com>
- N[] does not work inside Replace[] ?
- From: yehuda ben-shimol <benshimo@bgu.ac.il>
- Mathematica language issues