Re: replace all
- To: mathgroup at smc.vnet.net
- Subject: [mg121774] Re: replace all
- From: A Retey <awnl at gmx-topmail.de>
- Date: Sat, 1 Oct 2011 03:08:43 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j63t61$6eg$1@smc.vnet.net>
Am 30.09.2011 10:04, schrieb Richard Cangelosi:
> Can anyone help with a replace all question. I defined a nonlinear
> pde in my notebook
>
> pde = D[ u[z,t], t] - D[ u[z,t], {z,2}] == beta r[ u[z,t] ];
>
> and I would like to do a replace all where I replace u with a
> perturbation series
>
> u[z,t] = u_0 + epsilon u_1[z,t] + O[epsilon]^2
>
> It appears that Mathematica ignores u in the partials and will only
> replace u in the argument of r.
If such replacements don't do what you expect the general rule is to
look at FullForm of the expression:
In[1]:= pde=D[u[z,t],t]-D[u[z,t],{z,2}]==beta r[u[z,t]];
In[2]:= FullForm[pde]
Out[2]//FullForm=
Equal[Plus[Derivative[0,1][u][z,t],Times[-1,Derivative[2,0][u][z,t]]],Times[beta,r[u[z,t]]]]
this is not nice to read, but it makes clear why your replacement
doesn't work: there are no u[z,t] but only Derivatives[___][u][z,t] in
those terms. There is another general trick when you want to replace
functions in an expression that also has derivatives of those functions:
do the replacement without specifying arguments, as here:
pde /. u ->
Function[{z, t},
Subscript[u, 0] + \[Epsilon] Subscript[u, 1][z, t] + O[epsilon]^2]
hth,
albert