Luku 1
Paikkojen laskeminen
Auringonpimennys tapahtuu uudenkuun aikaan, kuunpimennys täydenkuun aikaan. Kumpikin näistä tapahtuu joka kuukausi, mutta joka kuukausi ei yleensä tapahdu kumpaakaan pimennystä. Syynä on Kuun ratataso, joka on kallistunut noin viisi astetta verrattuna Maan ratatasoon, jolla Aurinkokin sijaitsee.
Maasta taivaalle päin katsottuna Kuun kuvitteellinen rata taivaalla leikkaa ekliptikan eli Auringon kuvitteellisen radan tässä noin viiden asteen kulmassa. Pimennyksiä voi tapahtua, mikäli Kuu on uuden- tai täydenkuun aikaan tämän leikkauspisteen eli solmun kohdalla. Yleensä Kuu ohittaa Auringon (tai Maan varjon) reilusti jommalta kummalta puolelta. Käsitellään aluksi uudenkuun hetkiä eli auringonpimennyksiä, kuunpimennyksiin siirrytään myöhemmin.
1.1 Paikat taivaalla
Katsotaan, miltä tilanne näyttää kahdessa tapauksessa: toukokuussa 2027, jolloin uusikuu ohittaa Auringon reilusti pohjoisen puolelta, ja elokuussa 2027, jolloin Kuun reitti leikkaa ekliptikan suunnilleen uudenkuun aikaan, ja syntyy auringonpimennys.
Kuun reitti tähtitaivaalla Auringon ohitse uudenkuun aikaan touko- ja elokuussa 2027. Toukokuun uusikuu tapahtuu, kun Kuun rata on kallistunut maksimiinsa Auringon suunnalla. Kuu ohittaa Auringon yli viiden asteen päästä. Elokuun uusikuu näkyy ratatasojen leikkauspisteen eli solmun suunnassa. Pimennys voi syntyä silloin, kun Aurinko on uudenkuun hetkellä riittävän lähellä solmua.
Koska Kuun (ja Auringonkin) paikka tähtitaivasta vasten vaihtelee hieman sen mukaan, missä päin maapalloa havaitsija on, kuvan 1.1 näkymä on geosentrinen eli laskettu maapallon keskipisteestä katsoen.
Tietääksemme, tapahtuuko pimennys vai ei, on ensin selvitettävä uudenkuun ajankohdatKäytetään uudenkuun määritelmänä sitä hetkeä, jolloin Kuun ja Auringon ekliptinen pituusaste on sama., laskettava Auringon ja Kuun välinen kulmaetäisyys, ja keksittävä jonkinlaiset rajat sille, voiko pimennys tapahtua jossain päin maapalloa vai ei.
Vaihdetaan ensin koordinaatisto ekvatoriaalisesta ekliptiseen, eli tehdään kuvan 1.1 Auringon radasta uusi x-akseli. Kuu liikkuu tähtitaivasta vasten paljon Aurinkoa nopeammin. Kuu etenee halkaisijansa verran noin tunnissa, Aurinko noin 12 tunnissa.
Katsotaan elokuun tilannetta vielä tarkemmin.
Kuvasta hahmotetaan, että ainakin maapallon keskipisteestä katsoen pimennys tapahtuisi, jos Auringon ja Kuun keskipisteiden välinen kulmaetäisyys on pienempi kuin niiden näennäisten säteiden summa. Elokuussa näin näyttää olevan. Lisäksi huomataan, että tämän uudenkuun aikaan kaikkein lähin etäisyys ei osu juuri uudenkuun hetkeen vaan hieman sen jälkeen, koska Kuun rata kulkee alaspäin ja vasemmalle.
1.2 Raaka voima
Koska kappaleiden paikkojen laskeminen annetulla ajanhetkellä on tietokoneen avustuksella helppoa, kokeillaan yksinkertaisesti laskea kappaleiden välinen kulma ajan funktiona (aivan kuten yllä olevien kuvien piirtämistä varten on laskettu).
Koodi kulmaetäisyyden laskemiseen Skyfieldillä
from skyfield.api import load
ts = load.timescale()
eph = load('de440s.bsp')
earth = eph['earth']
sun, moon = eph['sun'], eph['moon']
t = ts.utc(2027, 8, 2, 9, range(5, 126, 10))
p = earth.at(t)
s = p.observe(sun).apparent()
m = p.observe(moon).apparent()
sep = s.separation_from(m).degrees
for ti, deg in zip(t, sep):
stamp = ti.utc_strftime('%Y-%m-%d %H:%M')
print(f"{stamp} - {deg:.2f}")2027-08-02 09:05 - 0.63
2027-08-02 09:15 - 0.53
2027-08-02 09:25 - 0.44
2027-08-02 09:35 - 0.35
2027-08-02 09:45 - 0.26
2027-08-02 09:55 - 0.19
2027-08-02 10:05 - 0.15
2027-08-02 10:15 - 0.17
2027-08-02 10:25 - 0.23
2027-08-02 10:35 - 0.32
2027-08-02 10:45 - 0.41
2027-08-02 10:55 - 0.50
2027-08-02 11:05 - 0.60 Kuun ja Auringon välinen kulmaetäisyys 2027-08-02.
Kuvasta 1.4 nähdään etäisyyden olevan alle 0.5° (pimennys tapahtuu), ja harjaantunut silmä saattaa huomata minimietäisyyden olevan hieman alimman pisteen oikealla puolella.
Vaikka nykytietokoneilla siltä ei heti tuntuisikaan, ratkomme silti
ongelmaa liian monimutkaisesti. Joudumme laskemaan Auringon ja Kuun
paikat monta kertaa pelkästään tälle yksittäiselle uudenkuun hetkelle.
Sitä paitsi jokainen käppyrässä esitetty kulmaetäisyyspiste on
laskettu pallokoordinaatistossa aivan turhan hankalalla
kaavalla.Pallokolmion kosinilause (haversine):
missä
= rektaskensio, deklinaatio. Tarkan minimietäisyyden
hetken selvittäminen edellyttäisi jonkinlaisen hyperbelin sovittamista
yllä olevaan pistejoukkoon, tai sitten jonkin muun
minimointialgoritmin käyttämistä.
Jos joutuisit laskemaan näitä kynällä, paperilla ja laskutikulla, et ikinä toimisi näin monimutkaisesti. Tarjolla on ainakin kaksi ilmiselvää oikotietä.
Ensinnäkin ekliptika on valitsemamme pallokoordinaatiston päiväntasaaja (isoympyrä), ja kaikki meitä kiinnostava tapahtuu korkeintaan muutaman asteen päässä siitä. Voimme siis aivan hyvin unohtaa pallokoordinaatiston ja ratkoa asiat suorakulmaisessa koordinaatistossa (jossa yllä olevat kuvatkin on piirretty).
Toiseksi Auringon ja Kuun liikkeet lähellä uuttakuuta ovat hyvin tasaisia ja lineaarisia.Kuinka lineaarisia? Alla Kuun ja Auringon ekliptinen pituusaste sekä Kuun ekliptinen leveysaste tunnin ajalta uudenkuun kummallakin puolella.
1.3 Pienin kulmaetäisyys
Hyödynnetään näitä kahta approksimaatiota ja tutkitaan Kuun ja Auringon paikkoja solmupisteen lähellä. Alkuperäiset laskut, ks. Explanatory Supplement kappale 11.2.2 ja kuva 11.1.
Aurinko ja Kuu suorakulmaisessa koordinaatistossa: S ja M uudenkuun hetkellä, S′ ja M′ hetkeä myöhemmin. Kuvassa myös kulmaetäisyys σ, solmu N ja Kuun radan kaltevuus I. on Kuun leveysaste uudenkuun hetkellä. Mittakaava ja nopeuksien suhde ei ole todenmukainen.
Haluaisimme laskea σ:n, erityisesti sen minimiarvonVino katkoviiva kuvassa 1.5.. Keksitään sitä varten uusi suure: Kuun ja Auringon ”vaakanopeuksien” suhde λ. Huomaa, että kappaleet liikkuvat tasaista nopeutta.
Johto välivaiheineen
Suorakulmaisesta kolmiosta
Lasketaan kummatkin kateetit. Kolmiosta saadaan
ja λ:n määritelmän mukaan joten
Kolmiosta puolestaan ja koska
Sijoitetaan molemmat:
Etsitään pienin arvo tämän derivaatan nollakohdasta. Koska riippuu kulmasta vain sen tangentin kautta, riittää derivoida tangentin suhteen:
josta
Merkitään nimittäjää kirjaimella . Silloin eli
Sijoitus takaisin σ²:n lausekkeeseen antaa
sillä hakasulkeiden sisältö on .
Kulmaetäisyyden minimiksi saadaan
Pärjäisimme jo tällä, mutta tehdään vielä yksi hyvin havainnolliseksi osoittautuva muuttujanvaihto. Määritellään
Kulma vastaa nyt kulmaa, jossa Kuun rata näennäisesti risteäisi ekliptikan kanssa, jos koordinaatisto on kiinnitetty Aurinkoon.
Kun koordinaatisto liikkuu Auringon mukana, Kuu näyttääkin risteävän ekliptikan kulmassa .
Sama tilanne piirrettynä paikallaan pysyvässä, Aurinkoon kiinnitetyssä koordinaatistossa. Nyt kulmaetäisyyden minimi on helppo määrittää.
Kulman avulla ilmaistuna minimikulmaetäisyys on nyt yksinkertaisesti
1.4 Käytännön esimerkki
Lasketaan nyt minimietäisyydet käytännössä. Etsitään ensin kaikki uudenkuun hetket vuonna 2027:
Koodi uudenkuun hetkien etsimiseen Skyfieldillä
from skyfield import almanac
from skyfield.api import load
ts = load.timescale()
eph = load('de440s.bsp')
t0, t1 = ts.utc(2027, 1, 1), ts.utc(2028, 1, 1)
t, phase = almanac.find_discrete(t0, t1, almanac.moon_phases(eph))
for ti in t[phase == 0]:
print(ti.utc_strftime('%Y-%m-%d %H:%M')) 2027-01-07 20:24
2027-02-06 15:56
2027-03-08 09:29
2027-04-06 23:51
2027-05-06 10:59
2027-06-04 19:40
2027-07-04 03:02
2027-08-02 10:05
2027-08-31 17:41
2027-09-30 02:36
2027-10-29 13:37
2027-11-28 03:24
2027-12-27 20:12
Seuraavaksi määritetään kullekin uudenkuun hetkelle , , ja Nopeudet ja kulma I saadaan numeerisesti: molempien paikat lasketaan minuutti ennen ja minuutti jälkeen uudenkuun hetken. Pituusasteliikkeiden suhde antaa λ:n, ja Kuun leveysasteen muutos jaettuna sen pituusasteen muutoksella antaa tan I. , ja niiden avulla minimietäisyys:
Koodi minimietäisyyden laskemiseen
# continue from previous
from numpy import arctan, cos
from skyfield.framelib import ecliptic_frame
earth, sun, moon = eph['earth'], eph['sun'], eph['moon']
def lonlat(body, ti):
lat, lon, _ = earth.at(ti).observe(body).apparent().frame_latlon(ecliptic_frame)
return lon.degrees, lat.degrees
def wrap(d):
return (d + 180) % 360 - 180
for ti in t[phase == 0]:
a, b = ts.tt_jd(ti.tt - 1 / 1440), ts.tt_jd(ti.tt + 1 / 1440)
ml_a, mb_a = lonlat(moon, a)
ml_b, mb_b = lonlat(moon, b)
sl_a, _ = lonlat(sun, a)
sl_b, _ = lonlat(sun, b)
beta = lonlat(moon, ti)[1]
lam = wrap(ml_b - ml_a) / wrap(sl_b - sl_a)
tan_I = (mb_b - mb_a) / wrap(ml_b - ml_a)
I_ = arctan(lam / (lam - 1) * tan_I)
sigma = abs(beta) * cos(I_)
print(f"{ti.utc_strftime('%Y-%m-%d %H:%M')} - {sigma:.3f}") 2027-01-07 20:24 - 2.862
2027-02-06 15:56 - 0.267
2027-03-08 09:29 - 2.380
2027-04-06 23:51 - 4.303
2027-05-06 10:59 - 5.006
2027-06-04 19:40 - 4.362
2027-07-04 03:02 - 2.586
2027-08-02 10:05 - 0.145
2027-08-31 17:41 - 2.352
2027-09-30 02:36 - 4.252
2027-10-29 13:37 - 5.002
2027-11-28 03:24 - 4.316
2027-12-27 20:12 - 2.338
Listan kaksi pienintä etäisyyttä osuvat helmi- ja elokuulle (lihavoidut rivit). Näinä kuukausina tapahtuu auringonpimennys. Seuraavassa luvussa opettelemme selvittämään tarkat raja-arvot pimennysten löytämiseksi.