Re: Getting the Derivative of an HoldForm Expression

*To*: mathgroup at smc.vnet.net*Subject*: [mg127837] Re: Getting the Derivative of an HoldForm Expression*From*: David Bailey <dave at removedbailey.co.uk>*Date*: Sat, 25 Aug 2012 04:28:01 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-newout@smc.vnet.net*Delivered-to*: mathgroup-newsend@smc.vnet.net*References*: <k16jfv$bep$1@smc.vnet.net>

On 24/08/2012 01:56, nitgun at gmail.com wrote: > Hi, > am currently fiddling with some equations. To make it more easy I want to introduce subexpressions which should not be evaluated. For this purpose I found HoldForm. But this creates some weird results when I want to get the derivative of such a term. But let's have a look at an example: > In1:=T=HoldForm[2*a[t]] > Out1=2 a[t] > > In2:= a[t]=b[t]+c[t] > Out2=b[t]+c[t] > > In3:=T > Out3=2 a[t]<-- this is what I need HoldForm for, as I do not want 2(b[t]+c[t]) as result > > In4:=D[T,t] > Out4=2 a'[t] HoldForm'[2(b[t]+c[t])] > > I would expect 2 a'[t] as result so the term HoldForm'[...] seems to be a bit weird to me. Can anyone explain to me how I can avoid this term? > Thanks in advance. > The simplest answer, is not to use HoldForm for this purpose, and not to make assignments such as a[t]=b[t]+c[t] unless you really want them to be used everywhere! Now you can take your derivative of T quite easily. Then, if you want to replace a[t] in the resultant expression, use expr /. a[t_]->b[t]+c[t] Note I have used a pattern here, so that an expression like a[2 k] would also get replaced. I often find it is convenient to collect replacement rules in a list, and then just apply the whole set at various points in a calculation. For example: constants={c->299792.0,em->9.1*10^-31, etc etc} expr=expr/.constants David Bailey http://www.dbaileyconsultancy.co.uk