       Re: Replace in an elegant way

• To: mathgroup at smc.vnet.net
• Subject: [mg122921] Re: Replace in an elegant way
• From: "Dr. Wolfgang Hintze" <weh at snafu.de>
• Date: Wed, 16 Nov 2011 04:45:52 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <201111130943.EAA29993@smc.vnet.net> <j9oett\$1lp\$1@smc.vnet.net> <j9r0pt\$bjr\$1@smc.vnet.net>

```Peter,

I like this one most.

I wanted to do something with FreeQ but I didn't find the construct.

Regards,
Wolfgang

"Peter Pein" <petsie at dordos.net> schrieb im Newsbeitrag
news:j9r0pt\$bjr\$1 at smc.vnet.net...
> Am 13.11.2011 13:58, schrieb Bob Hanlon:
>> You don't need to use multiple RepaceRepeated just ReplaceAll; and
>> replacing dd with m does not require multiple special handling cases
>>
>> expr = ((1 + theta[m])^2)/(1 - m) - lambda*
>>      ((theta[m] + ((lambda + m - lambda*m)*(1 + theta[m])*
>>            (1 + theta[m] - lambda*theta[m]))/(1 - m) +
>>         (m*Derivative[theta][m])/lambda));
>>
>>
>> expr2 = expr //.
>>         Derivative[y_][theta][m] ->  Derivative[y][theta][dd] //.
>>              theta[m] ->  theta[dd] /. m ->  qq //.
>>      Derivative[y_][theta][dd] ->  Derivative[y][theta][m] //.
>>     theta[dd] ->  theta[m];
>>
>> Streamlined
>>
>> expr3 = expr /.
>>      {Derivative[y_][theta][m] ->  Derivative[y][theta][dd],
>>       theta[m] ->  theta[dd], m ->  qq} /. dd ->  m;
>>
>> More compactly
>>
>> expr4 = expr /.
>>      {theta'[m] ->  theta'[dd], theta[m] ->  theta[dd],
>>       m ->  qq} /.dd ->  m;
>>
>> expr2 == expr3 == expr4
>>
>> True
>>
>>
>> Bob Hanlon
>>
>>
>> On Sun, Nov 13, 2011 at 4:43 AM, Mirko<dashiell at web.de>  wrote:
>>> Hi all,
>>> I have following equation:
>>>
>>> ((1 + theta[m])^2)/(1 - m) - lambda*((theta[m] + ((lambda + m -
>>> lambda*m)*(1 + theta[m])*(1 + theta[m] - lambda*theta[m]))/(1 - m)
>>> +
>>>      (m*Derivative[theta][m])/lambda))
>>>
>>> I want to replace all m that are not an argument of theta[m] or the
>>> Derivative. However, if I use
>>> /., it replaces all m. If I use Replace[expr,m->qq] it doesn't
>>> replace anything. (qq is the one I want to replace with). If I
>>> specify any level, it doesn't change anything, unless I use -1, but
>>> then I replace everything.
>>>
>>> Do you know how I solve this problem?
>>> Right now I use:
>>> //. Derivative[y_][theta][m] ->  Derivative[y][theta][dd] //.
>>>     theta[m] ->  theta[dd] /. m ->  qq //.
>>>   Derivative[y_][theta][dd] ->  Derivative[y][theta][m] //.
>>>   theta[dd] ->  theta[m]
>>>
>>> but this is not elegant at all (and takes slightly longer).
>>>
>>
>
> It's a matter of taste.
>
> I like:
> expr //. f_[a___, m, b___] /; FreeQ[f, theta] :> f[a, qq, b]
>
> Peter
>

```

• Prev by Date: Re: Keeping track of variables used in Mathematica
• Next by Date: Re: How to find more solutions for an periodical equation with infinity solutions
• Previous by thread: Re: Replace in an elegant way
• Next by thread: Re: Replace in an elegant way