Золотые строки аналогичны числам Фибоначчи, за исключением того, что используется конкатенация, а не сложение.
Начните с s 1 = «1» и s 2 = «10». Затем определите s n = s n-1 + s n-2, где «+» означает конкатенацию строк.
Первые несколько золотых струн
- «1″
- «10″
- «101″
- «10110″
- «10110101″
- …
Длина s n равна F n +1 , n + 1-е число Фибоначчи. Кроме того, s n содержит F n -1 1 и F n -2 0. (Источник: Великолепное Золотое Сечение ).
Если мы интерпретируем s n как дробную часть двоичного числа, последовательность сходится к постоянной кролика R = 0,7098034428612913…
Оказывается, что R связано с золотым сечением ф
где ⌊ i φ⌋ — наибольшее целое число, не превышающее i φ.
Вот небольшой код Python для распечатки первых нескольких золотых строк и приближение к константе кролика.
from sympy.mpmath import mp, fraction
a = "1"
b = "10"
for i in range(10):
b, a = b+a, b
print(b)
n = len(b)
mp.dps = n
denom = 2**n
num = int(b, 2)
rabbit = fraction(num, denom)
print(rabbit)
Обратите внимание, что код устанавливает количество десятичных знаков mp.dps, равное длине строки b. Это потому, что требуется ровно n знаков после запятой, чтобы точно представить рациональное число со знаменателем 2 n .
