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.

The post Finite differences and Pascal’s triangle first appeared on John D. Cook.