Prediksi Gerhana Tak Perlu Menggunakan Siklus Saros atau Melibatkan NASA

Dengan kemampuan pemrosesan komputer saat ini, prediksi gerhana biasanya dilakukan secara iteratif. Prediksi dilakukan dengan cara menentukan posisi Bulan dan Matahari pada satu waktu, dan menghitung apakah terjadi gerhana. Proses tersebut diulangi lagi berkali-kali untuk waktu yang berbeda.

Kaum Bumi datar mengklaim tak ada yang bisa memprediksi gerhana dari perhitungan posisi Bulan dan Matahari. Mereka keliru menganggap NASA memprediksi gerhana dengan menggunakan siklus Saros. Script Python singkat ini membuktikan mereka salah.

Prediksi gerhana dilakukan dengan bantuan ephemeris, yaitu perhitungan posisi benda langit pada waktu tertentu. Dengan ephemeris, kita dapat mengetahui posisi Matahari & Bulan pada suatu waktu, lalu menghitung sudut elongasinya untuk menentukan apakah terjadi gerhana.

Pada gerhana Matahari tahun 2017, NASA bahkan menggunakan data kontur permukaan Bumi dan Bulan untuk menghitung daerah terjadinya gerhana Matahari. Daerah terjadinya gerhana tak lagi berbentuk bundar atau lonjong di permukaan Bumi, tapi tak beraturan. Hal ini mustahil diketahui hanya dari siklus Saros saja.

Kaum Bumi datar mengira prediksi gerhana adalah monopoli NASA, dan kita hanya dapat menunggu hasil prediksi dari NASA. Kenyataannya tidak begitu. Siapa pun dengan pengetahuan yang memadai  juga dapat memprediksi gerhana. Hasilnya pun akan cukup akurat

Untuk demonstrasi, kami telah membuat sebuah script Python yang sangat singkat dan sederhana untuk memprediksi gerhana Bulan pada abad ke-21. Script tersebut tak lebih dari 20 baris, dan siapa pun yang mengerti bahasa pemrograman tak akan kesulitan untuk mempelajarinya.

Source code

#!/usr/bin/env python
'''
lunar-eclipse-prediction.py

Shows the occurences of a lunar eclipse in the 21st century.
Works by iterating every hour in the 21st century and calculating if the
separation between the Moon and the Sun is less than 0.9° from 180°.
The number 0.9° is hardcoded for simplicity, for more accuracy, it
should be computed from the distance of the Moon and the Sun.
'''
import ephem
from datetime import datetime, timedelta

curtime = datetime(2001, 1, 1, 0, 0, 0) # start time
endtime = datetime(2100, 12, 31, 23, 59, 59) # end time
moon = ephem.Moon()
sun = ephem.Sun()
observer = ephem.Observer()
observer.elevation = -6371000 # place observer in the center of the Earth
observer.pressure = 0 # disable refraction

while curtime <= endtime:
    observer.date = curtime.strftime('%Y/%m/%d %H:%M:%S')

    # computer the position of the sun and the moon with respect to the observer
    moon.compute(observer)
    sun.compute(observer)

    # calculate separation between the moon and the sun, convert
    # it from radians to degrees, substract it by 180°
    sep = abs((float(ephem.separation(moon, sun))
          / 0.01745329252) - 180)

    # eclipse happens if Sun-Earth-Moon alignment is less than 0.9°.
    # this should detect all total and partial eclipses, but is
    # hit-and-miss for penumbral eclipses.
    # the number is hardcoded for simplicity. for accuracy it should
    # be computed from the distance to the Sun and the Moon.
    if sep < 0.9:
        print(curtime.strftime('%Y/%m/%d %H:%M:%S'), sep)
        # an eclipse cannot happen more than once in a day,
        # so we skip 24 hours when an eclipse is found
        curtime += timedelta(days = 1)
    else:
        # advance an hour if eclipse is not found
        curtime += timedelta(hours = 1)

Pembaharuan dapat dilihat di repository GitHub kami: flatearthws/eclipse-calculations

Referensi