Metallic ratios

From Rosetta Code
Revision as of 00:26, 31 October 2019 by Thundergnat (talk | contribs) (New Draft task)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Metallic ratios is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Many people have heard of the Golden ratio, phi (φ). Phi is just one of a series of related ratios that are referred to as the "Metallic ratios".

The Golden ratio was discovered and named by ancient civilizations as it was thought to be the most pure and beautiful (like Gold). The Silver ratio was was also known to the early Greeks, though was not named so until later as a nod to the Golden ratio to which it is closely related. The series has been extended to encompass all of the related ratios and was given the general name Metallic ratios (or Metallic means).

Metallic ratios are the real roots of the general form equation:

   x² - bx - 1 = 0

where the integer b determines which specific one it is.

Using the quadratic equation:

  ( -b ± √(b² - 4ac) ) / 2a

substitute in 1 for a & c:

  ( -b ± √(b² - 4) ) ) / 2

we only want the real root, so, rearranging a bit, we get the general form equation:

  ( b + √(b² + 4) ) / 2

When we set b to 1, we get an irrational number: the Golden ratio.

   ( 1 + √(1² + 4) ) / 2  =  (1 + √5) / 2 = ~1.618033989...

With b set to 2, we get a different irrational number: the Silver ratio.

   ( 2 + √(2² + 4) ) / 2  =  (2 + √8) / 2 = ~2.414213562...

When the ratio b is 3, it is commonly referred to as the Bronze ratio, 4 and 5 are sometimes called the Copper and Nickel ratios, though they aren't as standard. After that there isn't really any attempt at standardized names. They are given names here on this page, but consider the names fanciful rather than canonical.

Note that technically, b can be 0 for a "smaller" ratio than the Golden ratio. We will refer to it here as the Platinum ratio, though it is kind-of a degenerate case.

Metallic ratios where b > 0 are also defined by the irrational continued fractions:

   [b;b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b...]


So, The first 10 Metallic ratios are:

Metallic ratios
Name b Equation Value Continued fraction OEIS link
Platinum 0 (0 + √4) / 2 1 - -
Golden 1 (1 + √5) / 2 1.618033988749895... [1;1,1,1,1,1,1,1,1,1,1...] OEIS:A001622
Silver 2 (2 + √8) / 2 2.414213562373095... [2;2,2,2,2,2,2,2,2,2,2...] OEIS:A014176
Bronze 3 (3 + √13) / 2 3.302775637731995... [3;3,3,3,3,3,3,3,3,3,3...] OEIS:A098316
Copper 4 (4 + √20) / 2 4.23606797749979... [4;4,4,4,4,4,4,4,4,4,4...] OEIS:A098317
Nickel 5 (5 + √29) / 2 5.192582403567252... [5;5,5,5,5,5,5,5,5,5,5...] OEIS:A098318
Aluminum 6 (6 + √40) / 2 6.16227766016838... [6;6,6,6,6,6,6,6,6,6,6...] OEIS:A176398
Iron 7 (7 + √53) / 2 7.140054944640259... [7;7,7,7,7,7,7,7,7,7,7...] OEIS:A176439
Tin 8 (8 + √68) / 2 8.123105625617661... [8;8,8,8,8,8,8,8,8,8,8...] OEIS:A176458
Lead 9 (9 + √85) / 2 9.109772228646444... [9;9,9,9,9,9,9,9,9,9,9...] OEIS:A176522




There are other ways to find the Metallic ratios; one, (the focus of this task) is through successive approximations of Lucas sequences.

A Lucas sequence has the form xₙ = b * xₙ₋₁ + c * xₙ₋₂. The metallic ratios use Lucas sequences where c == 1 and where the first two terms are always 1, 1.

So for the Lucas sequence when b = 1:

   xₙ = 1 * xₙ₋₁ + xₙ₋₂.
   1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...

more commonly known as the Fibonacci sequence.

When b = 2:

   xₙ = 2 * xₙ₋₁ + xₙ₋₂.
   1, 1, 3, 7, 17, 41, 99, 239, 577, 1393...


And so on.


To find the ratio by successive approximations, divide the (n+1)th term by the nth. As n grows larger, the ratio will approach the b metallic ratio.

For b = 1 (Fibonacci sequence):

   1/1   = 1
   2/1   = 2
   3/2   = 1.5
   5/3   = 1.666667
   7/5   = 1.6
   13/7  = 1.625
   20/13 = 1.615385
   33/20 = 1.619048
   53/33 = 1.617647
   86/53 = 1.618182
   etc.

It converges, but pretty slowly. In fact, the Golden ratio has the slowest possible convergence for any irrational number.


Task

For each of the first 10 Metallic ratios; b = 0 through 9:

  • Generate the corresponding Lucas sequence.
  • Show here, on this page, at least the first 15 elements of the Lucas sequence.
  • Using successive approximations, calculate the value of the ratio accurate to 32 decimal places.
  • Show the value of the approximation at the required accuracy.
  • Show the value of N when the approximation reaches the required accuracy (How many iterations did it take?).

You may assume that the approximation to 32 places has been reached when the next iteration does not cause the value (to 32 places) to change.


See also