# Numerical Differentiation Finding a derivative of tabular data can be done using a finite difference. Here we essentially pick two points on a function or a set of data points and calculate the slope from there. Let's imagine a domain $x$ as a vector such that $\vec{x}$ = $\pmatrix{x_0, x_1, x_2, ...}$. Then we can use the following methods to approximate derivatives ## Forward Difference Uses the point at which we want to find the derivative and a point forwards on the line. $$ f'(x_i) = \frac{f(x_{i+1})-f(x_i)}{x_{i+1}-x_i} $$ *Hint: Consider what happens at the last point.* ```python import numpy as np import matplotlib.pyplot as plt # Initiate vectors x = np.linspace(0, 2, 100) y = 34 * np.exp(3 * x) dydx = (y[1:] - y[:-1]) / (x[1:] - x[:-1]) # Plot the function plt.plot(x, y, label=r'$y(x)$') plt.plot(x, dydx, label=b'$/frac{dy}{dx}$') plt.xlabel('x') plt.ylabel('y') plt.title('Plot of $34e^{3x}$') plt.grid(True) plt.legend() plt.show() ``` ## Backwards Difference Uses the point at which we want to find $$ f'(x_i) = \frac{f(x_{i})-f(x_{i-1})}{x_i - x_{i-1}} $$ ```python import numpy as np import matplotlib.pyplot as plt # Initiate vectors x = np.linspace(0, 2, 100) y = 34 * np.exp(3 * x) dydx = (y[1:] - y[:-1]) / (x[1:] - x[:-1]) # Plot the function plt.plot(x, y, label=r'$y(x)$') plt.plot(x, dydx, label=b'$/frac{dy}{dx}$') plt.xlabel('x') plt.ylabel('y') plt.title('Plot of $34e^{3x}$') plt.grid(True) plt.legend() plt.show() ``` ## Central Difference $$ f'(x_i) = \frac{f(x_{i+1})-f(x_{i-1})}{x_{i+1}-x_{i-1}} $$