Generalized product rule: Leibniz’s formula

Required math: calculus

Required physics: none

We’ve seen that the product rule for derivatives is, for two functions {f(x)} and {g(x)}:

\displaystyle  (fg)'=f'g+fg' \ \ \ \ \ (1)

This rule can be generalized to give Leibniz’s formula for the {n^{th}} derivative of a product:

\displaystyle  (fg)^{(n)}=\sum_{k=0}^{n}\left(\begin{array}{c} n\\ k \end{array}\right)f^{(k)}g^{(n-k)} \ \ \ \ \ (2)



where the notation {f^{(n)}\equiv d^{n}f/dx^{n}} and {\left(\begin{array}{c} n\\ k \end{array}\right)=\frac{n!}{k!(n-k)!}} is the binomial coefficient.

The proof of this formula is a nice little exercise in proof by mathematical induction. An inductive proof requires two steps. First, we must show that the formula is true for one particular value of {n}, say {n=0}. Second, we assume that the formula is true for a value {n=m}. From this assumption we then must prove that the formula is also true for {n=m+1}. It doesn’t matter what {m} is as long as it is taken to be equal to or greater than the value of {n} used in step 1. The idea is that if we can show that the truth of the formula for a particular value of {n} always implies its truth for the next value of {n}, then as long as we can demonstrate the truth of the formula for some value of {n} (as we do in step 1), the inductive reasoning implies it is true for all {n} greater than or equal to the specific value.

The first step in the proof is called the anchor step and the second step the inductive step.

In our case, taking {n=0} gives us the identity {(fg)^{(0)}=fg} which is clearly true. So now we prove the inductive step. Assuming the formula is true for {n=m} gives us

\displaystyle  (fg)^{(m)}=\sum_{k=0}^{m}\left(\begin{array}{c} m\\ k \end{array}\right)f^{(k)}g^{(m-k)} \ \ \ \ \ (3)

Taking the derivative of this, and applying the regular product rule, gives

\displaystyle  (fg)^{(m+1)}=\sum_{k=0}^{m}\left(\begin{array}{c} m\\ k \end{array}\right)(f^{(k+1)}g^{(m-k)}+f^{(k)}g^{(m-k+1)}) \ \ \ \ \ (4)

In the first term, we can shift the summation index by replacing {k} by {k-1} to get

\displaystyle  (fg)^{(m+1)}=\sum_{k=1}^{m+1}\left(\begin{array}{c} m\\ k-1 \end{array}\right)f^{(k)}g^{(m-k+1)}+\sum_{k=0}^{m}\left(\begin{array}{c} m\\ k \end{array}\right)f^{(k)}g^{(m-k+1)} \ \ \ \ \ (5)

Note the limits on the two sums. We can now combine the sums in the regions where their indexes overlap to get

\displaystyle  (fg)^{(m+1)}=fg^{(m+1)}+\sum_{k=1}^{m}\left[\left(\begin{array}{c} m\\ k-1 \end{array}\right)+\left(\begin{array}{c} m\\ k \end{array}\right)\right]f^{(k)}g^{(m-k+1)}+f^{(m+1)}g \ \ \ \ \ (6)

We can work out the sum of the two binomial coefficients by expanding them in terms of factorials:

\displaystyle  \left(\begin{array}{c} m\\ k-1 \end{array}\right)+\left(\begin{array}{c} m\\ k \end{array}\right)=\frac{m!}{(k-1)!(m-k+1)!}+\frac{m!}{k!(m-k)!} \ \ \ \ \ (7)

Putting over a common denominator:

\displaystyle   \displaystyle  = \displaystyle  \frac{(k)m!}{k!(m-k+1)!}+\frac{(m-k+1)m!}{k!(m-k+1)!}\ \ \ \ \ (8)
\displaystyle  \displaystyle  = \displaystyle  \frac{(m+1)!}{k!(m-k+1)!} \ \ \ \ \ (9)

\displaystyle  =\left(\begin{array}{c} m+1\\ k \end{array}\right) \ \ \ \ \ (10)

Since {\left(\begin{array}{c} m+1\\ 0 \end{array}\right)=\left(\begin{array}{c} m+1\\ m+1 \end{array}\right)=1} we can combine the two outlying terms in 6 to get the final result

\displaystyle  (fg)^{(m+1)}=\sum_{k=0}^{m+1}\left(\begin{array}{c} m+1\\ k \end{array}\right)f^{(k)}g^{(m-k+1)} \ \ \ \ \ (11)

This completes the inductive proof and establishes Leibniz’s formula.

2 thoughts on “Generalized product rule: Leibniz’s formula

  1. Pingback: Associated Legendre functions « Physics tutorials

  2. Pingback: Hermite polynomials – the Rodrigues formula « Physics tutorials

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>