# How do I evaluate several n-th derivatives of a function at one point?

I have a question where I have to compute a Table containing $f^{(n)}(0)$ for n = 1, ..., 5, where $f^{(n)}$ denotes the $n$th derivative of $f$.

For the function $f(x)=x\mathrm{e}^{-x}$, I have:

f[x_]:=xe^-x
Table[D[f[x],{x,n}],{n,1,5}]//TableForm


How can I solve for the value of each derivative at 0?

Since Vitaliy already answered the question, I'll just add another answer to confuse you. To get the general form of the $n$-th derivative, you could use the properties of the Taylor series as follows:

Clear[n];
c[n_] = FullSimplify[SeriesCoefficient[n! x Exp[-x], {x, 0, n}],
n >= 0]


$\begin{cases} -(-1)^n n & n\geq 1 \\ 0 & \text{True} \end{cases}$

This is the $n$-th coefficient in the series expansion of your function around $x = 0$ (with the factorial $n!$ canceled). It is the thing you're supposed to tabulate. To verify this, here is the table explicitly:

Array[c, {5}] // TableForm


$\begin{array}{c} 1 \\ -2 \\ 3 \\ -4 \\ 5 \\\end{array}$

The nice thing about c[n] is of course that you no longer need to make such tables if you have a closed form for the derivatives. If you do want to make tables, though, then c[n] allows you to do this at very high speed because the definition c[n_] = ... using Set (the = sign) caused the right-hand side to be evaluated once and for all, so it doesn't have to be repeated every time you change n.

• Nice touch ;) +1 Commented Dec 12, 2012 at 18:09

You have 2 typos. No space in xe and use capital E not e - or better Exp[x]

You have nicely behaving functions, so this would work:

f[x_] := x Exp[-x]
Table[D[f[x], {x, n}] /. x -> 0, {n, 1, 5}]


{1, -2, 3, -4, 5}

But this is dangerous and it is better to use this:

f[x_] := x Exp[-x]
Table[Limit[D[f[x], {x, n}], x -> 0], {n, 1, 5}]


{1, -2, 3, -4, 5}

To illustrate, imagine you have other function:

f[x_] := SinIntegral[x]
Table[D[f[x], {x, n}], {n, 1, 5}] // FullSimplify // Column


Using /.x- > 0 will now give error due to x in denominator, while Limit is fine:

f[x_] := SinIntegral[x]
Table[Limit[D[f[x], {x, n}], x -> 0], {n, 1, 5}]


{1, 0, -(1/3), 0, 1/5}

• Okay thank you, makes sense adding the limit. Commented Dec 12, 2012 at 5:52
• (+1) I hope we're not giving away anything that was in some homework problem...
– Jens
Commented Dec 12, 2012 at 6:29
• Finding a derivative at 0 by taking the limit as x -> 0 in the "general" formulate for the derivative can be dangerous: a function may be differentiable at a point yet that derivative need not be continuous there. Commented Dec 12, 2012 at 16:46
• @murray Evaluation via substitution will go wrong in presence of a removable singularity. Evaluation via limit might go wrong in presence of a discontinuity in the derivative. The latter will, most often, be the less serious mistake. The best to be said for the blind substitution approach is one can try to trap for Indeterminate and switch to a limit. of course if you have (explicit zero)/(hiddfen zero) then the trap fails (Limit can also miss such things but is less likely to do so). Commented Dec 12, 2012 at 19:32
• NestList[D[#, x] &, f[x], n] will avoid internally recomputing lower derivatives. Commented Dec 12, 2012 at 19:32

Finally, this is supported by V11.1:

http://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn111.html

\$Version
f[x_] := x E^-x
D[f[x], {x, n}]


• I think you should show just the output of D[f[x], {x, n}]. Commented Mar 10, 2017 at 15:51
• @CarlWoll Oh you're right. I was too excited... Commented Mar 10, 2017 at 15:53

There is another approach that sometimes works better (gives closed-form expressions rather than recurrence relations):

In[1]:= InverseFourierTransform[(-I k)^n FourierTransform[1/(1 + x^2)^Log[2], x, k] , k, x]
Out[1]= (2^(-1 + n - 1/2 Log[1/x^2])
Abs[x]^-Log[2] ((-I)^
n ((1 + n) x Gamma[(1 + n)/2] Gamma[
n/2 + Log[2]] Hypergeometric2F1[(1 + n)/2, n/2 + Log[2], 1/
2, -x^2] (n + Log[4]) -
2 I Gamma[1 + n/2] Gamma[
1/2 (1 + n + Log[4])] ((1 + x^2) Hypergeometric2F1[(2 + n)/
2, 1/2 (1 + n + Log[4]), -(1/2), -x^2] -
Hypergeometric2F1[(2 + n)/2, 1/2 (1 + n + Log[4]), 1/
2, -x^2] (1 + x^2 (3 + 2 n + Log[4])))) +
I^n ((1 + n) x Gamma[(1 + n)/2] Gamma[
n/2 + Log[2]] Hypergeometric2F1[(1 + n)/2, n/2 + Log[2], 1/
2, -x^2] (n + Log[4]) +
2 I Gamma[1 + n/2] Gamma[
1/2 (1 + n + Log[4])] ((1 + x^2) Hypergeometric2F1[(2 + n)/
2, 1/2 (1 + n + Log[4]), -(1/2), -x^2] -
Hypergeometric2F1[(2 + n)/2, 1/2 (1 + n + Log[4]), 1/
2, -x^2] (1 + x^2 (3 + 2 n + Log[4]))))))/((1 + n)
Sqrt[Pi] x Gamma[Log[2]] (n + Log[4]))


It also can be used to find repeated anti-derivatives.

• This does work, but only if the function decays fast enough to infinity. I don't think it will work for any kind of polynomials. E.g., try x^2: you get indeterminate errors (with n=1).
– Jens
Commented May 9, 2013 at 6:04
• You can use x^2 UnitBox[a x] to workaround this. This approach only sometimes works better. In many cases it is not able to find the transform. Commented May 9, 2013 at 16:55
• BTW, there is another cool use for this method: to prove that the Dirac delta function is the limit of the sinc function, one can do this: InverseFourierTransform[ Limit[ FourierTransform[Sin[\[Omega] t]/(\[Pi] \[Omega]),\[Omega],\[Tau]], t->\[Infinity]], \[Tau],\[Omega]] (I actually don't know any better way of getting that result in Mathematica because of the conservative way DiracDelta is defined).
– Jens
Commented May 9, 2013 at 17:41