日出时间的计算
本博客所有文字均为原创
转摘请注明出处并给出原文链接
联系方式:ibolow@gmail.com|饭否|豆瓣|Twitter:@JoyLoft


日出时间的计算

本文假定你拥有以下知识:三角函数、简单的立体几何、地球的公转与自转、时区与北京时间;此外你可能在阅读本文前,还需要一张纸、一支笔、一个普通的工程类计算器,以及一杯让你舒缓神经的水。为了完成计算,你必需要知道你当前的经纬度和日期。

由于本文涉及冗长的推导过程,可能并不适合浮躁的心情。当然,本文秉承我一贯的风格,绝不包含超出高中课本的知识。

一切准备工作就绪的话,我们就开始了。

首先,我们根据当前的日期确定太阳在黄道中的位置。我们知道,太阳大约在3月20日或3月21日直射赤道,而其运动周期是365天。所以现在太阳在黄道中的位置是
[注1]

黄道平面与赤道平面的夹角被称为黄赤夹角,大约为23.5度。根据立体几何的知识,太阳当前直射的纬度Bs满足

根据这个式子,就可以用计算器的反三角函数求得Bs

接下来,需要计算的是目前你所在纬度的昼长。由于黄道、赤道和你所在的纬圈均不同在一个平面,所以在纬圈上,太阳照射的部分并不等于纬圈的一半。这里令2θ为其超出的角度,则有下式

其中B为你当前的纬度。解出θ后,可以求得昼长等于

等等,这里我们忽略了两点:1. 阳光在大气中的折射会使得我们能见到地平线下方约37′射来的光线。2. 太阳不是点光源,它是一个约16′圆盘。考虑这两点,θ还有一个修正量[注2]

在这个基础上,重新计算昼长T。到这里,最难的问题已经解决了,还需要把当地时间,根据经度L换算到北京时间。也就是当地正午(太阳最高时)的北京时间为

那么日出时间tr和日落时间ts

为了验证以上计算的正确性,这里有一个基于Google Maps的在线日出日落计算器。[外部链接]

由于忽略了地球公转的椭圆轨道(近似为圆),忽略了地球表面的起伏(近似为球)等因素。以上的计算过程和实际值具有一定误差,而上面那个网页是用经验公式求得的,更为精确。

注1:为了方便,也可以夏至(或秋分,冬至)作为起算点。不过需要对应的加上

注2:这是一个近似的做法,其依据是太阳日出的过程并不长,可以把弧段近似看作线段。但这一点只能在中低纬度地区得到保证。对精确解法有兴趣的同学,可以试着动手算一算。



Comments (8) left to “日出时间的计算”

  1. Cavendish Qi wrote:

    好强,有没有农历和公历转换的公式或者算法呀?

  2. Fishrine wrote:

    这次只从头到尾看了一遍就懂了~ 开卷的话肯定过了^^

  3. 夜弓 wrote:

    农历……
    农历其实是一个很飘移的东西。

  4. zenzen wrote:

    夜弓 ,写一个农历的吧,资料明天发给你。
    不过是有点麻烦。

  5. 匿名 wrote:

    日出时刻:06:15:20
    日落时刻:17:00:27
    白昼时间:10时45分7秒
    黑夜时间:13时14分53秒
    以上均为北京时间,+0800

  6. 数学爱好者 wrote:

    请问您,其中有Bs,但那个B是什么?
    请继续最快速的解答
    谢谢
    还有那个T的公式,24是在分子还是分母

  7. 夜弓的咖啡馆 » Travel to Eastbourne wrote:

    […] Although weather report said it would rain in Eastbourne on Monday. I still want to try my best for the sea-side sunrise. After checking the sunrise calendar (of course I can calculate by myself but not accurate enough), I found that the sunrise is at 6:10 when the first train arrive at 6:00. Great challenge to me. […]

  8. 匿名 wrote:

    好!
    我引用了。

    有一点疑问,我感觉应该是 sin θ = tan Bs tan B,不知我是不是想错了?

    另:极昼 极夜 要特殊处理。

添加评论

(Never published)