天文算法20

第二十二章 章动和黄赤交角 Nutation and the Obliquity of the Ecliptic

1. 名词解释

章动

2. 章动的分量

  章动可以很容易的分解为黄道的水平分量和的垂直分量。黄道上的分量记为$Δψ$,称为黄经章动;它影响了天球上所有天体的经度。黄道的垂直分量记为$Δε$,称为交角章动,它影响了黄赤交角。

3. 较精确计算章动

// Nutation returns nutation in longitude (Δψ) and nutation in obliquity (Δε)
// for a given JDE.
//
// JDE = UT + ΔT, see package deltat.
//
// Computation is by 1980 IAU theory, with terms < .0003″ neglected.
// 计算 jde 对应的章动
func Nutation(jde float64) (Δψ, Δε unit.Angle) {
	T := base.J2000Century(jde)
	D := base.Horner(T,
		297.85036, 445267.11148, -0.0019142, 1./189474) * math.Pi / 180
	M := base.Horner(T,
		357.52772, 35999.050340, -0.0001603, -1./300000) * math.Pi / 180
	N := base.Horner(T,
		134.96298, 477198.867398, 0.0086972, 1./56250) * math.Pi / 180
	F := base.Horner(T,
		93.27191, 483202.017538, -0.0036825, 1./327270) * math.Pi / 180
	Ω := base.Horner(T,
		125.04452, -1934.136261, 0.0020708, 1./450000) * math.Pi / 180
	// sum in reverse order to accumulate smaller terms first
	var Δψs, Δεs float64
	for i := len(table22A) - 1; i >= 0; i-- {
		row := table22A[i]
		arg := row.d*D + row.m*M + row.n*N + row.f*F + row.ω*Ω
		s, c := math.Sincos(arg)
		Δψs += s * (row.s0 + row.s1*T)
		Δεs += c * (row.c0 + row.c1*T)
	}
	Δψ = unit.AngleFromSec(Δψs * .0001)
	Δε = unit.AngleFromSec(Δεs * .0001)
	return
}

4. 粗略计算章动

Δψ精度为0.5″,Δε精度为0.1″

// ApproxNutation returns a fast approximation of nutation in longitude (Δψ)
// and nutation in obliquity (Δε) for a given JDE.
//
// Accuracy is 0.5″ in Δψ, 0.1″ in Δε.
// 精度要求为0.5″ in Δψ, 0.1″ in Δε
func ApproxNutation(jde float64) (Δψ, Δε unit.Angle) {
	T := (jde - base.J2000) / 36525
	Ω := (125.04452 - 1934.136261*T) * math.Pi / 180
	L := (280.4665 + 36000.7698*T) * math.Pi / 180
	N := (218.3165 + 481267.8813*T) * math.Pi / 180
	sΩ, cΩ := math.Sincos(Ω)
	s2L, c2L := math.Sincos(2 * L)
	s2N, c2N := math.Sincos(2 * N)
	s2Ω, c2Ω := math.Sincos(2 * Ω)
	Δψ = unit.AngleFromSec(-17.2*sΩ - 1.32*s2L - 0.23*s2N + 0.21*s2Ω)
	Δε = unit.AngleFromSec(9.2*cΩ + 0.57*c2L + 0.1*c2N - 0.09*c2Ω)
	return
}

5. 黄赤交角

  • 平黄赤交角$ε_0$:黄道与平赤道的夹角

    $$ε_0 = 23°26’21”.448 - 46”.8150T - 0”.00059T^2 + 0”.001813T^3$$

    T是J2000.0起算的儒略世纪数

      当时间范围很长,上述公式的精度并不令人满意:2000年误差1”,4000误差为10”。Laskar提供了以下改良的的公式,式中U是J2000.0起算的儒略万年数,即U=T/100: \begin{align} ε_0 =& 23°26’21”.448 - 4680”.93U - 1.55U^2 + 1999.25U^3 - 51.38U^4 - 249.67U^5 \\[2ex] &-39.05U^6 + 7.12U^7 + 27.87U^8 + 5.79U^9 + 2.45U^{10} \end{align}   该表达式的精度是:1000年后误差0”.01(公元 1000 到 3000),10000年后误差数个角秒。
      该表达式适用于|U|<1,即 J2000.0 起算前后各 10000 年的范围内。

    // MeanObliquity returns mean obliquity (ε₀) following the IAU 1980
    // polynomial.
    //
    // Accuracy is 1″ over the range 1000 to 3000 years and 10″ over the range
    // 0 to 4000 years.
    // 平黄赤交角 - 精度一般,2000年误差 1",4000年误差为 10"
    func MeanObliquity(jde float64) unit.Angle {
        // (22.2) p. 147
        return unit.AngleFromSec(base.Horner(base.J2000Century(jde),
            unit.FromSexaSec(' ', 23, 26, 21.448),
            -46.815,
            -0.00059,
            0.001813))
    }
    
    // MeanObliquityLaskar returns mean obliquity (ε₀) following the Laskar
    // 1986 polynomial.
    //
    // Accuracy over the range 1000 to 3000 years is .01″.
    //
    // Accuracy over the valid date range of -8000 to +12000 years is
    // "a few seconds."
    // 平黄赤交角 - 精度较好,1000年后误差0".01(公元 1000 到 3000),10000年后误差数个角秒
    // 适用范围:J2000.0 起算前后各10000年的范围内。
    func MeanObliquityLaskar(jde float64) unit.Angle {
        // (22.3) p. 147
        return unit.AngleFromSec(base.Horner(base.J2000Century(jde)*.01,
            unit.FromSexaSec(' ', 23, 26, 21.448),
            -4680.93,
            -1.55,
            1999.25,
            -51.38,
            -249.67,
            -39.05,
            7.12,
            27.87,
            5.79,
            2.45))
    }
    
  • 真黄赤交角:黄道与真赤道的夹角

    $$ε = ε_0 + Δε$$

相关

下一页
上一页
comments powered by Disqus