Below, we'll show two facts which help understand the positive integer solutions to the following diophantine equation:
We'll show that there is a lone positive root and as the root approaches:
Additionally, if this root is an integer (i.e. the relevant solutions to a diophantine equation), then for it must be exactly equal to:
Contents
Motivation
I started down this path after watching a video from 3Blue1Brown1 where he discusses Moser's circle problem. In particular, he demonstrates the formula
for the number of distinct regions a circle is divided into when connecting all pairs of points around the circle in general position.
The video is about showing the perils of assuming a pattern repeats indefinitely:
but also shows one more value equal to a power of two: .
Open Question
At the end of the video he poses a challenge question that piqued my interest and that's what we'll be talking about here2: Will there ever be another power of 2?
There is a fairly clean solution to this on Math StackExchange, but it uses extremely non-elementary methods (I am not a number theorist). It does use a simple observation to transform the exponential part of the equation into a low degree polynomial so that existing tools for solving diophantine equations can be used. In particular, it uses the observation that is either equal to or depending on the parity of .
I tried (and failed) to make progress on this challenge question by investigating properties of a solution as varies. (As opposed to what I view the more common approach of investigating factors of as varies.) However along the way I discovered some interesting facts about the roots as .
Reframing
We'll reframe via a change of variables to get an explicit Laurent series to more easily understand the behavior of the positive root. Note that we can say the positive root: there is exactly one. To see why, consider
This function is concave up since monic and
For we have which guarantees a root greater than 1 and a root less than 0.
We'd like to understand the asymptotic root behavior, but as both the "input" goes to infinity and the "output" goes to infinity since the largest term of the polynomial will dominate:
We'd like a Taylor series at infinity that converges to infinity. However, no such expansion exists, so we instead use a quantity that goes to infinity as some input goes to zero:
This satisfies as but since it doesn't solve the problem. For that, we use the substitution and now can start to pursue a Taylor series for our root via
which is equivalent to finding roots of the parameterized polynomial
This polynomial allows us to define the positive root as an implicit function via
We'll start from the Taylor series
and transform to the Laurent series for
Finding Coefficients
To find the first few terms of this expansion, we'll utilize SymPy.
First, we'll set up our variables, our parameterized polynomial
and the first three terms of the Taylor series
(utilizing the very useful sympy.Order
type
in SymPy):
In [1]: import sympy; sympy.__version__
Out[1]: '1.12'
In [2]: a0, a1, a2, s, X = sympy.symbols("a0, a1, a2, s, X")
In [3]: g = s**4 - 6 * X * s**3 + 23 * X**2 * s**2 - 18 * X**3 * s + (24 * X**4 - 1)
In [4]: alpha = a0 + a1 * X + a2 / 2 * X**2 + sympy.Order(X**3)
Substituting alpha
and expanding, we have a series with quadratic terms
in and as expected a tail of the form
:
In [5]: g.subs({s: alpha}).expand()
Out[5]: -1 + a0**4 - 6*X*a0**3 + 4*X*a0**3*a1 + 23*X**2*a0**2 - 18*X**2*a0**2*a1 + 6*X**2*a0**2*a1**2 + 2*X**2*a0**3*a2 + O(X**3)
In [6]: T2 = sympy.Poly(g.subs({s: alpha}).expand().removeO(), X)
In [7]: T2
Out[7]: Poly((2*a0**3*a2 + 6*a0**2*a1**2 - 18*a0**2*a1 + 23*a0**2)*X**2 + (4*a0**3*a1 - 6*a0**3)*X + a0**4 - 1, X, domain='ZZ[a0,a1,a2]')
Setting the coefficients of the first three terms to zero, we'll have our expansion:
In [8]: T2.coeff_monomial(1)
Out[8]: a0**4 - 1
In [9]: T2.coeff_monomial(X).factor()
Out[9]: 2*a0**3*(2*a1 - 3)
In [10]: T2.coeff_monomial(X**2).factor()
Out[10]: a0**2*(2*a0*a2 + 6*a1**2 - 18*a1 + 23)
Since we want the positive root, we choose . Independent of this value we also see (since all four possible values of are nonzero). Finally solving for the last term:
In [11]: T2.coeff_monomial(X**2).subs({a0: 1, a1: sympy.Rational(3, 2)}).factor()
Out[11]: (4*a2 + 19)/2
Putting it all together:
Root as Floor
We'll show below that for small enough 3. Once established, this means
and since this interval has a width of we have . The connection to comes in via:
We can establish the upper bound via:
This quantity is always positive for in our domain, which means it is to the right of due to the concavity of .
For the lower bound:
This quantity is negative for which first happens when and remains negative thereafter:
Tighter Bounds
In an attempt to show that there could be no more solutions to the original diophantine equation, I tightened the bounds on and explored the behavior. In fact, for we have
which is a very small window of width . I was hoping to show that for large enough this window contains no integers,= but unfortunately it appears that the window contains an integer about 4% of the time. Plotting the number of such windows against a line with slope :
Future Work
Though I didn't get the result I was hoping for, I did have a lot of fun exploring the behavior of roots as . I do think there is more progress to be made in this direction. For example, in order for our expected root to actually be a root, we must have
but it appears that is the last time this is satisfied.
- Grant Sanderson, aka 3Blue1Brown is awesome and I highly recommend all of his videos. ↩
- I know the last time I wrote about math on this blog it was the same situation, i.e. an offhand comment on a popular YouTube video. ↩
- Note that the negative quadratic term in the Taylor series for the root indicates the upper bound. ↩