**فرمول هاورسین** (به انگلیسی: Haversine formula) فاصله دایره بزرگ بین دو نقطه روی یک کره را با توجه به طول و عرض جغرافیایی آن ها تعیین می‌کند. این فرمول در جهت‌یابی کاربر دارد که یک مورد خاص از یک فرمول کلی‌تر در مثلثات کروی، قانون هاورسین‌ها است که اضلاع و زوایای مثلث‌های کروی را به هم مرتبط می‌کند.

اولین جدول هاورسین‌ها به زبان انگلیسی توسط جیمز اندرو در سال ۱۸۰۵ منتشر شد، اما فلوریان کایوری استفاده قبلی را به خوزه د مندوزا و ریوس در سال ۱۸۰۱ نسبت می‌دهد. اصطلاح *هاورسین* در سال ۱۸۳۵ توسط جیمز اینمن ابداع شد.

فرمول
-----

فرض می‌کنیم زاویه مرکزی *θ* بین دو نقطه روی یک کره باشد:

{\displaystyle \theta ={\frac {d}{r}}}
جایی که

* d فاصله بین دو نقطه در امتداد یک دایره بزرگ از کره است.
* r شعاع کره است.

*فرمول هاورسین* به هاورسین *θ* (یعنی hav(*θ*)) اجازه می‌دهد که مستقیماً از عرض جغرافیایی (نمایش داده شده با *φ*) و طول جغرافیایی (نمایش *λ*) دو نقطه محاسبه شود:

{\displaystyle \operatorname {hav} \left(\theta \right)=\operatorname {hav} \left(\varphi \_{2}-\varphi \_{1}\right)+\cos \left(\varphi \_{1}\right)\cos \left(\varphi \_{2}\right)\operatorname {hav} \left(\lambda \_{2}-\lambda \_{1}\right)}
یا برای اجتناب از استفاده از کسینوس‌هایی که باعث کاهش وضوح در زوایای کوچک می‌شوند:

{\displaystyle \operatorname {hav} (\theta )=\operatorname {hav} (\varphi \_{2}-\varphi \_{1})+\left(1-\operatorname {hav} (\varphi \_{1}-\varphi \_{2})-\operatorname {hav} (\varphi \_{1}+\varphi \_{2})\right)\cdot \operatorname {hav} \left(\lambda \_{2}-\lambda \_{1}\right)}
جایی که

* *φ*1, *φ*2 عرض جغرافیایی نقطه ۱ و ۲ است.
* *λ*1, *λ*2 طول جغرافیایی نقطه ۱ و ۲ است.

در نهایت، تابع haversine hav(*θ*) که در بالا برای زاویه مرکزی *θ* و تفاوت در طول و عرض جغرافیایی اعمال می‌شود،

{\displaystyle \operatorname {hav} (\theta )=\sin ^{2}\left({\frac {\theta }{2}}\right)={\frac {1-\cos(\theta )}{2}}}
تابع hasrsine نصف ورسینوس از زاویه *θ* را محاسبه می‌کند.

برای حل فاصله *d*، آرک هاورسین (harsine معکوس) را به *h* = hav(*θ*) یا از تابع آرکسین (سینوس معکوس) استفاده کنید:

{\displaystyle d=r\operatorname {archav} (h)=2r\arcsin \left({\sqrt {h}}\right)}
یا به‌طور واضح تر:

{\displaystyle {\begin{aligned}d&=2r\arcsin \left({\sqrt {\operatorname {hav} (\varphi \_{2}-\varphi \_{1})+(1-\operatorname {hav} (\varphi \_{1}-\varphi \_{2})-\operatorname {hav} (\varphi \_{1}+\varphi \_{2}))\cdot \operatorname {hav} (\lambda \_{2}-\lambda \_{1})}}\right)\\&=2r\arcsin \left({\sqrt {\sin ^{2}\left({\frac {\varphi \_{2}-\varphi \_{1}}{2}}\right)+\left(1-\sin ^{2}\left({\frac {\varphi \_{2}-\varphi \_{1}}{2}}\right)-\sin ^{2}\left({\frac {\varphi \_{2}+\varphi \_{1}}{2}}\right)\right)\cdot \sin ^{2}\left({\frac {\lambda \_{2}-\lambda \_{1}}{2}}\right)}}\right)\\&=2r\arcsin \left({\sqrt {\sin ^{2}\left({\frac {\varphi \_{2}-\varphi \_{1}}{2}}\right)+\cos \varphi \_{1}\cdot \cos \varphi \_{2}\cdot \sin ^{2}\left({\frac {\lambda \_{2}-\lambda \_{1}}{2}}\right)}}\right).\end{aligned}}}

