[go: up one dir, main page]

login
Irregular triangular array giving minimum number of reciprocal steps in the boomerang fractions process needed to return to 1 if a returning path exists, otherwise 0.
0

%I #17 Nov 16 2015 06:30:20

%S 1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,4,1,1,1,2,1,1,1,1,2,20,1,1,1,4,1,1,1,2,

%T 2,1,2,24,2

%N Irregular triangular array giving minimum number of reciprocal steps in the boomerang fractions process needed to return to 1 if a returning path exists, otherwise 0.

%C The boomerang fractions process is defined as follows. Fix a rational number q, 0<q<1. Starting with 1, on the first step add q and on subsequent steps either add q or take the reciprocal.

%C Let q(n) be the n-th rational number in the interval (0,1) in the canonical ordering, that is, q(n)=A038566(n+1)/A038567(n+1). Then a(n) is obtained by applying the sequence definition with q=q(n).

%C The value of a(n) is 1 if and only if q(n) is the difference of two unit fractions.

%C If q(m) = k q(n) for some positive integer k, then a(n) <= a(m).

%C The first rational number in the canonical ordering for which it is not known whether a(n) is nonzero is q(40)=9/11. If a(40) is nonzero, then a(40) >= 55.

%H W. P. Orrick, <a href="http://pages.iu.edu/~worrick/boomerang/">Boomerang fractions: some calculations</a>

%e a(1) = 1 since q(1) = 1/2 and there is the returning path 1 --> 1+2*(1/2) = 2 --> 1/2 --> 1/2+1/2 = 1, which uses the reciprocal operation once.

%e a(8) = 2 since q(8) = 3/5, which cannot be written as the difference of two unit fractions (ruling out a(8) = 1) and because there is the returning path 1 --> 1+15*(3/5) = 10 --> 1/10 --> 1/10+4*(3/5) = 5/2 --> 2/5 --> 2/5+3/5 = 1, which uses the reciprocal operation twice.

%e Triangle starts:

%e 1;

%e 1, 1;

%e 1, 1;

%e 1, 1, 2, 1;

%e 1, 1;

%e 1, 1, 1, 2, 4, 1;

%e 1, 1, 2, 1;

%e 1, 1, 1, 2, 20, 1;

%e 1, 1, 4, 1;

%e 1, 1, 2, 2, 1, 2, 24, 2,

%e ...

%t (* In the following code, Alpha is the operation "add q" and Beta is the operation "take the reciprocal and add q". The set L(j) is defined to be the set of positive rational numbers r such that there is a path from r to 1 that uses Beta exactly j times. The program computes L(1), L(2), and so on, until an L(j) is found that contains 1, in which case it returns j, or until maxIterations is exceeded, in which case it returns 0. The function iterateUntilOne can generate the result for all q up to 6/11 rather quickly, but for q = 7/11, which corresponds to a(38) = 24, it requires considerable time; it is not capable of ruling out the existence of a returning path that uses Beta more than maxIterations times. *)

%t applyBetaInverse[q_, x_] := 1/(x - q)

%t applyAlphaPowerInverse[q_, x_] :=

%t Table[x - q j, {j, 0, Ceiling[x/q] - 1}]

%t iterateUntilOne[q_, maxIterations_] :=

%t Module[{list, listOld, oneFound, it, betaInverseResult},

%t listOld = Flatten[applyAlphaPowerInverse[q, #] & /@ {1}];

%t oneFound = False;

%t For[it = 1, ! oneFound && it <= maxIterations, it++,

%t betaInverseResult =

%t applyBetaInverse[q, #] & /@ Select[listOld, # > q &];

%t list = Flatten[applyAlphaPowerInverse[q, #] & /@ betaInverseResult];

%t oneFound = MemberQ[list, 1];

%t Print["L(", it, ") : length ", Length[list],

%t If[oneFound, ", contains 1", ", does not contain 1"]];

%t listOld = list

%t ];

%t If[oneFound,

%t it - 1,

%t 0

%t ]

%t ]

%t iterateUntilOne[#, 20] & /@Flatten[Join[

%t Table[Select[Range[1, d], CoprimeQ[d, #] &]/d, {d, 2, 10}],

%t Range[1, 6]/11]]

%Y Cf. A256174.

%K nonn,tabf,more

%O 1,8

%A _William P. Orrick_, Aug 21 2015