Source: https://star.pst.qub.ac.uk/wiki/lib/exe/fetch.php/users/kpoppenhaeger/phy1024/phy1024_pythonintro_week02.pdf