Фибоначчиева система счисления: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
w>Maxal
(→‎Фибоначчиево умножение: пропущенная "не")
w>Maxal
Строка 159: Строка 159:
 
где <math>\lfloor\ldots\rfloor</math> — [[целая часть]], <math>\varphi=\frac{1+\sqrt{5}}{2}</math> — [[золотое сечение]].
 
где <math>\lfloor\ldots\rfloor</math> — [[целая часть]], <math>\varphi=\frac{1+\sqrt{5}}{2}</math> — [[золотое сечение]].
  
Эта операция обладает [[ассоциативность]]ю, на которую впервые обратил внимание [[Дональд Кнут]].<ref> D. E. Knuth, Fibonacci multiplication, Appl. Math. Lett. 1 (1988), 57-60.</ref>
+
Эта операция обладает [[ассоциативность]]ю, на которую впервые обратил внимание [[Дональд Кнут]].<ref>{{cite journal |author=D. E. Knuth |title=Fibonacci multiplication |jorunal=Applied Mathematics Letters |volume=1 |issue=1 |year=1988 |pages=57-60 |doi=10.1016/0893-9659(88)90176-0}}</ref>
 
Следует отметить, что другое «произведение» <math>\sum_{k,l} \varepsilon_k \zeta_l F_{k+l-2},</math> отличающееся лишь сдвигом на два разряда, уже не является ассоциативным.
 
Следует отметить, что другое «произведение» <math>\sum_{k,l} \varepsilon_k \zeta_l F_{k+l-2},</math> отличающееся лишь сдвигом на два разряда, уже не является ассоциативным.
  

Версия от 18:50, 14 января 2010

Фибоначчиева система счислениясмешанная система счисления для целых чисел на основе чисел Фибоначчи F2=1, F3=2, F4=3, F5=5, F6=8 и т.д.

Zeckendorf representations.png
Число Запись
в ФСС
Код
Фибоначчи
0 0……0  
F2=1 1 11
F3=2 10 011
F4=3 100 0011
4 101 1011
F5=5 1000 00011
6 1001 10011
7 1010 01011
F6=8 10000 000011
Fn-1  101010 0101011 
Fn 10……00 00……011
Fn+1 10……01 10……011

Представление натуральных чисел

Любому неотрицательному целому числу a = 0 ,   1 ,   2 , a = 0,\ 1,\ 2,\dots можно единственным образом представить через последовательность битов …εk…ε4ε3ε2: a = k ε k F k ,   ε k = 0 , 1 a = \sum_k \varepsilon_k F_k,\ \varepsilon_k = 0,1 , причём последовательность {εk} содержит лишь конечное число единиц, и не имеет пар соседних единиц: k 2 : ( ε k = 1 ) ( ε k + 1 = 0 ) \forall k\ge 2: (\varepsilon_k=1) \Rightarrow (\varepsilon_{k+1}=0) . За исключением последнего свойства, данное представление аналогично двоичной системе счисления.

Обоснование

В основе лежит теорема Цеккендорфа — любое неотрицательное целое число представимо в виде суммы некоторого набора чисел Фибоначчи, не содержащего пары соседних чисел Фибоначчи. Причём представление такое единственно.

Доказательство существования легко провести по индукции. Любое целое число a 1 a\ge 1 попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого n 2 n\ge 2 верно неравенство: F n a < F n + 1 F_n \le a < F_{n+1} . Таким образом, a = F n + a a = F_n + a' , где a = a F n   a'=a-F_n\ , так что разложение числа a a' уже не будет содержать слагаемого F n 1 F_{n-1} .

Использование

Юпана

Предполагают, что некоторые разновидности юпаны (абака инков) использовали фибоначчиеву систему счисления, чтобы минимизировать необходимое для вычислений число зёрен[1].

В теории информации

На основе фибоначчиевой системы счисления строится код (кодирование) Фибоначчиуниверсальный код для натуральных чисел (1, 2, 3…), использующий последовательности битов. Поскольку комбинация 11 запрещена в Фибоначчиевой системы счисления, её можно использовать как маркер конца записи. Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз 1 (см. таблицу). То есть, кодовая последовательность имеет вид:

ε2ε3…εn1,

где n — номер самого старшего разряда с единицей.

Арифметика

