why sin θ ≈ θ
So, I was working on simple program, which is a SHM (Simple Harmonic Motion) pendulum simulation. While trying to derive the formula, I came across the following equation for the restoring force:
The formula is comes from ball like this:
But here's the catch, SHM only works when the angle is small. Why? Because as the angle gets larger, the period of the motion increases and the motion itself becomes more complex, deviating from the ideal SHM characteristics. For small angles (less than 15° ), we can use the approximation:
Which simplifies the formula to:
Now, hold on a second. How the fuck does ? After doing some searching, I found out where this approximation comes from. Turns out, the easiest way to understand it is by plotting. Let’s see if the plot of really approximates 𝜃, or not.
Before we can plot, we need to convert angles from degrees to radians. Why? Because radians are the standard unit for trigonometric functions when plotting on a 2D graph. Here's the formula:
Now, let’s plot , where is the angle in radians ranging from 0 to 2 or .
Plotting
We can use python as a tool to do that. here the code
import numpy as np
import matplotlib.pyplot as plt
# x from 0 to 2π
x = np.linspace(0, 2 * np.pi, 1000) # 1000 points between 0 and 2π
y = np.sin(x) # Calculate sin(x)
plt.figure(figsize=(8, 5)) # Set the figure size
plt.plot(x, y, label='sin(x)', color='blue')
plt.title('Plot of sin(x)', fontsize=14)
plt.xlabel('x (radians)', fontsize=12)
plt.ylabel('sin(x)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend(fontsize=12)
plt.show()
if we run, the result would like this:

Adding a Line for 𝜃
On the same graph, we’ll also add a line plot for 𝜃 to compare it with sin 𝜃. The results are interesting. Lets see:
import numpy as np
import matplotlib.pyplot as plt
theta = np.linspace(-np.pi, np.pi, 1000)
sin_theta = np.sin(theta)
# Plot sin(theta)
plt.figure(figsize=(8, 5))
plt.plot(theta, sin_theta, label='sin(θ)', color='blue')
# Plot the line y = θ
plt.plot(theta, theta, label='θ (line)', color='red', linestyle='--')
plt.title('Comparison of sin(θ) and θ', fontsize=14)
plt.xlabel('θ (radians)', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.xlabel('θ (radians)', fontsize=12) # Horizontal axis label
plt.ylabel('sin(θ) and θ', fontsize=12) # Vertical axis label
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend(fontsize=12)
# Show the plot
plt.show()
Here the result when the code was run:

See there are intersect. if we zoom in on the region where the two plots intersect, here’s what we see:
![]()
Look, the blue line representing sin 𝜃 intersects with the red line dots representing 𝜃 starting around −0.25 radians to 0.25 radians. Which, when converted to degrees, is 14.32°. This is why sin 𝜃 ≈ 𝜃 for small angles.