白昼变长速度有多快

2023年3月30日

在北半球,刚刚过了春分,白昼正在迅速变长。我的一位同事住在挪威的 Stavanger。我们团队的半周例会是在他那里的下午 6:30,所以在过去的六个月里,我习惯于看到他背景里的窗户一片漆黑。但从一次会议到下一次会议,他的窗户从漆黑一片变成了明亮的光景。这让我开始思考一个我以前从未过多考虑的基本天文问题——白昼变长的速度到底有多快?当春天到来,白昼变长时,我们每天能获得多少额外的阳光?因此,我构建了一个小的交互式图表,显示了白昼长度如何随纬度变化,以及它如何逐日变化:

[(图表,原文中已省略)]

垂直虚线代表不同的至日和分日。正如预期的那样,对于北纬地区,最长的一天是夏至,最短的一天是冬至。在分日时,无论你位于什么纬度,白天都正好是 12 小时,这也是白天长度变化最快的时候——除非你非常靠近北极圈(纬度 66.55°)。

我之前没有意识到一个更有趣的特征是,当你靠近北极圈时,白昼的长度基本上呈现锯齿形,从冬至一直向上到夏至,然后再向下。

背后的数学原理

那么,生成这些曲线需要进行哪些计算呢?

太阳升起多久?

我们需要知道的第一件事是,在一年中的某一天,太阳升起的时间有多长。球面天文学有一个有用的量,可以帮助我们确定这一点,称为时角。一个物体的时角是它与子午线(天空中的一条线,从北向南延伸)所成的角度。将时角转换为时间单位(如小时)可以告诉我们该物体在越过子午线(天文术语中的“中天”)之前还有多久。由于我们想要从日出到日落的时间,因此白昼的长度将是从日出到中天所需时间的两倍:

tdaylight = 2H(24hr / 360°) = 2H / 15° hr.

如果我们能知道太阳升起时的时角是多少,我们就能知道一天的白昼时长。要做到这一点,我们需要知道两件事:观测者的纬度,我们称之为 λ;以及太阳的赤纬 δ,即太阳相对于天球赤道的角度。

一张图(来自 Prof. Fiona Vincent)有助于说明设置:

[(图片,原文已省略)]

我们感兴趣的物体的位置在此图中标记为 X,它显示了一般情况,即该物体在地平线上方任意高度 a 处。(请注意,纬度在此图中标记为 ϕ。)

我们知道三角形所有三条边的长度,并且想找到角 H。为此,我们可以求助于球面余弦定律

cos(90° - a) = cos(90° - λ)cos(90° - δ) + sin(90° - λ)sin(90° - δ)cosH.

由于我们想知道太阳升起时的时角,我们可以将高度 a 设置为 0。解出 H,这变为

H = arccos(-tanλ tanδ).

这就是所谓的“日出方程”。

为了利用这个方程,我们现在需要找到太阳的赤纬。太阳只是沿着天空中的一个大圆圈移动,这个大圆圈被称为“黄道”,并且一阶近似,这种运动是大致恒定的。因此,我们可以用一个简单的正弦曲线来模拟太阳在一年中的赤纬:

δ ≈ ϵ sin(T / 365d),

其中 ϵ 是地球自转轴的倾斜度(天文术语中的“黄赤交角”),约为 23.45°,而 T 只是自春分以来的天数。

将所有这些放在一起,如果你有一个纬度和一年中的某一天,你可以使用这个公式计算白昼的长度:

tdaylight ≈ (2 / 15°) arccos(-tanλ tan(23.45° × sin(2πT / 365d))) hr.

全球白昼

在这个方程中,有一些有趣的案例需要考虑。首先,假设我们在赤道上。在这种情况下,我们的纬度为零,并且该方程简化为 tdaylight = 2/15° arccos(0) hr = 12 hr. 在赤道上,一年中的每一天都正好是 12 小时。

要考虑的另一种情况是春分时会发生什么。现在我们将 T 设置为零,并且反正弦函数的参数再次消失,我们得到 12 小时。(并且由于 cos(x+π)=cosx,这也发生在秋分时。)在分日时,无论纬度如何,白天都正好是 12 小时。

最后要考虑的是,只有当参数介于 -1 和 1 之间时,反正弦函数才被定义。但是该函数的参数是两个正切的乘积,并且正切函数是无界的。让我们看看夏至会发生什么。这里 sinT 项正好是 1。如果乘积 tanλ tan23.45° 超过 1,则反正弦函数将未定义。当纬度高于 90°-23.45°=66.55° 时,就会发生这种情况。此纬度定义了北极圈,并且在此纬度及以上,夏至的白昼长度未定义。这是因为在这些纬度,太阳在一年中的这个时候不会落下!在北极的极限情况下,tan90°=∞,并且一年的白昼长度未定义。在北极,太阳每年只升起一次,在春分时升起,并一直持续到秋分。

白昼的导数

现在我们有了一个白昼长度的公式,看看它每天的变化量是很简单的。我们所要做的就是求导。转换为更有用的单位分钟/天,最终结果是:

