In 2013, John Conway and Alex Ryba published a brief note [1] on how to convert identities involving sine and cosine into identities involving Fibonacci and Lucas numbers.
Fibonacci and Lucas
The Fibonacci numbers Fn are defined by F0 = 0, F1 = 1, and
Fn+2 = Fn + Fn+1
for n > 1. Similarly, Lucas numbers Ln are defined by the same recurrence relation
Ln+2 = Ln + Ln+1
but starting with L0 = 2 and L1 = 1.
The recipe
The recipe for turning trigonometric identities into Fibonacci and Lucas number identities is as follws.
- Arguments become subscripts.
- Replace sines by ½ in Fn.
- Replace cosines by ½ in Ln.
- Insert a factor of (−5)k in front of every term that contains 2k or 2k + 1 terms.
The first step is admittedly unclear. It’s unclear in [1] as well. If sine or cosine takes an argument of
pα + qβ
then this becomes the subscript
pa + qb
where the Latin letters are integers and the Greek letters are angles.
There’s no proof in [1] why the recipe should work, but an earlier paper [2] gives more details.
Examples
Double angle
For a simple example, let’s start with the double angle identity
sin 2θ = 2 sin θ cos θ.
This becomes
½ i2n F2n = 2 (½ in Fn)(½ in Ln)
which simplifies to
F2n = Fn Ln.
Sum angle
For a little more involved example, let’s look at the sum identity
cos(θ + φ) = cos θ cos φ − sin θ sin φ.
This becomes
½ ia + b La + b = ½ ia La ½ ib Lb −(−5) ½ ia Fa ½ ib Fb
which simplifies to
2La + b = La Lb + 5 Fa Fb.
Triple angle
In the previous examples the powers of i in the recipe above cancelled out. This example will show that they are necessary.
We start with the triple angle identity
sin 3θ = 3 sin θ − 4 sin³ θ.
This becomes
½ i3n F3n = 3 (½) in Fn − 4(−5)(½ in Fn)³
which simplifies to
F3n = 3 (−1)n Fn + 5 (Fn)³.
Demonstration
The following Python code demonstrates that the Fibonacci / Lucas identities above are correct.
def F(n): if n == 0: return 0 if n == 1: return 1 return F(n-1) + F(n-2) def L(n): if n == 0: return 2 if n == 1: return 1 return L(n-1) + L(n-2) for n in range(10): assert(F(2*n) == F(n) * L(n)) for n in range(10): for m in range(10): assert(2*L(m + n) == L(m)*L(n) + 5*F(m)*F(n)) for n in range(10): assert(F(3*n) == 3*(-1)**n * F(n) + 5*F(n)**3)
Related posts
- Convert trig identities to hyperbolic identities
- Inverse Fibonacci numbers
- Lucas numbers and Lucas pseudoprimes
- Trig mnemonic diagrams
[1] John Conway and Alex Ryba. Fibonometry. The Mathematical Gazette, November 2013, pp. 494–495
[2] Barry Lewis, Trigonometry and Fibonacci Numbers, The Mathematical Gazette, July 2007, pp. 216–226