DEV Community


Discussion on: Fibonacci Goals

swyx profile image
swyx Author

oh wow, nice, i have never really read further into alternative sequences. this is a nice list! i think i picked Fibonacci because it has high familiarity to others while still having a constant ratio. any others that fit that bar?

bestape profile image
Kyle MacLean Smith • Edited


Yeah, Fibonacci is likely the only sequence of this type with high familiarity.

Part of the issue is the metallic constant ratios, other than Gold, aren't familiar either:

Silver is likely the second most familiar. It's used in a lot of Japanese architecture, for instance. However, I don't think the sequence for Silver is familiar, just the ratio. Plus, Silver can be seen as Geometric via a metallic conveyor.

That said, I hope an algebraic perspective on Fibonacci becomes highly familiar, sooner than later. It's very useful, especially exploring recursion and exponentiation. I personally believe it's a great heuristic for automation literacy education.

Some detail:

  1. To keep convergent (within the field of view), translate growth as decay via 1/growth, e.g. 1/1.618... = 0.618....
  2. Pick a preferred decay, e.g. 5/6 decay (6/5 growth).
  3. Find its associated {a, b, c} right triangle, e.g. the {60, 11, 61} triple associates with 5/6 decay.
  4. Plug the variables/options into the Fibonacci-like "recursive dialectic" formula; on WolframAlpha it's RecurrenceTable[{ f[ n ] == ( 2b/a ) * f[ n - 1 ] + f[ n - 2 ], f[ 0 ] == x, f[ 1 ] == y }, f, { n, 0, 60 }].

f(0) and f(1) can be any value. E.g. 0.618... decay associates with the { 2, 1, 5^(1/2) } right triangle:

  • 2b/a = 2*1/2 = 1.
  • { f(0) = 0, f(1) = 1 } or { f(0) = 1, f(1) = 1 } make the Fibonacci numbers.
  • { f(0) = 2, f(1) = 1 } makes the Lucas numbers.
  • { f(0) = 97, f(1) = 7 } makes nameless Fibonacci-like numbers including f(59)/f(60) = 64051866980550/103638097817417 ~ 0.618....

Say you're making more progress than you expected and decide to pivot from Gold to Silver, from 0.618.... to 0.414.... If you did this after f(15), then the pivot would start at { 2b/a = 2*2/2 = 2, f(0) = 610, f(1) = 987 }. This pivot, a part of your personal journey, would have a nameless fibonacci-like f(14)/f(15) of 100143044/241766695 ~ 0.414....

When a != 1 the sequence has a denominator, which might not work for you. Starting at f(0) and f(1) with values that are multiples of powers of the 2b/a denominator will delay when the denominator shows up in the f(n) sequence.

E.g. for { 2b/a = 2*11/60 = 22/60 = 11/30, f(0) = 1*30^30, f(1) = 1*30^30 }, f(30)/f(31) = 44066516280464542497279255915263071939861665630/52879646064209853316025665905867547137160170631 ~ 0.833... ~ (5/6).

More than enough detail for your use case! I hope you found this of general interest. It helped me think through some stuff so thank you.

Here are visualizations of different decay rates, remembering that 1/5 decay is also x5 growth, 5/6 decay is also x6/5 growth (but within the field of view):

Thread Thread
swyx profile image
swyx Author

I'm gonna be honest that is waaaayy overkill for me 😂 but I appreciate how passionate you are about the topic!!

Thread Thread
bestape profile image
Kyle MacLean Smith

Lol. Yeah, sorry about that! I think my passion has turned into procrastination at this point but thanks for the complement anyhow.