MarketHaversine formula
Company Profile

Haversine formula

The haversine formula determines the great-circle distance between two points on a sphere given their longitudes and latitudes. Important in navigation, it is a special case of a more general formula in spherical trigonometry, the law of haversines, that relates the sides and angles of spherical triangles.

Formulation
The basic relation is shown by :d = r \, \theta , where • is the central angle between any two points on a sphere, • is the distance between the two points along a great circle of the sphere (see spherical distance), • is the radius of the sphere. The haversine formula allows the haversine of to be computed directly from the latitude (represented by ) and longitude (represented by ) of the two points: : \operatorname{hav}\theta = \operatorname{hav}\left(\Delta \varphi \right) + \cos\left(\varphi_1\right)\cos\left(\varphi_2\right)\operatorname{hav}\left(\Delta \lambda \right) where • , are the latitude of point 1 and latitude of point 2, • , are the longitude of point 1 and longitude of point 2, • \Delta \varphi = \varphi_2 - \varphi_1, \Delta \lambda = \lambda_2 - \lambda_1. The haversine function computes half a versine of the angle , or the squares of half chord of the angle on a unit circle (sphere). It is related to other sinusoidal functions: : \operatorname{hav}\theta= \sin^2\left(\frac{\theta}{2}\right) = \frac{1 - \cos(\theta)}{2}. To solve for from the differences in latitude and longitude explicitly: : \theta= 2 \arcsin\left(\sqrt{\operatorname{hav}\theta}\right), where \operatorname{hav}\theta can be calculated by: : \begin{align} \operatorname{hav}\theta &= \operatorname{hav}\left(\Delta \varphi \right) + \cos\left(\varphi_1\right)\cos\left(\varphi_2\right)\operatorname{hav}\left(\Delta \lambda \right) \\ &= \operatorname{hav}(\Delta \varphi ) + ( 1 - \operatorname{hav}(\Delta \varphi) - \operatorname{hav}(2 \varphi_\text{m} ))\cdot\operatorname{hav}(\Delta \lambda) \\ &= \sin^2\left(\frac{\Delta \varphi }{2}\right) + \left(1- \sin^2\left(\frac{\Delta \varphi }{2}\right) - \sin^2\left(\varphi_\text{m}\right)\right) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) \\ &= \sin^2\left(\frac{\Delta \varphi }{2}\right) + \cos \varphi_1 \cdot \cos \varphi_2 \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) \\ &= \sin^2\left(\frac{\Delta \varphi }{2}\right) \cdot \cos^2\left(\frac{\Delta \lambda}{2}\right) + \cos^2\left(\varphi_\text{m}\right) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) \\ &= \frac{1 - \cos\left(\Delta \varphi \right) + \cos \varphi_1 \cdot \cos \varphi_2 \cdot \left(1 - \cos\left(\Delta \lambda\right)\right)}{2} \end{align} and \varphi_\text{m} = \frac{\varphi_2 + \varphi_1}{2}. When using these formulae, one must ensure that does not exceed 1 due to a floating point error ( is real only for ). only approaches 1 for antipodal points (on opposite sides of the sphere)—in this region, relatively large numerical errors tend to arise in the formula when finite precision is used. Because is then large (approaching , half the circumference) a small error is often not a major concern in this unusual case (although there are other great-circle distance formulas that avoid this problem). (The formula above is sometimes written in terms of the arctangent function, but this suffers from similar numerical problems near .) As described below, a similar formula can be written using cosines (sometimes called the spherical law of cosines, not to be confused with the law of cosines for plane geometry) instead of haversines, but if the two points are close together (e.g. a kilometer apart, on the Earth) one might end up with , leading to an inaccurate answer. Since the haversine formula uses sines, it avoids that problem. Either formula is only an approximation when applied to the Earth, which is not a perfect sphere: the "Earth radius" varies from 6356.752 km at the poles to 6378.137 km at the equator. More importantly, the radius of curvature of a north-south line on the earth's surface is 1% greater at the poles (≈6399.594 km) than at the equator (≈6335.439 km)—so the haversine formula and law of cosines cannot be guaranteed correct to better than 0.5%. More accurate methods that consider the Earth's ellipticity are given by Vincenty's formulae and the other formulas in the geographical distance article. ==The law of haversines==
The law of haversines{{anchor|Law}}
Given a unit sphere, a "triangle" on the surface of the sphere is defined by the great circles connecting three points , , and on the sphere. If the lengths of these three sides are (from to ), (from to ), and (from to ), and the angle of the corner opposite is , then the law of haversines states: : \operatorname{hav}(c) = \operatorname{hav}(a - b) + \sin(a)\sin(b)\operatorname{hav}(C). Since this is a unit sphere, the lengths , , and are simply equal to the angles (in radians) subtended by those sides from the center of the sphere (for a non-unit sphere, each of these arc lengths is equal to its central angle multiplied by the radius of the sphere). In order to obtain the haversine formula of the previous section from this law, one simply considers the special case where is the north pole, while and are the two points whose separation is to be determined. In that case, and are (that is, the, co-latitudes), is the longitude separation , and is the desired . Noting that , the haversine formula immediately follows. To derive the law of haversines, one starts with the spherical law of cosines: :\cos(c) = \cos(a)\cos(b) + \sin(a)\sin(b)\cos(C). \, As mentioned above, this formula is an ill-conditioned way of solving for when is small. Instead, we substitute the identity that , and also employ the addition identity , to obtain the law of haversines, above. ==Proof==
Proof
One can prove the formula: : \operatorname{hav}\left(\theta\right) = \operatorname{hav}\left(\Delta \varphi \right) + \cos\left(\varphi_1\right)\cos\left(\varphi_2\right)\operatorname{hav}\left(\Delta \lambda\right) by transforming the points given by their latitude and longitude into cartesian coordinates, then taking their dot product. Consider two points \bf p_1,p_2 on the unit sphere, given by their latitude \varphi and longitude \lambda: :\begin{align} {\bf p_2} &= (\lambda_2, \varphi_2) \\ {\bf p_1} &= (\lambda_1, \varphi_1) \end{align} These representations are very similar to spherical coordinates, however latitude is measured as angle from the equator and not the north pole. These points have the following representations in cartesian coordinates: :\begin{align} {\bf p_2} &= (\cos(\lambda_2)\cos(\varphi_2), \;\sin(\lambda_2)\cos(\varphi_2), \;\sin(\varphi_2)) \\ {\bf p_1} &= (\cos(\lambda_1)\cos(\varphi_1), \;\sin(\lambda_1)\cos(\varphi_1), \;\sin(\varphi_1)) \end{align} From here we could directly attempt to calculate the dot product and proceed, however the formulas become significantly simpler when we consider the following fact: the distance between the two points will not change if we rotate the sphere along the z-axis. This will in effect add a constant to \lambda_1, \lambda_2. Note that similar considerations do not apply to transforming the latitudes - adding a constant to the latitudes may change the distance between the points. By choosing our constant to be -\lambda_1, and setting \lambda' = \Delta \lambda, our new points become: :\begin{align} {\bf p_2'} &= (\cos(\lambda')\cos(\varphi_2), \;\sin(\lambda')\cos(\varphi_2), \;\sin(\varphi_2)) \\ {\bf p_1'} &= (\cos(0)\cos(\varphi_1), \;\sin(0)\cos(\varphi_1), \;\sin(\varphi_1)) \\ &= (\cos(\varphi_1), \;0, \;\sin(\varphi_1)) \end{align} With \theta denoting the angle between {\bf p_1} and {\bf p_2}, we now have that: :\begin{align} \cos(\theta) &= \langle{\bf p_1},{\bf p_2}\rangle = \langle{\bf p_1'},{\bf p_2'}\rangle = \cos(\lambda')\cos(\varphi_1)\cos(\varphi_2) + \sin(\varphi_1)\sin(\varphi_2) \\ &= \sin(\varphi_2)\sin(\varphi_1) + \cos(\varphi_2)\cos(\varphi_1) - \cos(\varphi_2)\cos(\varphi_1) + \cos(\lambda')\cos(\varphi_2)\cos(\varphi_1) \\ &= \cos(\Delta \varphi) + \cos(\varphi_2)\cos(\varphi_1)(-1 + \cos(\lambda')) \Rightarrow \\ \operatorname{hav}\left(\theta\right) &= \operatorname{hav}\left(\Delta \varphi \right) + \cos(\varphi_2)\cos(\varphi_1)\operatorname{hav}\left(\lambda' \right) \end{align} == Example ==
Example
, with geodesic circles (blue) at multiples of 1,000 km distance from Washington. The haversine formula can be used to find the approximate distance between the White House in Washington, D.C. (latitude 38.898° N, longitude 77.037° W) and the Eiffel Tower in Paris (latitude 48.858° N, longitude 2.294° E). The difference in latitudes is \Delta \varphi = {}9.960° and the difference in longitudes is \Delta\lambda = {}79.331°. Inputting these into the haversine formula, \begin{align} \operatorname{hav}\left(\theta\right) &= \operatorname{hav}(\Delta \varphi ) + \cos(\varphi_1)\cos(\varphi_2)\operatorname{hav}(\Delta \lambda) \\[5mu] &= \operatorname{hav}(9.960^\circ) + \cos(38.898^\circ)\cos(48.858^\circ)\operatorname{hav}(79.331^\circ) \\[5mu] &\approx 0.0075356 + 0.77827 \times 0.65793 \times 0.40743 \\[5mu] &\approx 0.21616 \\[5mu] \theta &\approx 55.411^\circ. \end{align} The great-circle distance is this central angle, in radians (55.411 degrees is 0.96710 radians), multiplied by the average radius of the Earth, 0.96710 \times 6371.2\ \text{km} \approx 6161.6\ \text{km}. By comparison, using a more accurate ellipsoidal model of the earth, the geodesic distance between these landmarks can be computed as approximately 6177.45 km. == See also ==
tickerdossier.comtickerdossier.substack.com