Система числення Фібоначчі

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

Число Запис

у Шаблон:Comment

код

Фібоначчі

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 можна єдиним чином подати послідовністю бітів εkε4ε3ε2 (εk{0,1}) так що a=kεkFk, причому послідовність {εk} містить лише скінченне число одиниць, і не має пар сусідніх одиниць: k2:(εk=1)(εk+1=0). За винятком останньої властивості, дане подання аналогічне двійковій системі числення .

Обґрунтування

В основі лежить теорема Цекендорфа[1]: будь-яке невід'ємне ціле число можна єдиним чином подати у вигляді суми деякого набору чисел Фібоначчі з індексами більшими від одиниці, який не містить пар сусідніх чисел Фібоначчі.

Доведення існування легко провести за індукцією. Будь-яке ціле число a1 потрапить у проміжок між двома сусідніми числами Фібоначчі, тобто для деякого n2 виконується нерівність: Fna<Fn+1 . Таким чином, a=Fn+a, де a=aFn < Fn1, Так що розкладання числа a вже не буде містити доданка Fn1.

Використання

Юпана

Юпана

Припускають, що деякі різновиди юпани (абака інків) використовували систему числення Фібоначчі, щоб мінімізувати необхідне для обчислень число зерен[2].

У теорії інформації

На основі системи числення Фібоначчі будується код (кодування) Фібоначчі — Шаблон:Нп для натуральних чисел (1, Шаблон:Nbsp 2, Шаблон:Nbsp 3 …), який використовує послідовності бітів. Оскільки комбінація Шаблон:Nbsp 11 заборонена в системі числення Фібоначчі, її можна використовувати як маркер кінця запису.

Для складання коду Фібоначчі за записом числа в системі числення Фібоначчі слід переписати цифри у зворотному порядку (так, що старша одиниця виявляється останнім символом) і приписати в кінці ще раз Шаблон:Nbsp 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.

Узагальнення на дійсні числа

Число Подання
через степінь Шаблон:Nbspφ
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

Схоже влаштована позиційна система числення з ірраціональною основою, рівною золотому перетину φ=(1+5)/2.

Будь-яке дійсне число x з відрізка [0,1] допускає розкладання в ряд через від'ємні степені золотого перетину:

x=k=1εkφk,εk{0,1}

де {εk} має ту ж властивість відсутності сусідніх одиниць. Коефіцієнти знаходяться послідовним порівнянням x з φ1 — золотим перетином відрізка [0,1], відніманням φ1 (якщо εk=1) і множенням на φ. З цього неважко бачити, що будь-яке невід'ємне дійсне число допускає розкладання:

a=k=N1εkφk,

де Шаблон:Math таке, що a<φN. Зрозуміло, слід вважати, що εk=0 для всіх kN.

Ці формули повністю аналогічні формулам для звичайних позиційних систем з цілими основами. Виявляється, що будь-яке невід'ємне ціле число (і, більш загально, кожен невід'ємний елемент кільця +φ) має подання лише зі скінченною кількістю одиниць, тобто у вигляді скінченної суми неповторюваних степенів золотого перетину.[3]

Аналогія між числами Фібоначчі і степенями золотого перетину заснована на однаковій формі тотожностей:

Fk=Fk1+Fk2
φk=φk1+φk2

які дозволяють усунення сусідніх одиниць. Прямого зв'язку між поданням натуральних чисел в системі золотого перетину і в системі Фібоначчі немає.

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

Множення Фібоначчі

Для цілих чисел a=kεkFk  і b=lζlFl  можна визначити «множення»[4]

ab=k,lεkζlFk+l,

аналогічне множенню чисел у двійковій системі числення.

Зрозуміло, що дана операція не є справжнім множенням чисел, і виражається формулою:[5]

ab=3aba(b+1)φ2b(a+1)φ2,

де  — ціла частина, φ=1+52 — золотий перетин .

Ця операція має асоціативність, що вперше зауважив Дональд Кнут[6]. Слід зазначити, що інше «множення» k,lεkζlFk+l2, відрізняється лише зсувом на два розряди, вже не є асоціативним.

Примітки

Шаблон:Reflist

Література