本文將使用非常理想化的模型粗略地計算白晝時間和正午時刻,並以此算出日出、日沒的時間。
怎么算白晝時間?或者說,怎么算白晝時間占一天時間中的比例?算出太陽的周日平行圈(太陽在天球上運動的軌跡)有多大一部分在地平線以上就可以了(忽略太陽一天之內的公轉以及地球自轉的不均勻)。
想要算出這個比例,需要這兩個量:
符號 | 含義 | Why? |
\( \delta \) | 太陽赤緯(太陽直射點緯度,北緯為正) | 夏天晝長,冬天晝短 |
\( \varphi \) | 當地緯度(北緯為正) | 北極極晝,南極極夜 |
如圖,以北半球冬季為例,把天球、地平線和平行圈畫出來,再作幾條輔助線,通過幾何關系來用 \( \delta \) 和 \( \varphi \) 表示要求的比例:
設天球的球心為 \(O\), 半徑為 \(1\), 平行圈的圓心為 \(O'\), 太陽從 \(A\) 點升起,從 \(B\) 點落下,觀察者不在極點。連接 \(AB\), \(AO\), \(AO'\), \(BO\), \(BO'\).
取 \(AB\) 的中點 \(M\), 連接 \(MO\), \(MO'\). 易知 \( \angle{OAO'} = -\delta \), \( \angle{MOO'} = \varphi \).
設 \( \angle{MO'A} = \theta \), 則所求比例為 \( \frac{2\theta}{360^{\circ}} = \frac{\theta}{180^{\circ}} \).
\( \because OO'\perp 平面 O'AB \)
\( \therefore OO'\perp O'M, OO'\perp O'A \)
\( \therefore O'O = \sin{(-\delta)}, O'A = \cos{(-\delta)} \)
\( \therefore O'M = O'O \cdot \tan{\varphi} = \sin{(-\delta)}\tan{\varphi} \)
\( \therefore \cos{\theta} = \frac{O'M}{O'A} = \frac{\sin{(-\delta)}\tan{\varphi}}{\cos{(-\delta)}} = \tan{(-\delta)}\tan{\varphi} \)
\( \therefore \theta = \arccos{(\tan{(-\delta)}\tan{\varphi})} \)
\( \therefore \frac{\theta}{{180}^{\circ}} = \frac{\arccos{(\tan{(-\delta)}\tan{\varphi})}}{{180}^{\circ}} \)
得到晝長關於 \( \delta \) 和 \( \varphi \) 的表達式:
\( \mathrm{daytime} = \frac{\arccos{(\tan{(-\delta)}\tan{\varphi})}}{{180}^{\circ}} \cdot {24}^{\mathrm{h}} \) \( (\varphi \neq \pm {90}^{\circ}) \)
雖然這個式子是從「北半球冬季」這一種情況推出來的,但也適用於南半球和夏季(代入 \( -\delta \) 和 \( -\varphi \) 容易看出)。
……
那么問題來了:\( \delta \) 怎么求?還得畫個球:
如圖,天球的中心是地球,黃道和赤道相交,設春分點為 \(E\), 秋分點為 \(E'\), 太陽為 \(S\), 黃赤交角為 \( \varepsilon \), 太陽地心黃經為 \( \lambda \).
通過幾何關系用 \( \varepsilon \) 和 \( \lambda \) 表示 \( \delta \):
過 \(S\) 作大圓弧 \(SS'\) 垂直於赤道交赤道於 \(S'\) ( 圖示位罝 ).
跟據球面三角形正弦定理,在球面 \( \triangle{SES'} \) 中,有:
\( \frac{\sin{(-\delta)}}{\sin{\varepsilon}}=\frac{\sin{(-\lambda)}}{\sin{{90}^{\circ}}} \)
\( \sin{\delta} = \sin{\lambda}\sin{\varepsilon} \)
\( \delta = \arcsin{(\sin{\lambda}\sin{\varepsilon})} \)
這個式子也是適用於各種情況的。
……
問題又來了,\( \lambda \) 怎么求?這就不用畫球了,也沒球可畫了。一是可以直接用軌道參數去算,二是可以先搞到各節氣的日期,然后在鄰近的兩個節氣間進行線性插值。
聯立以上各式,可得白晝時間關於緯度和太陽黃經的表達式:
\( \mathrm{daytime} = {24}^{\mathrm{h}}\cdot\frac{\arccos{(\tan{(-\arcsin{(sin{\lambda}sin{\varepsilon})})}\tan{\varphi})}}{{180}^{\circ}} \) \( (\varphi \neq \pm {90}^{\circ}) \)
或
\( \mathrm{daytime} = {24}^{\mathrm{h}}\cdot(1-\frac{\arccos{(\tan{(\arcsin{(sin{\lambda}sin{\varepsilon})})}\tan{\varphi})}}{{180}^{\circ}}) \) \( (\varphi \neq \pm {90}^{\circ}) \)
或
\( \mathrm{daytime} = {24}^{\mathrm{h}}\cdot(1-\frac{\arccos{\frac{\sin{\lambda}\sin{\varepsilon}\tan{\varphi}}{\sqrt{1-\sin^2{\lambda}\sin^2{\varepsilon}}}}}{{180}^{\circ}}) \) \( (\varphi \neq \pm {90}^{\circ}) \)
北緯 \( {36.5}^{\circ} \) 的白晝時間關於太陽黃經的變化情況如下圖:
看起來特別像正弦曲線,嘗試擬合一下:
\( \mathrm{daytime} \approx {12}^{\mathrm{h}} \cdot [(1-\frac{\arccos{(\tan{\varepsilon}\tan{\varphi})}}{{90}^{\circ}})\cdot sin{\lambda} + 1] \) \( (\varphi \neq \pm {90}^{\circ}) \)
看看誤差:
最大誤差 \( \pm 6 \mathrm{min} \), 效果比較一般,表達式也沒簡化多少,看來還是得用原式。
有了白晝時間,日出日沒時刻可用下面兩式計算:
\( T_{sunrise} = T_{noon} - \frac{\mathrm{daytime}}{2} \) (1)
\( T_{sunset} = T_{noon} + \frac{\mathrm{daytime}}{2} \) (2)
問題又來了,正午 \( T_{noon} \) 不一定是 12:00:
首先,區時和地方時之間有可能會差不少,這會導致正午時刻偏離 12:00.
其次,由於太陽運動的不均勻(均時差),正午時刻也會偏離 12:00.
這兩個效應會疊加。第一個問題好解決,只要知道時區中央經線的經度和當地的經度,就萬事大吉了。第二個就不大好算了。《天文算法》中給出了一個近似公式(我把高階項都扔掉了):
\( E' = T_{mean}-T_{true} = 4 \cdot [ \tan^2{(\frac{\varepsilon}{2})}\cdot \sin{2L}+2e\cdot \sin{(L-\varpi)} ] \) ( E' 的單位為分鍾 )
其中 \(L\) 為太陽平黃經(即平太陽黃經,(假想的)平太陽以一個回歸年為周期在黃道上做勻速圓周運動。可以近似地認為它等於上個春分和今天之間差的天數(或再乘以平太陽的角速度 \( \frac{{360}^{\circ}}{{365.2422}^{\mathrm{d}}} \) )),\(e\) 為地球軌道離心率,\( \varpi \) 為地球近日點(日心)黃經。\(e \approx 0.0167 \) 和 \( \varpi\approx {102.982}^{\circ} \) 在短時間內可看作常數。
作圖(\(E\) 關於 \(L\) 的變化情況):
現在要求正午時間,令 \( T_{true} = 12:00 \), 解得:
\( T_{mean}=12:00+E' \)
補上區時和地方時的偏差,最終得到:
\( T_{noon}=12:00 + 4^{\mathrm{m}}\cdot(L_{zone}-L_{local}) + 4^{\mathrm{m}} \cdot [ \tan^2{(\frac{\varepsilon}{2})}\cdot \sin{2L}+2e\cdot \sin{(L-\varpi)} ] \)
其中 \( L_{zone} \) 和 \( L_{local} \) 分別為時區中央經線的經度和當地的經度(東經為正)。
至此,大功告成,用 (1) 和 (2) 計算日出日沒就可以了。