# یک کوه و یک خط افق
ابوریحان بیرونی ابتدا ارتفاع کوه را از روی زمین اندازه گرفت. بعد به قله رفت و زاویهٔ میان خط افقی و افق دوردست را به دست آورد. افق از بالای کوه کمی پایینتر از خط افقی دیده میشود و همین اختلاف کوچک، اطلاعات مهمی دربارهٔ انحنای زمین دارد.
در واقع تمام روش به دو عدد نیاز داشت: ارتفاع کوه و زاویهٔ افت افق. با قرار دادن این دو عدد در یک رابطهٔ هندسی، شعاع زمین به دست میآمد.
روش در یک نگاه
ارتفاع کوه
زاویهٔ افت افق
مثلثات
شعاع زمین
در این مقاله روش ابوریحان بیرونی را ساده و مرحلهبهمرحله بررسی میکنیم و در پایان همان محاسبه را با Python انجام میدهیم.
# قبل از ابوریحان بیرونی، اندازهٔ زمین را چطور حساب میکردند؟
حدود سیزده قرن پیش از ابوریحان بیرونی، اراتوستن با مقایسهٔ زاویهٔ تابش خورشید در دو شهر و دانستن فاصلهٔ میان آنها، محیط زمین را تخمین زده بود. روش اراتوستن هوشمندانه بود، اما به دو شهر دور از هم و اندازهگیری فاصلهٔ میان آنها نیاز داشت. ابوریحان بیرونی روشی پیدا کرد که همهٔ اندازهگیریهای آن در یک منطقه انجام میشد.
روش بیرونی
همهٔ اندازهگیریها در یک منطقه: یک کوه، سه زاویه و یک فاصلهٔ کوتاه.
یک ناحیه ← شعاع زمین
روش اراتوستن
نیازمند دو شهر دور از هم و اندازهگیری دقیق فاصلهٔ میان آنها.
دو شهر + فاصله ← محیط زمین
ابوریحان محمد بن احمد بیرونی، دانشمند ایرانی و از بزرگترین عالمان خوارزم، بین سالهای ۹۷۳ تا ۱۰۴۸ میلادی زندگی میکرد. او روش خود را روی کوهی در ناحیهٔ نَندَنه آزمایش کرد. توضیح این روش در آثاری مانند «تحدید نهایات الاماکن» و «قانون مسعودی» آمده است.
# مسئله در دو اندازهگیری خلاصه میشود
روش ابوریحان بیرونی دو مرحله دارد:
01
از پایین کوه
ارتفاع کوه را بدون رفتن به نقطهٔ دقیق زیر قله به دست آوریم.
02
از بالای کوه
زاویهٔ افت افق را نسبت به خط افقی اندازه بگیریم.
بعد از این دو اندازهگیری، باقی کار فقط مثلثات است.
# مرحلهٔ اول — ارتفاع کوه را از دو نقطه پیدا کنیم
دو نقطه روی زمینی تقریباً همسطح انتخاب میکنیم. فاصلهٔ میان آنها را
d مینامیم. از نقطهٔ نزدیکتر، قله با زاویهٔ α دیده میشود و از نقطهٔ دورتر با زاویهٔ β. چون نقطهٔ اول به کوه نزدیکتر است، α از β بزرگتر خواهد بود.
مثلثبندی: با یک فاصله و دو زاویه، ارتفاع کوه
اگر ارتفاع کوه را
h بنامیم، از این دو زاویه به رابطهٔ زیر میرسیم:
FORMULA 01
h
=
d
×
tan(α) · tan(β)
tan(α) − tan(β)
مزیت این روش این است که لازم نیست فاصله تا نقطهٔ دقیق زیر قله را بدانیم؛ چون آن نقطه معمولاً داخل کوه است و نمیتوان به آن دسترسی داشت. اندازهگیری فاصلهٔ میان دو محل رصد و دو زاویه کافی است.
امروز به این کار Triangulation یا مثلثبندی میگوییم: با یک فاصله و دو زاویه، ارتفاعی را پیدا میکنیم که مستقیماً قابل اندازهگیری نیست.
# مرحلهٔ دوم — افق چقدر پایینتر دیده میشود؟
حالا به قله میرویم. از بالای کوه، افق دقیقاً همسطح چشم نیست و کمی پایینتر دیده میشود. این اختلاف را «زاویهٔ افت افق» یا Dip Angle مینامیم و با
δ نشان میدهیم.
خطی که از چشم ما به افق میرسد، در دورترین نقطه فقط با سطح زمین تماس پیدا میکند. شعاع زمین در همان نقطه بر خط دید عمود است. به این ترتیب میان مرکز زمین، قله و نقطهٔ افق یک مثلث قائمالزاویه ساخته میشود:
مثلث قائمالزاویه: مرکز زمین، قله و نقطهٔ افق
در این مثلث:
R
فاصلهٔ مرکز زمین تا افق
همان شعاع زمین؛ مجهول اصلی ما
R+h
فاصلهٔ مرکز زمین تا قله
شعاع زمین بهعلاوهٔ ارتفاع کوه
δ
زاویهٔ افت افق
زاویهٔ میان خط افقی و خط دید به افق
پس:
FORMULA 02
cos(δ)
=
R
R + h
FORMULA 03 — حل برای R
R
=
h
×
cos(δ)
1 − cos(δ)
با همین فرمول میتوان از ارتفاع چندصد متری یک کوه، شعاع چند هزار کیلومتری زمین را حساب کرد.
# حالا روش ابوریحان بیرونی را با Python اجرا کنیم
برای آزمایش، از دادههای آموزشی زیر استفاده میکنیم:
d
فاصلهٔ دو نقطهٔ رصد
۳۰۰ متر
α
زاویه از نقطهٔ نزدیک
۴۰ درجه
β
زاویه از نقطهٔ دور
۲۵ درجه
δ
زاویهٔ افت افق از قله
۳۴٫۱۸ دقیقهٔ قوسی
هر درجه ۶۰ دقیقهٔ قوسی دارد. پس زاویهٔ افت در این مثال کمتر از ۰٫۵۷ درجه است؛ زاویهای بسیار کوچک که اندازهگیری دقیق آن کار آسانی نیست.
biruni.py
from math import radians, tan, cos, pi
def mountain_height(distance_m, near_angle_deg, far_angle_deg):
alpha = radians(near_angle_deg)
beta = radians(far_angle_deg)
return (
distance_m * tan(alpha) * tan(beta)
/ (tan(alpha) - tan(beta))
)
def earth_radius(height_m, dip_arcminutes):
delta_deg = dip_arcminutes / 60
delta = radians(delta_deg)
height_km = height_m / 1000
return height_km * cos(delta) / (1 - cos(delta))
distance = 300
near_angle = 40
far_angle = 25
dip = 34.18
height = mountain_height(distance, near_angle, far_angle)
radius = earth_radius(height, dip)
circumference = 2 * pi * radius
print(f"Mountain height: {height:.2f} m")
print(f"Earth radius: {radius:.2f} km")
print(f"Earth circumference: {circumference:.2f} km")
خروجی:
output
Mountain height: 314.88 m
Earth radius: 6370.25 km
Earth circumference: 40025.47 km
شعاع میانگین زمین حدود ۶۳۷۱ کیلومتر است و محاسبهٔ ما به ۶۳۷۰٫۲۵ کیلومتر رسید. البته اعداد ورودی این مثال فقط برای آزمایش کد انتخاب شدهاند و دادههای واقعی رصد ابوریحان بیرونی نیستند.
در منابع مختلف، نتیجهٔ محاسبهٔ ابوریحان بیرونی را حدود ۶۳۳۹٫۶ کیلومتر نوشتهاند. این عدد به مقدار امروزی بسیار نزدیک است؛ با این حال، تبدیل واحدهای قدیمی و دقت واقعی ابزارهای او هنوز بین پژوهشگران مورد بحث است.
# چرا چند صدم دقیقه اهمیت دارد؟
در فرمول شعاع، عبارت
1 − cos(δ) بسیار کوچک است. به همین دلیل حتی یک تغییر کوچک در زاویه میتواند نتیجه را دهها کیلومتر جابهجا کند. برای نمونه:
sensitivity.txt
زاویهٔ 34.00 دقیقه → شعاع 6437.88 کیلومتر
زاویهٔ 34.18 دقیقه → شعاع 6370.25 کیلومتر
زاویهٔ 34.50 دقیقه → شعاع 6252.62 کیلومتر
پس سختترین بخش کار، فرمول نبود؛ اندازهگیری دقیق آن زاویهٔ کوچک بود. ناهمواری زمین، اشتباه در محاسبهٔ ارتفاع کوه و شکست نور در جو میتوانند محل ظاهری افق را تغییر دهند. خود زمین هم یک کرهٔ کاملاً دقیق نیست و در بخش استوا کمی پهنتر است.
نکتهٔ کلیدی: نزدیک بودن خروجی Python به عدد امروزی به این معنی نیست که ابزارهای قدیمی هم همین دقت را داشتهاند. این نتیجه بیشتر نشان میدهد که ایدهٔ هندسی ابوریحان بیرونی درست بوده است.
# نبوغ واقعی ابوریحان بیرونی چه بود؟
ابوریحان بیرونی نخستین کسی نبود که از کروی بودن زمین خبر داشت و نخستین اندازهگیری زمین را هم انجام نداد. کار مهم او این بود که مسئلهای بسیار بزرگ را به چند اندازهگیری ساده در یک منطقه تبدیل کرد:
1
دو زاویه از پایین کوه → ارتفاع کوه
2
یک زاویه از بالای کوه → شعاع زمین
3
شعاع × 2π → محیط زمین
ابوریحان بیرونی نمیتوانست زمین را از بیرون ببیند، اما به چنین تصویری نیاز هم نداشت. یک کوه، خط افق و چند رابطهٔ مثلثاتی برای انجام محاسبه کافی بود.
# یک کوه، سه زاویه و اندازهٔ زمین
جذابترین بخش این داستان فقط نزدیک بودن عدد به اندازهٔ امروزی نیست. نکتهٔ مهمتر این است که ابوریحان بیرونی فهمید برای اندازهگیری زمین لازم نیست دور آن سفر کند؛ کافی است ارتفاع یک کوه و افت خط افق را با دقت اندازه بگیرد.
امروز Python این محاسبه را در کسری از ثانیه انجام میدهد، اما ایدهٔ اصلی همان چیزی است که ابوریحان بیرونی حدود هزار سال پیش با نگاه کردن به یک کوه و خط افق پیدا کرد.
takeaway.txt
ابوریحان بیرونی زمین را از بیرون ندید؛
اما فهمید که انحنای افق، خودش خطکش است.
اگر بدانی چقدر بالایی و افق کجا دیده میشود،
اندازهٔ کل زمین از همین دو عدد بیرون میآید.
اما فهمید که انحنای افق، خودش خطکش است.
اگر بدانی چقدر بالایی و افق کجا دیده میشود،
اندازهٔ کل زمین از همین دو عدد بیرون میآید.
