Re: Question about changing variables in PDEs
- To: mathgroup <mathgroup at yoda.physics.unc.edu>
- Subject: Re: Question about changing variables in PDEs
- From: amrhein <amrhein at math.ethz.ch>
- Date: Wed, 28 Oct 1992 09:22:07 +0100
-----------------
> I have a system of PDE's in in three dependent and two independent
> variables. For example:
> { Dt[f,x] + f Dt[g,t] - f g,
Dt[f,x,t] - Dt[h,x]^2,
Dt[g,x] + Dt[h,t]}
> In[1]:= d = Dt[f,x] + Dt[g,x]
> Out[1]= Dt[f, x] + Dt[g, x]
> In[2]:= d /. Dt[y_,x] -> Dt[y,r]
> Out[2]= Dt[f, x] + Dt[g, x]
---------------------------
The reason why this rule doesn't work is, that the expressions have totaly
different FullForms.
e.g.
FullForm[ Dt[f,x]]
//FullForm= Dt[f, x]
FullForm[ Dt[f,x_]]
//FullForm= Dt[f, Pattern[x, Blank[]]]
FullForm[ Dt[f_,x_]]
Times[Dt[x, y], Derivative[1, 0][Pattern][x, Blank[]]]
FullForm[ Dt[f,x_]]
//FullForm=
> Times[Dt[f, Pattern[x, Blank[]]], Derivative[1, 0][Pattern][f, Blank[]]]
One possible way to make Mathematica match the pattern, is the following:
Dt[f,x] + Dt[g, x] /. g_[u_,x] :> T[u,x] //. T[u_,x] :> T[u,r] //.
T[u_,v_] :> Dt[u,v]
After having changed the heads of the expresstions, Mathematica doesn't
evaluate Dt[f_,x].
In[1]:= { Dt[f,x] + f Dt[g,t] - f g,
Dt[f,x] - Dt[h,x]^2,
Dt[g,x] + Dt[h,x]};
In[2]:= % /. g_[u_,x] :> T[u,x] //. T[u_,x] :> T[u,r] //.
T[u_,v_] :> Dt[u,v]
2
Out[2]= {-(f g) + Dt[f, r] + f Dt[g, t], Dt[f, r] - Dt[h, r] ,
> Dt[g, r] + Dt[h, r]}