Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Replace in an elegant way

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122872] Re: Replace in an elegant way
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sun, 13 Nov 2011 07:18:20 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201111130943.EAA29993@smc.vnet.net>

On 13 Nov 2011, at 10:43, Mirko 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[1][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).


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[1][theta][m])/
       lambda))


 expr /. (f : Except[theta | Derivative[1][theta]])[a___, m, b___] :>
   f[a, u, b]

(theta[m] + 1)^2/(1 - u) -
 lambda*((u*Derivative[1][theta][m])/lambda +
        ((theta[m] + 1)*(-(lambda*theta[m]) + theta[m] +
         1)*(lambda*(-m) + lambda + u))/(1 - u) +
        theta[m])


Andrzej Kozlowski




  • Prev by Date: Re: 2D Plot for a face of a 3D plot box?
  • Next by Date: Re: Replace in an elegant way
  • Previous by thread: Replace in an elegant way
  • Next by thread: Re: Replace in an elegant way