Numerical differentiation: The most common numerical methods for approximating the derivatives of a function are based on interpolation. To approximate the $k^{\text {th }}$ derivative $f^{(k)}\left(x_0\right)$ at a point $x_0$, one replaces the function $f(x)$ by an interpolating polynomial $p_n(x)$ of degree $n \geq k$ based on the nearby points $x_0, \ldots, x_n$ (the point $x_0$ is almost always included as an interpolation point), leading to the approximation $f^{(k)}\left(x_0\right) \approx p_n^{(k)}\left(x_0\right)$. Use this method to construct numerical approximations to (a) $f^{\prime}(x)$ using a quadratic interpolating polynomial based on $x-h, x, x+h$. (b) $f^{\prime \prime}(x)$ with the same quadratic polynomial. (c) $f^{\prime}(x)$ using a quadratic interpolating polynomial based on $x, x+h, x+2 h$. (d) $f^{\prime}(x), f^{\prime \prime}(x), f^{\prime \prime \prime}(x)$ and $f^{(i v)}(x)$ using a quartic interpolating polynomial based on $x-2 h, x-h, x, x+h, x+2 h$. (e) Test your methods by approximating the derivatives of $e^x$ and $\tan x$ at $x=0$ with step sizes $h=\frac{1}{10}, \frac{1}{100}, \frac{1}{1000}, \frac{1}{10000}$. Discuss the accuracies you observe. Can the step size be arbitrarily small? (f) Why do you need $n \geq k$ ?