没有合适的资源?快使用搜索试试~ 我知道了~
算法系列之十八:用天文方法计算二十四节气(下).doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 144 浏览量
2022-05-30
18:17:07
上传
评论
收藏 91KB DOC 举报
温馨提示
试读
12页
算法系列之十八:用天文方法计算二十四节气(下).doc
资源推荐
资源详情
资源评论
算法系列之十八:用天文方法计算二十四节气(下)
经过上述计算转换得到坐标值是理论值,或者说是天体的几何位置,但是 FK5 系统是一个
目视系统,也就是说体现的是人眼睛观察效果(光学位置),这就需要根据地球的物理环
境、大气环境等信息做进一步的修正,使其和人类从地球上观察星体的观测结果一致。
首先需要进行章动修正。章动是指地球沿自转轴的指向绕黄道极缓慢旋转过程中,由
于地球上物质分布不均匀性和月球及其它行星的摄动力造成的轻微抖动。英国天文学家詹
姆斯·布拉德利(1693—1762)最早发现了章动,章动可以沿着黄道分解为水平分量和垂直分
量,黄道上的水平分量记为 Δψ,称为黄经章动,它影响了天球上所有天体的经度。黄道
上的垂直分量记为 Δε,称为交角章动,它影响了黄赤交角。目前编制天文年历所依据的章
动理论是伍拉德在 1953 年建立的,它是以刚体地球模型为基础的。1977 年,国际天文联
合会的一个专家小组建议采用非刚体地球模型――莫洛坚斯基 II 模型代替刚体地球模型计
算章动,1979 年的国际天文学联合会第十七届大会正式通过了这一建议,并决定于 1984
年正式实施。
地球章动主要是月球运动引起的,也具有一定的周期性,可以描述为一些周期项的和,
主要项的周期是 6798.4 日(18.6 年),但其它项是一些短周期项(小于 10 天)。本文采用的计
算方法取自国际天文联合会的 IAU1980 章动理论,周期项系数数据来源于《天文算法》一
书第 21 章的表 21-A,该表忽略了 IAU1980 章动理论中系数小于 0.0003"的周期项,因此
只有 63 项。每个周期项包括计算黄经章动(Δψ)的正弦系数(相位内项系数)、计算交
角章动的(Δε)余弦系数(相位外项系数)以及计算辐角的 5 个基本角距
(M、M'、D、F、Ω)的线性组合系数。5 个基本角距的计算公式是:
平距角(日月对地心的角距离):
D = 297.85036 + 455267.111480 * T- 0.0019142 * T
2
+ T
3
/ 189474(3.10 式)
太阳(地球)平近点角:
M = 357.52772 + 35999.050340 * T- 0.0001603 * T
2
- T
3
/ 300000(3.11 式)
月球平近点角
M'= 134.96298 + 477198.867398 * T + 0.0086972 * T
2
+ T
3
/ 56250(3.12 式)
月球纬度参数:
F = 93.27191 + 483202.017538 * T- 0.0036825 * T
2
+ T
3
/ 327270(3.13 式)
黄道与月球平轨道升交点黄经:
Ω= 125.04452 - 1934.136261 * T + 0.0020708 * T
2
+ T
3
/ 450000(3.14 式)
以上各式中的 T 是儒略世纪数,计算出来的 5 个基本角距的单位都是度,在计算正弦或余
弦时要转换为弧度单位。计算每一个周期项的黄经章动过程是这样的,首先将 3.10-3.14
式计算出来的值与对应的 5 个基本角距系数组合,计算出辐角。以本文使用的章动周期项
系数表中的第七项为例,5 个基本角距对应的系数分别是 1、0、-2、2 和 2,辐角 θ 的值就
是:-2D + M + 2F + 2Ω。计算出辐角后就可以计算周期项的值:
S = (S1+ S2 * T) * sin(θ) (3.15 式)
仍以第七项为例,S 的值就是(-517 + 1.2 * T)*sin(θ)。对每一项的值 S 累加就可得到黄
经章动,单位是 0.0001"。交角章动的计算方法与黄经章动的计算类似,辐角 θ 的值是一样
的,只是计算章动使用的是余弦系数:
C = (C1 + C2 * T) * cos(θ) (3.16 式)
CalcEarthLongitudeNutation()函数就是计算黄经章动的实现代码:
doubleCalcEarthLongitudeNutation(doubledt)
{
doubleT=dt*10;
doubleD,M,Mp,F,Omega;
GetEarthNutationParameter(dt,&D,&M,&Mp,&F,&Omega);
doubleresulte=0.0;
for(inti=0;i<sizeof(nutation)/sizeof(nutation[0
]);i++)
{
doublesita=nutation[i].D*D+nutation[i].M*M+nutati
on[i].Mp*Mp+nutation[i].F*F+nutation[i].omega*Omega
;
resulte+=(nutation[i].sine1+nutation[i].sine2*T)*si
n(sita);
}
/*先乘以章动表的系数 0.0001,然后换算成度的单位*/
returnresulte*0.0001/3600.0;
}
GetEarthNutationParameter()辅助函数用于计算 5 个基本角距:
voidGetEarthNutationParameter(doubledt,double*D,double
*M,double*Mp,double*F,double*Omega)
{
doubleT=dt*10;/*T 是从 J2000 起算的儒略世纪数*/
doubleT2=T*T;
doubleT3=T2*T;
/*平距角(如月对地心的角距离)*/
*D=297.85036+445267.111480*T-0.0019142*T2+T
3/189474.0;
/*太阳(地球)平近点角*/
*M=357.52772+35999.050340*T-0.0001603*T2-T3
/300000.0;
/*月亮平近点角*/
*Mp=134.96298+477198.867398*T+0.0086972*T2+
T3/56250.0;
/*月亮纬度参数*/
*F=93.27191+483202.017538*T-0.0036825*T2+T3
/327270.0;
/*黄道与月亮平轨道升交点黄经*/
*Omega=125.04452-1934.136261*T+0.0020708*T2+
T3/450000.0;
}
同样,计算交角章动的实现代码是:
doubleCalcEarthObliquityNutation(doubledt)
{
doubleT=dt*10;/*T 是从 J2000 起算的儒略世纪数*/
doubleD,M,Mp,F,Omega;
GetEarthNutationParameter(dt,&D,&M,&Mp,&F,&Omega);
doubleresulte=0.0;
for(inti=0;i<sizeof(nutation)/sizeof(nutation[0
剩余11页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功