# Exercise 10

## Numerical Differentiation

The following equation can be used to find an approximate derivative of a mathematical function \(f(x)\) if \(h\) is sufficiently small:

\begin{equation} f'(x) \approx \frac{f(x+h)-f(x-h)}{2h} \end{equation}
Write a function `numdiff(f, x, h)`

that returns the approximation of the
derivative of a mathematical function represented by a function
`f(x)`

.

Apply this to differentiate:

- \(f(x) = \left( e^{x} \right)\) at \(x=0\)
- \(f(x) = \left( e^{-2x^{2}} \right)\) at \(x=1\)
- \(f(x) = \left( \cos x \right)\) at \(x = \pi/2\)
- \(f(x) = \left( \ln x \right)\) at \(x=1\)

Use \(h = 0.01\)

In each case write out the error, i.e., the difference between the exact derivative and the result of the approximation. Use 10 decimal places of precision.

If you need help finding out what the exact solutions to these derivatives are, (1) try to remember your calculus!, (2) ask a classmate, (3) google it, or (4) ask me (at which point I will direct you to WolframAlpha).

*hint*: the \(\ln()\) function (logarithm, base \(e\)) is typically called
`log()`

in programming languages like Python, MATLAB / Octave, R and
C, whereas the logarithm, base 10 (typically referred to in math class
as \(\mathrm{log}()\), is typically called `log10()`

.