При сложении чисел в позиционных системах счисления приходится выполнять перенос, то есть устранять последствия переполнения разряда. Например, в двоичной системе: 01 + 01 = 02 = 10. В фибоначчиевой системе дело обстоит намного сложнее. Во-первых, вес старших разрядов не является кратным весу разряда, из которого требуется перенос. При сложении двух единиц в одном разряде требуется перенос не только вправо, но и влево: 0200 = 1001. При переносе в отсутствующие разряды ε1 и ε0 следует помнить, что F1=1=F2 и F0=0. Во-вторых, требуется избавляться от соседних единиц: 011 = 100. Правило для раскрытия двоек является следствием этого равенства: 0200 = 0100 + 0011 = 0111 = 1001.

Шаблон:Section-stub

Обобщение на действительные числа

Похожее устройство имеет позиционная система счисления для действительных чисел, основанием которой служит золотое сечение φ = ( 1 + 5 ) / 2 \varphi = (1 + \sqrt{5})/2 иррациональное число. Оказывается, что любое действительное число x из отрезка [0,1] допускает разложение в ряд через отрицательные степени золотого сечения: x = k = 1 ε k φ k ,   ε k = 0 , 1   , x = \sum_{k=-1}^{-\infty} \varepsilon_k \varphi^k,\ \varepsilon_k = 0,1\ , где {εk} обладает тем же свойством отсутствия соседних единиц. Коэффициенты находятся последовательным сравнением x с φ 1 \varphi^{-1} — золотым сечением отрезка [0,1], вычитанием φ 1 \varphi^{-1} (если εk=1) и умножением на φ \varphi . Из этого нетрудно видеть, что любое неотрицательное действительное число допускает разложение: a = k = N 1 ε k φ k , a = \sum_{k=N-1}^{-\infty} \varepsilon_k \varphi^k\,, где N таково, что a < φ N a < \varphi^N . Разумеется, следует считать что ε k = 0 \varepsilon_k = 0 для всех k N k \ge N .

Число Представление
через
степени  φ \varphi
 1      1,
 2     10,01
 3    100,01
 4    101,01
 5   1000,1001
 6   1010,0001
 7  10000,0001
 8  10001,0001
 9  10010,0101
10  10100,0101
11  10101,0101
12 100000,101001
13 100010,001001
14 100100,001001

Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент кольца Z + φ Z {\mathbb Z}+\varphi{\mathbb Z} ) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.[2]

Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: F k = F k 1 + F k 2 ,   φ k = φ k 1 + φ k 2 , F_k = F_{k-1} + F_{k-2}\,,\ \varphi^k = \varphi^{k-1} + \varphi^{k-2}\,, позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.

Правила сложения аналогичны показанным выше с той поправкой, что перенос в сторону младших разрядов распространяется без ограничения. В данной системе счисления можно производить и умножение.

Фибоначчиево умножение

Для целых чисел a = k ε k F k   a = \sum_k \varepsilon_k F_k\ и b = l ζ l F l   b = \sum_l \zeta_l F_l\ можно определить «умножение»[3] a b = k , l ε k ζ l F k + l , a\circ b = \sum_{k,l} \varepsilon_k \zeta_l F_{k+l}, которое аналогично умножению чисел в двоичной системе счисления.

Разумеется, данная операция не является настоящим умножением чисел, и выражается формулой:[4] a b = 3 a b a ( b + 1 ) φ 2 b ( a + 1 ) φ 2 , a\circ b = 3 a b - a \lfloor(b+1)\varphi^{-2}\rfloor - b \lfloor(a+1)\varphi^{-2}\rfloor, где \lfloor\ldots\rfloor целая часть, φ = 1 + 5 2 \varphi=\frac{1+\sqrt{5}}{2} золотое сечение.

Эта операция обладает ассоциативностью, на которую впервые обратил внимание Дональд Кнут.[5] Следует отметить, что другое «произведение» k , l ε k ζ l F k + l 2 , \sum_{k,l} \varepsilon_k \zeta_l F_{k+l-2}, отличающееся лишь сдвигом на два разряда, уже не является ассоциативным.

Шаблон:Section-stub

Источники

  1. Antonio Aimi, Nicolino De Pasquale. Andean Calculators. Дата обращения: 12 декабря 2009.
  2. en:Golden ratio base (англ.)
  3. последовательность A101330 в OEIS, Zeckendorf's theorem (англ.)
  4. Notes on the Fibonacci circle and arroba products (англ.)
  5. D. E. Knuth (1988). "Fibonacci multiplication". 1 (1): 57–60. doi:10.1016/0893-9659(88)90176-0. {{cite journal}}: Cite journal требует |journal= (справка); Неизвестный параметр |jorunal= игнорируется (справка)

en:Fibonacci coding eo:Vikipedio:Projekto matematiko/Fibonacci-a kodigo fr:Codage de Fibonacci