Finding Integer Approximations

approximationcontinued-fractionsintegersnatural numbers

The Saros is the time period for the draconic month ($T_d$ = 27.212220815 days), synodic month ($T_s$ = 29.530588861 days) and anomalistic month ($T_a$ = 27.554549886 days) to approximately match. More specifically, it states that
$$242 T_d \approx 223T_s \approx 239 T_a$$
My question is: Is there a non brute force way to derive such integer approximations?

Consider a simpler case, in which we want to get integer approximations for only 2 periods. Take the synodic month and the tropical year ($T_y$ = 365.24219 days). Therefore,
$$aT_s=bT_y$$
$$\frac{a}{b}=\frac{T_y}{T_s}$$
To derive increasingly accurate approximations, one can use the continued fraction expansion for $\frac{T_y}{T_s}=12.368266400619…$, which is (in the WolframAlpha notation)
$$12.368266400619=[12; 2, 1, 2, 1, 1, 17, 3, 196, 1, 4, 1, 1, 2, 2,…]$$
From which it can be seen that truncating just before the 17 yields a good approximation
$$12.368266400619\approx[12; 2, 1, 2, 1, 1]=\frac{235}{19}$$
Therefore,
$$235T_s\approx19T_y$$
Which is known as the metonic cycle.

However, I cannot see a good way to extend this method for 3 periods and beyond.

Best Answer

You could try the Lenstra–Lenstra–Lovász (LLL) lattice basis reduction algorithm to calculate a short vector in a lattice. I use Pari GP (p. 382, section 3.10.62 qflll) for the calculation.

We define a lattice with a basis consisting of the columns of the Matrix $M$

$$M:=\begin{pmatrix} \frac 1 m& 0& 0 \\0&\frac 1 m & 0 \\0 & 0& \frac 1 m \\T_d &T_s & 0\\ T_d&0&T_a\end{pmatrix} $$ $m$ is a scaling factor. A linear combination of these basis vectors

$$\begin{pmatrix} \frac {\lambda_1} m \\ \frac {\lambda_2} m \\ \frac {\lambda_3} m \\{\lambda_1} T_d+ {\lambda_2} T_s \\{\lambda_1} T_d+ {\lambda_3} T_a \end{pmatrix}$$

is of small length, if ${\lambda_1} T_d+ {\lambda_2} T_s $ and ${\lambda_1} T_d+ {\lambda_3} T_a$ is small and $\frac {\lambda_1} m, \frac {\lambda_2} m , \frac {\lambda_3} m $ are small, too. In this case $${\lambda_2} T_s - {\lambda_3} T_a= ({\lambda_1} T_d+ {\lambda_2} T_s )-({\lambda_1} T_d+ {\lambda_3} T_a)$$ is small, too. Note that ${\lambda_2}$ and ${\lambda_3}$ have the same sign.

With Pari/GP online I get the following output

\p20
Td= 27.212220815;
Ts = 29.530588861;
Ta = 27.554549886;
m=1000
M=[1/m,0,0;0,1/m,0;0,0,1/m;Td,Ts,0;Td,0,Ta]
s=qflll(M)
[s[,1],[s[1,1]*Td+s[2,1]*Ts, s[1,1]*Td+s[3,1]*Ta, s[2,1]*Ts-s[3,1]*Ta]]

%2 = [[242, -223, -239]~, [0.036121227000000000000, -0.17998552400000000000, 0.21610675100000000000]]

The coefficients are $242, 223, 239$, the differences are $0.036, 0.180, 0.216$.

I added the length of the tropical month ($T_t$) and the sidereal month ($Ti$), from Wiki and got, for m=100000

? \p20
Td= 27.212220815;
Ts = 29.530588861;
Ta = 27.554549886;
Tt=27.321582252
Ti=27.321661554
m=100000
M=[1/m,0,0,0,0;0,1/m,0,0,0;0,0,1/m,0,0;0,0,0,1/m,0;0,0,0,0,1/m;Td,Ts,0,0,0;Td,0,Ta,0,0;Td,0,0,Tt,0;Td,0,0,0,Ti]
s=qflll(M)
[s[,1],[s[1,1]*Td+s[2,1]*Ts, s[1,1]*Td+s[3,1]*Ta, s[1,1]*Td+s[4,1]*Tt,  s[1,1]*Td+s[5,1]*Ti]]

%27 = [[4993, -4601, -4931, -4973, -4973]~, [0.37917983400000000000, -0.86695857100000000000, 0.38999009900000000000, -0.0043787470000000000000]]
Related Question