Solar eclipses

From the cycles that describe the motion of the Moon compute the cycles of solar eclipses.

Orbit of the Moon

The Moon has an (almost) elliptical orbit around the Earth with a period of one sideral month of approximately 27.321 days (Sidereal Month Versus Lunar Month). However, as the Earth moves around the Sun during the sideral month, its apparent position with respect to the sun takes a little longer to repeat itself, a synodic month of approximately 29.530 days. The orbit of the Moon lies in a plane that forms an angle of approximately 5 degrees to the ecliptic, the plane on which the orbit of Earth lies. Thus, there is a torque from the Sun that produces a precession of the orbit of the Moon. The time between a perigee and the next, the so called anomalistic month is not the same as the sideral month, taking 27.554 days. This is summarized in the following table:

Month Duration
Sideral 27.321
Synodic 29.530
Anomalistic 27.554

Eclipses

Solar eclipses occur when the Moon lies between the Earth and the Sun. That can only happen when the Moon is at a nodal point, that is, where its orbit intersects the ecliptic. Furthermore, the line of nodes has to point towards the sun. Thus there are eclipses approximately twice every year; not exactly, as the Sun, Earth and Moon are extended objects, so the alignment need not be perfect. Similar eclipses occur when the Moon has the same apparent size, lies in the same nodal point, so they recur when the Sideral, Synodic and Anomalistic cycles are in the same relative phase. To calculate the eclipse cycles, we can find which integer multiples of, say, the sideral month, coincide with some multiple of the synodic and some multiple of the anomalistic year. The problem is that there is no exact multiple of the three cycles, but I can check how far a multiple of one is from a multiple of the others.

Computation

I made a small program to compute multiples of the sideral month, divide them by the duration of the synodic and anomalistic months and check how far the result is from a whole number. The smallest the residue, the closest we are to a cyclic behavior. If the residue is larger than .5, then I compute the distance to the next integer.

Program

use v5.36;
use POSIX qw(modf);
use List::AllUtils qw(sort_by sum min max);
my ($sideral, $synodic, $anomalistic)=(27.321, 29.530, 27.554);
my @r=map {[$_,
	    dist($_*$synodic/$sideral),
	    dist($_*$synodic/$anomalistic),
	    maxdist($_)
    ]}
    (1..1000);
my $n=1;
say join "|", "", $n++, shift @$_, map {sprintf "%.3f", $_} @$_
for +(sort_by {$_->[3]} @r)[0..40-1];
sub dist($x){
    my ($frac, undef)=modf($x);
    return min($frac,1-$frac);
}
sub maxdist($n){
    return max map {min ($_, 1-$_)} map {dist($n*$synodic/$_)}
    ($sideral, $anomalistic);
}

Results

The results in the range between one and one thousand months, sorted according to how close they are to a true cycle, are shown in the table below.

Rank Synodic Residue Residue Maximum
  months sideral anomalistic residue
1 767 0.015 0.004 0.015
2 544 0.016 0.012 0.016
3 223 0.030 0.008 0.030
4 878 0.011 0.035 0.035
5 111 0.025 0.040 0.040
6 655 0.041 0.028 0.041
7 656 0.040 0.044 0.044
8 990 0.045 0.003 0.045
9 321 0.046 0.020 0.046
10 334 0.005 0.048 0.048
11 433 0.010 0.052 0.052
12 557 0.035 0.055 0.055
13 112 0.056 0.032 0.056
14 210 0.021 0.060 0.060
15 446 0.061 0.016 0.061
16 865 0.062 0.032 0.062
17 977 0.006 0.064 0.064
18 780 0.066 0.063 0.066
19 766 0.066 0.067 0.067
20 13 0.051 0.068 0.068
21 879 0.070 0.036 0.070
22 432 0.071 0.020 0.071
23 754 0.036 0.072 0.072
24 989 0.036 0.075 0.075
25 98 0.076 0.028 0.076
26 222 0.051 0.080 0.080
27 531 0.067 0.080 0.080
28 1 0.081 0.072 0.081
29 236 0.081 0.076 0.081
30 545 0.065 0.084 0.084
31 335 0.086 0.024 0.086
32 976 0.087 0.007 0.087
33 445 0.020 0.087 0.087
34 669 0.091 0.024 0.091
35 322 0.035 0.092 0.092
36 642 0.092 0.040 0.092
37 668 0.010 0.095 0.095
38 768 0.096 0.076 0.096
39 543 0.097 0.059 0.097
40 308 0.097 0.088 0.097

The first place is a cycle of 767 synodic months that is off by at most 0.0147 days. The next almost cyclical recurrence occurs every 544 synodic months and is off by not more than 0.0157 days. The third place consists of 223 synodic months, off by less than 0.030 days. This cycle was obtained by the Babilonians and is known as the Saros cycle. It corresponds to 18.0293 years, i.e., 18 (average) years, 10 days and 16.67 hours, i.e., around 11 days minus 8 hours. This means that an eclipse with similar characteristics happens every 18 years and 11 days, but not in the same place, but in some other place some 120 degrees to the East. After three Saros cycles, i.e., after 54 years and a month, the eclipse returns to the same region. Notice that the cycle of 669 synodic months is number 34 in the table above, so there are many better cycles, but those correspond to eclipses that recur but not in the same place.

Written on March 18, 2024