Small Angle Approximation

The small-angle approximation is a useful simplification of trigonometry. As its name implies it is an approximation that is valid when the angle is very small. This is often the case in astronomy, where the distance to the object is much larger than the size of the object itself (think of, for example, the Moon) and so the triangles are very long and skinny, which means there is a tiny angle at the pointy end.

The approximaton for $\sin$ and $\tan$ is simply:

$\sin \theta \approx \theta$

$\tan \theta \approx \theta$

where $\theta$ is the angle in radians.

Remember that there are $2 \pi$ radians in a full circle instead of 360 degrees. So to convert from degrees to radians:

$\theta \mathrm{~(radians)} = \frac{2\pi}{360} \, \theta \mathrm{~(degrees)} = \frac{\pi}{180} \, \theta \mathrm{~(degrees)}$

or to convert from arcseconds to radians:

$\theta \mathrm{~(radians)} = \frac{1}{206264}\, \theta \mathrm{~(arcseconds)}$

How good is the small angle approximation? The plot below shows the small angle approximation comapared with the exact solution for $\sin$ and $\tan$.

In [1]:
%matplotlib inline
from pylab import *

theta = arange(1.,90.,1.)
# Convert to radians, because trig functions in python take radians as arguments
thetarad = theta*pi/180.

plot(theta, sin(thetarad), label='sin (exact)')
plot(theta, tan(thetarad), label='tan (exact)')
plot(theta, thetarad, label='small angle approx')

ylim((0.,1.))
xlabel(r'$\theta$ (degrees)')
legend(loc='lower right')
print "Small angle approxmination compared with exact solution"
Small angle approxmination compared with exact solution

The following shows the percentage difference between the approximation and the exact value

In [2]:
plot(theta, (thetarad-sin(thetarad))/sin(thetarad)*100, label='sin')
plot(theta, (thetarad-tan(thetarad))/tan(thetarad)*100, label='tan')

axhline(y=0)

xlabel(r'$\theta$ (degrees)')
ylabel('Percentage (%) error in approx.')
# Traling semicolon on last line gets rid of annoying matplotlib output 
# eg. <matplotlib.legend.Legend at 0x1049fe9d0>
legend(loc='upper left');

We see it works well for small angles, but breaks down at very large ones. Now the same as above, but zooming into the region with $\theta <15^{\circ}$

In [3]:
xlim((0.,15))
ylim((-2.,2.))

plot(theta, (thetarad-sin(thetarad))/sin(thetarad)*100, label='sin')
plot(theta, (thetarad-tan(thetarad))/tan(thetarad)*100, label='tan')

axhline(y=0)
# Draw horizontal lines to delimit +- 1%
axhline(y=1, ls='--')
axhline(y=-1, ls='--')

xlabel(r'$\theta$ (degrees)')
ylabel('Percentage (%) error in approx.')
legend(loc='upper left');

In astronomy, almost all objects are smaller (on the sky) than 10 degrees, so errors due to the small angle approximation are less than 1%.

For example, nearest and largest galaxy, Andromeda, has a diameter of 3 degrees. The Moon and Sun are about half a degree. Most binary stars have separations measured in arcseconds or less.

So, in introductory astronomy, it is almost always safe to use the small angle approximation!