MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Replace not spotting a replacement

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103452] Re: [mg103422] Re: [mg103399] Replace not spotting a replacement
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Mon, 21 Sep 2009 19:29:20 -0400 (EDT)
  • References: <200909201021.GAA24204@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

I suppose I'd do it this way:

Sqrt[2 \[Pi]] \[Tau]^(3/2) /.
   First@Solve[Sqrt[2 \[Pi] \[Tau]] == \[Mu], \[Tau]] // PowerExpand

\[Mu]^3/(2 \[Pi])

Bobby

On Mon, 21 Sep 2009 04:50:56 -0500, <danl at wolfram.com> wrote:

>> Hi Folks,
>>
>> Seems the replace function is being a bit dim here.  This fails:
>>
>> Sqrt[2 \[Pi]] \[Tau]^(3/2) /. Sqrt[ 2 \[Pi] \[Tau]] -> \[Mu]
>>
>> Apologies if this is an FAQ - I couldn't see anything about it.  What  
>> do I
>> need to do here to coerce Mathematica into making this replacement? I
>> tried using the
>> Collect function on tau first, but that didn't seem to work.  I also  
>> tried
>> re-writing the replacement rule as
>>
>> Sqrt[2 \[Pi]] \[Tau]^(3/2) /. Sqrt[ 2 \[Pi] ] t^(1/2) -> \[Mu]
>>
>> But still no joy.
>>
>> Anyone know?
>>
>> Many thanks,
>> David.
>
> It's more of an Occasionally Asked Question. Replacement is working fine;
> the fact is, your expression does not contain \[Tau]^(1/2). Syntactic
> replacement cares about niceties of that sort.
>
> What you want can usually be attained by algebraic replacement. I say
> "usually" because it can be a bit tricky to get the right algebraic
> relation recognized where it is needed. Here is a slight alteration of
> some code from a few years back, that works on your example.
>
> replacementFunction[expr_, rep_, vars_] :=
>  Module[{num = Numerator[expr], den = Denominator[expr],
>    hed = Head[expr], base, expon},
>   If[PolynomialQ[num, vars] &&
>     PolynomialQ[den, vars] && ! NumberQ[den],
>    replacementFunction[num, rep, vars]/
>     replacementFunction[den, rep, vars],
>    If[hed === Power && Length[expr] == 2,
>     base = replacementFunction[expr[[1]], rep, vars];
>     expon = replacementFunction[expr[[2]], rep, vars];
>     PolynomialReduce[base/expon, rep, vars][[2]],
>     If[Head[hed] === Symbol &&
>       MemberQ[Attributes[hed], NumericFunction],
>      Map[replacementFunction[#, rep, vars] &, expr],
>      PolynomialReduce[expr, rep, vars][[2]]]]]]
>
> In[10]:= replacementFunction[Sqrt[2 \[Pi]] \[Tau]^(3/2),
>  Sqrt[2 \[Pi] \[Tau]] - \[Mu], \[Tau]]
>
> Out[10]= \[Mu]^3/(2 \[Pi])
>
> Some day I'll have an epiphany, or at least a minor vision, and see a way
> to code this so that it always just "does the right thing", whatever that
> might be.
>
> Daniel Lichtblau
> Wolfram Research
>
>
>
>


-- 
DrMajorBob at yahoo.com


  • Prev by Date: Failover and high availability
  • Next by Date: Re: Modifying Default Stylesheet?
  • Previous by thread: Re: Replace not spotting a replacement
  • Next by thread: Re: Replace not spotting a replacement