跳转至

Ratio of Metallic Ratios

Summary: While the golden, silver, and bronze ratios are well-known, higher metallic ratios lack standard names. However, any positive real number—and therefore any mathematical constant like \(\pi\)—can be closely approximated as the ratio of two metallic ratios by scaling their indices appropriately.


Defining Metallic Ratios

The golden ratio is the first and best-known of the metallic ratios, followed by the silver ratio and the bronze ratio. Metallic ratios beyond the bronze ratio generally do not have standard names.

Formally, the \(n\)-th metallic ratio \(M(n)\) is defined as the number whose continued fraction representation contains only \(n\)s:

\[n + \cfrac{1}{n+\cfrac{1}{n+\cfrac{1}{n+\cdots}}} = \frac{n + \sqrt{n^2 + 4}}{2}\]

Setting \(n = 1, 2,\) and \(3\) yields the gold, silver, and bronze ratios, respectively.


Approximating Real Numbers

You can approximate any positive real number as a ratio of metallic ratios. Notice that for large \(n\), \(M(n)\) is approximately equal to \(n\).

For any positive rational number \(\frac{a}{b}\):

\[\lim_{n\to\infty} \frac{M(na)}{M(nb)} = \frac{a}{b}\]

By taking \(n\) large enough, you can make the ratio \(\frac{M(na)}{M(nb)}\) arbitrarily close to \(\frac{a}{b}\). Because the rational numbers are dense in the reals, this method allows you to approximate any positive real number to any desired degree of accuracy.


Example: Approximating \(\pi\)

We can use Python to search for metallic ratios whose quotient approximates \(\pi\) to within \(0.001\):

from math import pi, sqrt

M = lambda n: 0.5*(n + sqrt(n**2 + 4))

for n in range(1, 100):
    a = round(pi*n)
    b = n
    r = M(a)/M(b)
    if abs(r - pi) < 0.001:
        print(a, b, r)

Running this search reveals:

\[\pi \approx \frac{M(132)}{M(42)} \approx 3.1412\dots\]

To check whether smaller indices can achieve this same level of accuracy, we can run an exhaustive search:

k = 132 + 42
# loop over numbers whose sum is less than k
for n in range(1, k):
    for a in range(1, n):
        b = n - a
        r = M(a)/M(b)
        if abs(r - pi) < 0.001:
            print(a, b, r)
            exit()

The script confirms that \((132, 42)\) is indeed the most efficient pair of indices within that search space.



Based on the article Ratio of metallic ratios by John D. Cook.