1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 7 10:25:47 2025
@author: christian
"""
import numpy as np
import matplotlib.pyplot as plt
# Initiate vectors
t = np.linspace(0, 30, 5) # simulate for 20 seconds
v = 42.78 * (1 - np.exp(-9.81 * t / 42.78))
# Forward difference method
dvdt_fd = (v[1:] - v[:-1]) / (t[1:] - t[:-1])
dvdt_bd = (v[1:] - v[:-1]) / (t[1:] - t[:-1])
dvdt_cd = (v[2:] - v[:-2]) / (t[2:] - t[:-2])
# Plotting
plt.figure(figsize=(8, 5))
plt.plot(t, v, label='Velocity (m/s)', color='blue')
plt.plot(t[:-1], dvdt_fd, label=r'forward difference')
plt.plot(t[1:], dvdt_bd, label=r'backward difference')
plt.plot(t[1:-1], dvdt_cd, label=r'central difference')
plt.axhline(y=42.78, color='red', linestyle='--', label=f'Terminal velocity ≈ {42.78:.2f} m/s')
plt.title('Falling Object Approaching Terminal Velocity')
plt.xlabel('Time (s)')
plt.ylabel('Velocity (m/s)')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
|