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