# 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.