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
- References:
- Replace in an elegant way
- From: Mirko <dashiell@web.de>
- Replace in an elegant way