همان‌طور که در زیر توضیح داده شد، فرمول مشابهی را می‌توان با استفاده از کسینوس (که گاهی قانون کروی کسینوس نامیده می‌شود، که با قانون کسینوس‌ها برای هندسه صفحه اشتباه گرفته نمی‌شود) به جای هارسین نوشت، اما اگر این دو نقطه به هم نزدیک باشند (مثلاً یک کیلومتر روی زمین) ممکن است به cos(*d*/*R*) = ۰٫۹۹۹۹۹۹۹۹ می‌شود، که منجر به پاسخ نادرست است. از آنجایی که فرمول هارسین از سینوس استفاده می‌کند، از این مشکل جلوگیری می‌کند.

هر کدام از این فرمول‌ها زمانی که روی زمین اعمال می‌شود، فقط یک تقریب است چون زمین یک کره کامل نیست: شعاع زمین *R* بین ۶۳۵۶٫۷۵۲ کیلومتر در قطب و ۶۳۷۸٫۱۳۷ کیلومتر در خط استوا متغیر است و مهمتر از آن، شعاع انحنای یک خط شمالی -جنوبی در سطح زمین در قطب (≈۶۳۹۹٫۵۹۴ کیلومتر) و در خط استوا (≈۶۳۳۵٫۴۳۹ کیلومتر) است که ۱٪ بیشتر است— بنابراین نمی‌توان فرمول هارسین و قانون کسینوس را بهتر از ۰٫۵٪ تضمین کرد. روش‌های دقیق‌تری که بیضی بودن زمین را در نظر می‌گیرند با فرمول‌های وینسنتی و فرمول‌های دیگر در مقالهٔ فاصله جغرافیایی ارائه شده‌است.

قانون هاورسین‌ها
----------------

 مثلث کروی که با قانون هاورسین حل می‌شود
با توجه به یک کره واحد، یک «مثلث» روی سطح کره با دایره‌های بزرگی که سه نقطه *u*, *v* و *w* روی کره به هم وصل می‌کنند، تعریف می‌شود. اگر طول این سه ضلع *a* (از *u* تا *v*)، *b* (از *u* تا *w*) و *c* (از *v* به *w*) باشد و زاویه گوشه مقابل *c* ضلع *C* باشد، قانون هاورسین‌ها بیان می‌کند.

{\displaystyle \operatorname {hav} (c)=\operatorname {hav} (a-b)+\sin(a)\sin(b)\operatorname {hav} (C).}
از آنجایی که این یک کره واحد است، طول‌های *a*، *b*، و *c* به سادگی برابر با زوایایی هستند (بر حسب رادیان) که توسط آن اضلاع از مرکز کره متمایل می‌شوند (برای یک کره غیر واحد، هر یک از این طول کمان برابر است. به زاویه مرکزی آن ضرب در شعاع *R* کره).

برای به دست آوردن فرمول هاورسین بخش قبل از این قانون، به سادگی حالت خاصی را در نظر می‌گیریم که در آن *u* قطب شمال است، در حالی که *v* و *w* دو نقطه‌ای هستند که جدایی آنها با *d* تعیین می‌شود. در این صورت، *a* و *b* هستند π/۲ − *φ*1,2 (یعنی هم عرض جغرافیایی)، *C* جدایی طول جغرافیایی *λ*2 − *λ*1، و *c* فاصله مورد نظر است. *d*/*R* توجه به این sin(π/۲ − *φ*) = cos(*φ*) sin(π/۲ − *φ*) = cos(*φ*)، فرمول هاورسین بلافاصله دنبال می‌شود.

برای استخراج قانون هاورسین‌ها، با قانون کروی کسینوس‌ها شروع می‌شود:

{\displaystyle \cos(c)=\cos(a)\cos(b)+\sin(a)\sin(b)\cos(C).\,}
همان‌طور که در بالا ذکر شد، این فرمول یک روش نامطلوب برای حل *c* زمانی است که *c* کوچک است. برای به دست آوردن قانون هارسین‌ها، در بالا فرض می‌کنیم که cos(*θ*) = ۱ − 2 hav(*θ*) است و cos(*a* − *b*) = cos(*a*) cos(*b*) + sin(*a*) sin(*b*) است.

اثبات
-----

می‌توان فرمول را ثابت کرد:

{\displaystyle \operatorname {hav} \left(\theta \right)=\operatorname {hav} \left(\varphi \_{2}-\varphi \_{1}\right)+\cos \left(\varphi \_{1}\right)\cos \left(\varphi \_{2}\right)\operatorname {hav} \left(\lambda \_{2}-\lambda \_{1}\right)}
با تبدیل نقاط داده شده توسط طول و عرض جغرافیایی آنها به مختصات دکارتی و سپس گرفتن ضرب نقطه آنها.

دو نکته را در نظر بگیرید {\displaystyle {\bf {p\_{1},p\_{2}}}} در کره واحد، داده شده توسط عرض جغرافیایی آنها \varphi و طول جغرافیایی \lambda :

{\displaystyle {\begin{aligned}{\bf {p\_{2}}}&=(\lambda \_{2},\varphi \_{2})\\{\bf {p\_{1}}}&=(\lambda \_{1},\varphi \_{1})\end{aligned}}}
این نمایش‌ها بسیار شبیه مختصات کروی هستند، با این حال عرض جغرافیایی به عنوان زاویه از استوا اندازه‌گیری می‌شود و نه قطب شمال. این نقاط در مختصات دکارتی نمایش زیر را دارند:

{\displaystyle {\begin{aligned}{\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{aligned}}}
از اینجا می‌توانیم مستقیماً تلاش کنیم تا حاصل ضرب نقطه‌ای را محاسبه کنیم و ادامه دهیم، اما با توجه به واقعیت زیر، فرمول‌ها به‌طور قابل توجهی ساده‌تر می‌شوند: اگر کره را در امتداد محور z بچرخانیم، فاصله بین دو نقطه تغییر نخواهد کرد. این در واقع یک ثابت به {\displaystyle \lambda \_{1},\lambda \_{2}} اضافه می‌کند. توجه داشته باشید که ملاحظات مشابه در مورد تبدیل عرض‌های جغرافیایی اعمال نمی‌شود - افزودن یک ثابت به عرض‌های جغرافیایی ممکن است فاصله بین نقاط را تغییر دهد. با انتخاب {\displaystyle -\lambda \_{1}} به عنوان ثابت، و در نظر گرفتن {\displaystyle \lambda '=\lambda \_{2}-\lambda \_{1}} ، نقاط جدید می‌شوند:

{\displaystyle {\begin{aligned}{\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{aligned}}}
در صورتی که \theta  زاویه بین {\displaystyle {\bf {p\_{1}}}} و {\displaystyle {\bf {p\_{2}}}} را نشان دهد، اکنون داریم که:

{\displaystyle {\begin{aligned}\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(\varphi \_{2}-\varphi \_{1})+\cos(\varphi \_{2})\cos(\varphi \_{1})(-1+\cos(\lambda '))\Rightarrow \\\operatorname {hav} \left(\theta \right)&=\operatorname {hav} \left(\varphi \_{2}-\varphi \_{1}\right)+\cos(\varphi \_{2})\cos(\varphi \_{1})\operatorname {hav} \left(\lambda \_{2}-\lambda \_{1}\right)\end{aligned}}}

جستارهای وابسته
---------------

* کاهش بینایی

منابع
-----

1. ↑  Gade, Kenneth (2010). "A Non-singular Horizontal Position Representation". *Journal of Navigation*. **63** (3): 395–417. doi:10.1017/S0373463309990415. ISSN 0373-4633.

مطالعهٔ بیشتر
-------------

* سوالات متداول سیستم‌های اطلاعات جغرافیایی اداره سرشماری ایالات متحده، (مطالب به این قسمت منتقل شده است بهترین روش برای محاسبه فاصله بین ۲ نقطه چیست؟)
* RW Sinnott، «فضیلت هاورسین»، *آسمان و تلسکوپ* **۶۸** (۲)، ۱۵9 (1984).
* استخراج فرمول هارسین، *از دکتر ریاضی بپرسید* (20 – ۲۱ آوریل ۱۹۹۹). (لینک خراب)
* Romuald Ireneus 'Scibor-Marchocki, مثلثات کروی، *صفحه وب مثلثات هندسه ابتدایی* (۱۹۹۷).
* W. Gellert, S. Gottwald, M. Hellwich, H. Kästner, and H. Küstner, *The VNR Concise Encyclopedia of Mathematics*, 2nd ed. , ch. 12 (ون نوستراند راینهولد: نیویورک، ۱۹۸۹).

پیوند به بیرون
--------------

* پیاده‌سازی فرمول هارسینه به ۹۱ زبان در rosettacode.org و به ۱۷ زبان در codecodex.com
* سایر پیاده‌سازی‌ها در C++ ، C (MacOS) , پاسکال ، پایتون ، روبی ، جاوا اسکریپت ، PHP , Matlab , MySQL