日出时间的计算
本文假定你拥有以下知识:三角函数、简单的立体几何、地球的公转与自转、时区与北京时间;此外你可能在阅读本文前,还需要一张纸、一支笔、一个普通的工程类计算器,以及一杯让你舒缓神经的水。为了完成计算,你必需要知道你当前的经纬度和日期。
由于本文涉及冗长的推导过程,可能并不适合浮躁的心情。当然,本文秉承我一贯的风格,绝不包含超出高中课本的知识。
一切准备工作就绪的话,我们就开始了。
首先,我们根据当前的日期确定太阳在黄道中的位置。我们知道,太阳大约在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:这是一个近似的做法,其依据是太阳日出的过程并不长,可以把弧段近似看作线段。但这一点只能在中低纬度地区得到保证。对精确解法有兴趣的同学,可以试着动手算一算。
Cavendish Qi wrote:
好强,有没有农历和公历转换的公式或者算法呀?
Posted on 15-Aug-07 at 4:52 pm | Permalink
Fishrine wrote:
这次只从头到尾看了一遍就懂了~ 开卷的话肯定过了^^
Posted on 15-Aug-07 at 5:38 pm | Permalink
夜弓 wrote:
农历……
农历其实是一个很飘移的东西。
Posted on 15-Aug-07 at 6:35 pm | Permalink
zenzen wrote:
夜弓 ,写一个农历的吧,资料明天发给你。
不过是有点麻烦。
Posted on 19-Aug-07 at 11:07 pm | Permalink
匿名 wrote:
日出时刻:06:15:20
日落时刻:17:00:27
白昼时间:10时45分7秒
黑夜时间:13时14分53秒
以上均为北京时间,+0800
Posted on 08-十一月-07 at 9:31 am | Permalink
数学爱好者 wrote:
请问您,其中有Bs,但那个B是什么?
请继续最快速的解答
谢谢
还有那个T的公式,24是在分子还是分母
Posted on 25-Feb-09 at 10:14 pm | Permalink
夜弓的咖啡馆 » 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. […]
Posted on 03-九月-09 at 9:25 am | Permalink
匿名 wrote:
好!
我引用了。
有一点疑问,我感觉应该是 sin θ = tan Bs tan B,不知我是不是想错了?
另:极昼 极夜 要特殊处理。
Posted on 19-Jun-10 at 9:33 pm | Permalink