Haversine-Formel
| Haversine-Formel | |
|---|---|
| |
| Verwendete Symbole |
Die Haversine-Formel (seltener auch deutsch Semiversus-Formel) ist eine Gleichung aus der sphärischen Trigonometrie, mit der sich die Großkreisentfernung zwischen zwei Punkten auf einer Kugeloberfläche aus deren Längen- und Breitengraden berechnen lässt. Sie ist in der Navigation von großer Bedeutung und stellt einen Spezialfall des allgemeineren Gesetzes der Haversine dar, das die Seiten und Winkel sphärischer Dreiecke in Beziehung setzt.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Frühe Entwicklung
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Funktion wurde erstmals 1801 in Navigationstabellen des spanischen Astronomen José de Mendoza y Ríos verwendet, wie der Mathematikhistoriker Florian Cajori dokumentierte.[1] Mendoza y Ríos publizierte verschiedene Tabellen, die die Haversine-Methode (seiner Erfindung) verwendeten, um die Berechnungen der nautischen Astronomie und Navigation zu vereinfachen.[2] Seine Tabellen halfen bei der Berechnung der Längengrade durch Monddistanzen – eine der wichtigsten Navigationsmethoden des 18. und frühen 19. Jahrhunderts.
Die erste bekannte englische Tabelle mit Haversinen wurde 1805 von James Andrew unter dem Namen "Squares of Natural Semi-Chords" veröffentlicht.[3] Diese Bezeichnung verweist auf die geometrische Bedeutung der Funktion als Quadrat der halben Sehnenlänge.
Namensgebung und Verbreitung
[Bearbeiten | Quelltext bearbeiten]Der Begriff "Haversine" wurde 1835 von James Inman in der dritten Ausgabe seines Werkes "Navigation and Nautical Astronomy: For the Use of British Seamen" geprägt.[4] Er führte diese neue Tabelle ein, um die Berechnung von Entfernungen zwischen zwei Punkten auf der Erdoberfläche mittels sphärischer Trigonometrie zu vereinfachen. Der Name setzt sich aus "ha" (für "half", englisch für "halb") und "versine" zusammen und bedeutet somit "halber Sinus versus".
James Inman (1776–1859) war ein englischer Mathematiker und Astronom, Professor für Mathematik am Royal Naval College in Portsmouth und Autor der "Inman's Nautical Tables".[5] Seine Einführung der Haversine-Funktion vereinfachte die Formeln der sphärischen Trigonometrie erheblich und seine Tabellen wurden von allen Navigatoren ausgiebig genutzt.
Historische Bedeutung
[Bearbeiten | Quelltext bearbeiten]Vor dem Aufkommen von Computern erwies sich die Eliminierung von Divisionen und Multiplikationen mit dem Faktor zwei als so praktisch, dass Tabellen mit Haversine-Werten und Logarithmen in Navigations- und Trigonometrie-Lehrbüchern des 19. und frühen 20. Jahrhunderts enthalten waren.[6] Roger Sinnott beschrieb 1984 im Magazin Sky & Telescope ("Virtues of the Haversine"), wie die Haversine-Formel selbst auf einem einfachen TRS-80 Computer in BASIC programmiert werden konnte, um die Winkeldistanz zwischen Sternen genau zu berechnen.[7]
Mathematische Grundlagen
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Funktion
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Funktion ist definiert als:
Die Haversine-Funktion berechnet die halbe Versine des Winkels θ oder das Quadrat der halben Sehnenlänge des Winkels auf einem Einheitskreis (Kugel).[8] Sie ist verwandt mit der älteren Versine-Funktion:
Die Haversine-Formel
[Bearbeiten | Quelltext bearbeiten]Für zwei Punkte auf einer Kugel mit den Koordinaten (φ₁, λ₁) und (φ₂, λ₂) – wobei φ den Breitengrad und λ den Längengrad bezeichnet – lautet die Haversine-Formel:[9]
Dabei ist:
- d die gesuchte Entfernung
- r der Radius der Kugel (für die Erde etwa 6371 km)
- Δφ = φ₂ - φ₁ (Differenz der Breitengrade)
- Δλ = λ₂ - λ₁ (Differenz der Längengrade)
Das Gesetz der Haversine
[Bearbeiten | Quelltext bearbeiten]Für ein "Dreieck" auf der Oberfläche einer Einheitskugel, das durch Großkreise definiert wird, die drei Punkte u, v und w verbinden, besagt das Gesetz der Haversine:[10]
Dabei sind a, b und c die Seitenlängen des sphärischen Dreiecks und C ist der Winkel gegenüber der Seite c.
Numerische Eigenschaften
[Bearbeiten | Quelltext bearbeiten]Numerische Stabilität
[Bearbeiten | Quelltext bearbeiten]Ein wesentlicher Vorteil der Haversine-Formel ist ihre numerische Stabilität, besonders für kleine Distanzen.[11] Da die Haversine-Formel Sinusfunktionen verwendet, vermeidet sie das Problem der Auslöschung, das bei der Verwendung des sphärischen Kosinusgesetzes auftreten kann.
Beim sphärischen Kosinusgesetz kann es bei nahe beieinander liegenden Punkten (z. B. einen Kilometer voneinander entfernt auf der Erde) dazu kommen, dass cos(d/R) = 0,99999999 ergibt, was zu ungenauen Ergebnissen führt.[12] Die Haversine-Formel umgeht dieses Problem durch die Verwendung der Sinusfunktion, die für kleine Winkel numerisch stabiler ist.
Genauigkeitsgrenzen
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Formel ist nur eine Näherung, wenn sie auf die Erde angewandt wird, da diese keine perfekte Kugel ist.[13] Der "Erdradius" R variiert von 6356,752 km an den Polen bis 6378,137 km am Äquator. Noch entscheidender ist, dass der Krümmungsradius einer Nord-Süd-Linie auf der Erdoberfläche an den Polen (≈6399,594 km) 1 % größer ist als am Äquator (≈6335,439 km), was zur Folge hat, dass die Haversine-Formel im Extremfall bis zu 0,5 % vom exakten Wert abweichen kann.[14]
Genauere Methoden, die die Elliptizität der Erde berücksichtigen, werden durch die Vincenty-Formel und andere Formeln für geographische Distanzen angegeben.
Vergleich mit anderen Methoden
[Bearbeiten | Quelltext bearbeiten]Haversine vs. Vincenty
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Formel und die Vincenty-Formel sind die zwei am häufigsten verwendeten Methoden zur Distanzberechnung auf der Erdoberfläche:[15]
| Eigenschaft | Haversine-Formel | Vincenty-Formel |
|---|---|---|
| Erdmodell | Kugel | Ellipsoid |
| Genauigkeit | ±0,3 % | ±0,5 mm |
| Rechenaufwand | Einfach, wenig rechenintensiv | Komplex, iterativ |
| Numerische Stabilität | Sehr gut für alle Distanzen | Kann bei antipodalen Punkten versagen |
| Anwendungsbereich | Web- und Mobilanwendungen | Geodätische Berechnungen |
Beispiel: Die Distanz zwischen Pune (Indien) und Sydney (Australien) beträgt mit der Haversine-Formel 6236,243 Meilen und mit der Vincenty-Formel 6231,892 Meilen.[16]
Praktische Anwendung
[Bearbeiten | Quelltext bearbeiten]Navigation und Verkehr
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Formel berechnet die kürzeste Distanz zwischen zwei Punkten auf einer Kugel unter Verwendung ihrer Breiten- und Längengrade entlang der Oberfläche und ist wichtig für die Navigation.[17] Sie findet Anwendung in:
- Luftfahrt: Berechnung von Flugrouten und -distanzen
- Seefahrt: Bestimmung von Schifffahrtsrouten
- GPS-Navigation: Routenberechnung in Navigationsgeräten
Geographische Informationssysteme
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Formel wird in verschiedenen Bereichen wie Astronomie, Geodäsie und Navigation verwendet.[18] Moderne Anwendungen umfassen:
- Kartenanwendungen und Geodatenanalyse
- Standortbasierte Dienste
- Distanzberechnungen in Datenbanken
Implementierung
[Bearbeiten | Quelltext bearbeiten]Ein Beispiel für die Implementierung in PHP:[19]
<?php
function haversine($lat1, $lon1, $lat2, $lon2) {
// Radius der Erde in Kilometern
$earthRadius = 6371;
// Differenzen in Radiant umrechnen
$dLat = deg2rad($lat2 - $lat1);
$dLon = deg2rad($lon2 - $lon1);
// Breiten in Radiant umrechnen
$lat1 = deg2rad($lat1);
$lat2 = deg2rad($lat2);
// Haversine-Formel anwenden
$a = sin($dLat / 2) * sin($dLat / 2) +
sin($dLon / 2) * sin($dLon / 2) *
cos($lat1) * cos($lat2);
$c = 2 * asin(sqrt($a));
// Distanz berechnen
return $earthRadius * $c;
}
// Beispielverwendung
$lat1 = 38.898; // Washington D.C. (Weißes Haus)
$lon1 = -77.037;
$lat2 = 48.858; // Paris (Eiffelturm)
$lon2 = 2.294;
$distance = haversine($lat1, $lon1, $lat2, $lon2);
echo "Entfernung: " . round($distance, 2) . " km\n";
?>
Beispielberechnung
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Formel kann verwendet werden, um die ungefähre Entfernung zwischen dem Weißen Haus in Washington, D.C. (Breitengrad 38,898° N, Längengrad 77,037° W) und dem Eiffelturm in Paris (Breitengrad 48,858° N, Längengrad 2,294° E) zu berechnen.[20]
Schrittweise Berechnung:
- Umrechnung in Radiant
- Berechnung der Differenzen: Δφ = 0,1737 rad, Δλ = 1,3734 rad
- Anwendung der Haversine-Formel
- Ergebnis: d ≈ 6.166 km
Verwandte Funktionen
[Bearbeiten | Quelltext bearbeiten]Die Haversine-Funktion gehört zu einer Familie trigonometrischer Funktionen:[21]
- Versine: versin(θ) = 1 - cos(θ) = 2·hav(θ)
- Coversine: coversin(θ) = 1 - sin(θ) = versin(π/2 - θ)
- Havercosine: havercos(θ) = (1 + cos(θ))/2
- Exsekans: exsec(θ) = sec(θ) - 1
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Literatur
[Bearbeiten | Quelltext bearbeiten]- James Inman: Navigation and Nautical Astronomy: For the Use of British Seamen. 3. Auflage. W. Woodward, C. & J. Rivington, London 1835.
- José de Mendoza y Ríos: Memoria sobre algunos métodos nuevos de calcular la longitud por las distancias lunares. Imprenta Real, Madrid 1801.
- Florian Cajori: A History of Mathematical Notations. Band 2, 3. Auflage. Open Court Publishing Company, Chicago 1952, S. 172.
- Glen Robert van Brummelen: Heavenly Mathematics: The Forgotten Art of Spherical Trigonometry. Princeton University Press, 2013, ISBN 978-0-691-14892-2.
- R. W. Sinnott: Virtues of the Haversine. In: Sky and Telescope. Band 68, Nr. 2, 1984, S. 159.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Calculate distance and bearing between two Latitude/Longitude points – Interaktive Implementierung der Haversine-Formel
- Haversine formula – Implementierungen in verschiedenen Programmiersprachen
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Florian Cajori: A History of Mathematical Notations. Band 2, 3. Auflage. Open Court Publishing Company, Chicago 1952, S. 172.
- ↑ José de Mendoza y Ríos: Memoria sobre algunos métodos nuevos de calcular la longitud por las distancias lunares. Imprenta Real, Madrid 1801.
- ↑ James Andrew: Astronomical and Nautical Tables. London 1805.
- ↑ James Inman: Navigation and Nautical Astronomy: For the Use of British Seamen. 3. Auflage. W. Woodward, C. & J. Rivington, London 1835.
- ↑ Oxford Dictionary of National Biography. Oxford University Press, 2004.
- ↑ Glen Robert van Brummelen: Heavenly Mathematics: The Forgotten Art of Spherical Trigonometry. Princeton University Press, 2013, ISBN 978-0-691-14892-2, S. 123–125.
- ↑ R. W. Sinnott: Virtues of the Haversine. In: Sky and Telescope. Band 68, Nr. 2, 1984, S. 159.
- ↑ Eric W. Weisstein: Haversine. MathWorld. Abgerufen am 9. Januar 2025.
- ↑ Chris Veness: Calculate distance and bearing between two Latitude/Longitude points using haversine formula in JavaScript. Movable Type Scripts, 2019.
- ↑ Smart, W. M.: Text-Book on Spherical Astronomy. 6. Auflage. Cambridge University Press, Cambridge 1977, ISBN 0-521-29180-1, S. 12–14.
- ↑ B. Hofmann-Wellenhof, H. Lichtenegger, J. Collins: GPS - Theory and Practice. Springer, Wien 2001, ISBN 3-211-83534-2.
- ↑ Sinnott, R. W.: Virtues of the Haversine. In: Sky and Telescope. Band 68, Nr. 2, 1984, S. 159.
- ↑ Snyder, J. P.: Map Projections - A Working Manual. U.S. Geological Survey Professional Paper 1395. United States Government Printing Office, Washington, D.C. 1987, S. 16–17.
- ↑ Rapp, Richard H.: Geometric Geodesy, Part I. Ohio State University, 1991, S. 18–19.
- ↑ Vincenty, T.: Direct and Inverse Solutions of Geodesics on the Ellipsoid with Application of Nested Equations. In: Survey Review. Band 23, Nr. 176, April 1975, S. 88–93.
- ↑ GeeksforGeeks: Haversine formula to find distance between two points on a sphere. 2022. Abgerufen am 9. Januar 2025.
- ↑ Admiralty Manual of Navigation. Band 1. The Stationery Office, 1987, ISBN 978-0-11-771468-7.
- ↑ de Smith, M. J., Goodchild, M. F., Longley, P. A.: Geospatial Analysis. 6. Ausgabe. The Winchelsea Press, 2018.
- ↑ Rosetta Code: Haversine formula. Abgerufen am 9. Januar 2025.
- ↑ U.S. National Geodetic Survey: NGS Coordinate Conversion and Transformation Tool (NCAT). Abgerufen am 9. Januar 2025.
- ↑ Abramowitz, M., Stegun, I. A.: Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. Dover, New York 1964, S. 78.