MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Sums of Functions as Derivative Operators

  • To: mathgroup at
  • Subject: [mg33096] Sums of Functions as Derivative Operators
  • From: "David Park" <djmp at>
  • Date: Fri, 1 Mar 2002 06:53:27 -0500 (EST)
  • Sender: owner-wri-mathgroup at

Dear MathGroup,

I would be interested in any comments on this little piece of Mathematica
and mathematics.

If f and g are functions and a and b are constants, we usually use the rule

(a f + b g)[t] == a f[t] + b g[t]

What about

(a f + b g)'[t] == a f'[t] + b g'[t] ?

What is the easiest method to get Mathematica to make this simplification?
Mathematica won't simplify the above expression (of course, how does it know
that f and g are functions?), but it won't simplify the following either.

(Cos + Sin)'[t]  or even

(Cos[#] & + (Sin[#] &))'[t]

Nor does Through seem to work.

It seems that the way to simplify (a f + b g)'[t] is to actually write

(Function[t, a Function[t, f[t]][t] + b Function[t, g[t]][t]])'[t]
a f'[t] + b g'[t]

But that is certainly quite cumbersome. So I wrote a little routine which
will convert a linear derivative expression to the functional form. You have
to give it a list of symbols which will be regarded as functions.

DerivativeBreakout[functions_List][expr_] :=
    temp =
      expr //. Derivative[args__][a_ + b_] :>
          Derivative[args][Function[t, a[t] + b[t]]];
    temp //.
          a_?(FreeQ[#, Alternatives @@ functions] &) f_?(MemberQ[
                    functions, #] &)] :>
        Derivative[args][Function[t, a f[t]]]

(a f + b g)'[t]// DerivativeBreakout[{f, g}]
a f'[t] + b g'[t]

(Cos + Sin)'[t] // DerivativeBreakout[{Cos, Sin}]
Cos[t] - Sin[t]

Is there a better method for doing this?

David Park
djmp at

  • Prev by Date: boundary problem with NDSolve
  • Next by Date: implementing linear operators
  • Previous by thread: boundary problem with NDSolve
  • Next by thread: Re: Sums of Functions as Derivative Operators