summaryrefslogtreecommitdiff
path: root/tutorials/module_3/numerical_differentiation.md
diff options
context:
space:
mode:
Diffstat (limited to 'tutorials/module_3/numerical_differentiation.md')
-rw-r--r--tutorials/module_3/numerical_differentiation.md67
1 files changed, 67 insertions, 0 deletions
diff --git a/tutorials/module_3/numerical_differentiation.md b/tutorials/module_3/numerical_differentiation.md
new file mode 100644
index 0000000..b34b315
--- /dev/null
+++ b/tutorials/module_3/numerical_differentiation.md
@@ -0,0 +1,67 @@
+# 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}}
+$$
+
+
+