Finite differences and Pascal’s triangle
The Endeavour 2024-03-04
The key to solving a lot of elementary what-number-comes-next puzzles is to take first or second differences. For example, if asked what the next item in the series
14, 29, 50, 77, 110, …
the answer (or at lest the answer the person posing the question is most likely looking for) is 149. You might discover this by first looking at the differences of the items:
15, 21, 27, 33, …
The differences all differ by 6, i.e. the second difference of the series is constant. From there you can infer that the next item in the original series will be 39 more than the previous, i.e. it will be 149.
We can apply the same technique for exploring series that are not artificial puzzles. For example, a one-page article by Harlan Brothers [1] asks what would happen if you looked at the products of elements in each row of Pascal’s triangle.
The products grow very quickly, which suggests we work on a log scale. Define
Let’s use a little Python script to look at the first 10 elements in the series.
from scipy.special import binom from numpy import vectorize, log def s(n): return sum([log(binom(n, k)) for k in range(n+1)]) s = vectorize(s) n = range(1, 11) x = s(n) print(x)
This prints
0. 0.69314718 2.19722458 4.56434819 7.82404601 11.9953516 17.0915613 23.1224907 30.0956844 38.0171228
Following the strategy at the top of the post, let’s look at the first differences of the sequence with [2]
y = x[1:] - x[:-1] print(y)
This prints
0.69314718 1.50407740 2.36712361 3.25969782 4.17130560 5.09620968 6.03092943 6.97319372 7.92143836
The first differences are increasing by about 0.9, i.e. the second differences are roughly constant. And if we look at the third differences, we find that they’re small and getting smaller the further out you go.
We can easily look further out in the sequence by changing range(1, 11)
to range(1, 101)
. When we do, we find that the second difference are
…, 0.99488052, 0.9949324. 0.99498325
If we look even further out, looking at a thousand terms, the last of the second differences is
…, 0.99949883, 0.99949933, 0.99949983
We might speculate that the second differences are approaching 1 as n → ∞. And this is exactly what is proved in [1], though the author does not work on the log scale. The paper shows that the ratio of the ratio of consecutive lines converges to e. This is equivalent on a log scale to saying the second differences converge to 1.
[1] Harlan J. Brothers. Math Bite: Finding e in Pascal’s Triangle. Mathematics Magazine , Vol. 85, No. 1 (February 2012), p. 51
[2] In Python, array elements are numbered starting at 0, and x[1:]
represents all but the first elements of x. The index −1 is a shorthand for the last element, so x{:-1]
means all the elements of x
up to (but not including) the last.