dtdaylight / dT = (576 ϵ cos(2π˜T) tanλ sec²(ϵ sin(2π˜T))) / (73 √(1 - tan²λ tan²(ϵ sin(2π˜T)))) min / day,

为了使方程更简洁,我使用 ˜T 来表示自春分以来的年份百分比。

复杂情况

为了获得相对简单的函数形式,我在上面的图表和方程中做了一些近似。如果我们想要更准确的计算,我们需要改变什么?

大气折射和太阳边缘

在计算白天长度时,我假设白天从太阳刚好在地平线上时开始。但这并不是现实中日出的时候。首先,太阳具有有限的宽度,约为半度,因此当其中心恰好在地平线上时,一半的圆盘在地平线上方,我们仍然认为它是白天。因此,我们真正想知道的是太阳顶部何时到达地平线。

第二个复杂因素是,当我们观察到太阳升起的那一刻,它的真实位置实际上仍然在地平线之下。但是由于大气对光的折射,来自太阳的光向上弯曲,使太阳在天空中看起来比实际位置更高。

[(图片,原文已省略)] 图片来源:香港天文台

为了考虑大气折射,我们不希望计算太阳高度为零时的时角,而是希望计算其高度略小于零时的时角。在地平线上,这种效应被证明大约是太阳宽度的两倍。

考虑到太阳圆盘的宽度(行话中的“太阳边缘”)和大气折射,日出或日落时太阳的高度平均约为 -50'。(尽管由于非常靠近地平线的天气条件,大气折射变化很大。)不幸的是,这使得日出方程变得非常复杂,因为高度项不再从球面余弦定律方程中消失,我们得到

H = arccos((-tanλ tanδ - sin a) / (cosλ cosδ)).

你可以通过此图了解这种效应在不同纬度下给你的额外白天量:

[(图表,原文中已省略)]

50' 的高度差听起来不多,但是它为一天增加了不可忽略的白昼量。在洛杉矶(34°)的纬度上,它为一天增加了大约八分钟的额外白昼。因此,严格来说,“分日”有点用词不当——由于大气层,白天长度并不完全等于夜晚长度。即使在赤道上,该效应最弱,分日时也有 6 分 40 秒的额外白昼,因此白天比夜晚长 13 分多钟!并且在更高的纬度,大气折射的影响变得更加明显。在这些纬度,黄道几乎平行于地平线延伸,因此太阳必须在水平方向上移动相当长的一段距离才能在垂直方向上取得很大进展。对于我在 Stavanger 的朋友来说,这种效应在他的至日期间每天增加了近 20 分钟。但是至少在你非常靠近北极圈之前,由于这种效应,每天的白昼量变化相对较小。

偏心率和黄道倾角

我用于白昼长度的方程存在第二个问题。在计算太阳的赤纬时,我只是将其建模为一个简单的正弦曲线:

δ ≈ ϵ sin(T / 365d).

这是一个相当不错的近似值,但它有两个问题。首先,它没有正确考虑球面几何形状。你可以想象,如果黄道倾斜 90°,太阳的赤纬将只是从 0° 线性增加到 90°,然后再降回来。实际上,正确的等式是

δ = arcsin(-sin ϵ sin(T / 365d)).

我们实际上使用的是 sinx≃x 的小角度近似及其逆函数 arcsinx≃x。由于 ϵ,黄道的倾斜度是(某种程度上)小的,因此该近似值与真值的差最多为 1.5°,并且最终对每天白昼量的变化影响很小。

太阳赤纬的简单模型错误的另一种方式是,它假设太阳在一年中的角速度是恒定的。但是由于地球的轨道是椭圆形的,因此当地球在近日点(发生在 1 月初)时,太阳的视运动速度将比平均速度快一些,而当地球在远日点(在 7 月初)时,太阳的视运动速度将比平均速度慢。

要考虑地球轨道的偏心率,你需要转向 Kepler 方程

2π˜T = E - e sinE,

其中 E 是偏近点角,e 是地球轨道的偏心率。在解出这个超越方程后,你需要将偏近点角转换为真近点角

ν = arccos((cosE - e) / (1 - e cosE)).

这将为你提供真太阳的黄道经度,而不是平均太阳的黄道经度。

然而,地球轨道偏心率对白昼长度的总体影响很小。在一年中,太阳相对于背景恒星从西向东漂移。由于这种漂移,太阳日的长度比恒星日(地球完整旋转 360°)长约四分钟。这意味着在近日点附近,当太阳的运动速度快于平均速度时,白昼的长度将比其他时间略长。而在远日点附近,白昼的长度将略短。但是即使在效果最大的时候,白昼长度的变化也只有 10 秒左右(除非,和往常一样,你在北极圈或非常靠近北极圈)。

因此,这些是一些找出白昼长度的方法,有些更简单,有些更准确。如果你想查看我用来生成这些图表的代码,可以在这个 Jupyter notebook 中找到它。