Фибоначчиева система счисления: различия между версиями
In.wiki (комментарии | вклад) м (118 версий импортировано: Импорт из Википедии) |
|||
(не показано 50 промежуточных версий 30 участников) | |||
Строка 1: | Строка 1: | ||
− | '''[[Фибоначчи]]ева система счисления''' | + | {{Системы счисления}} |
+ | '''[[Фибоначчи]]ева система счисления''' — [[смешанная система счисления]] для [[целое число|целых чисел]] на основе [[числа Фибоначчи|чисел Фибоначчи]] F<sub>2</sub>=1, F<sub>3</sub>=2, F<sub>4</sub>=3, F<sub>5</sub>=5, F<sub>6</sub>=8 и т. д. | ||
{| align=right class=standard style="margin-left: 20px" | {| align=right class=standard style="margin-left: 20px" | ||
− | | colspan=3 |[[Файл:Zeckendorf representations. | + | | colspan=3 |[[Файл:Zeckendorf representations.svg|320x320пкс]] |
|- | |- | ||
!Число | !Число | ||
− | !Запись<br | + | !Запись<br>в {{comment|ФСС|Фибоначчиева система счисления}} |
− | ![[#В теории информации|Код<br | + | ![[#В теории информации|Код<br>Фибоначчи]] |
|- | |- | ||
| align=right |0 | | align=right |0 | ||
Строка 45: | Строка 46: | ||
| colspan=3 align=center |… | | colspan=3 align=center |… | ||
|- | |- | ||
− | |F<sub>n</sub> | + | |F<sub>n</sub> − 1 |
|<tt> 101010</tt>… | |<tt> 101010</tt>… | ||
| align=right |…<tt>010101<font color=#B20080>1</font> </tt> | | align=right |…<tt>010101<font color=#B20080>1</font> </tt> | ||
Строка 53: | Строка 54: | ||
| align=right |<tt>00</tt>……<tt>01<font color=#B20080>1</font></tt> | | align=right |<tt>00</tt>……<tt>01<font color=#B20080>1</font></tt> | ||
|- | |- | ||
− | |F<sub>n</sub>+1 | + | |F<sub>n</sub> + 1 |
|<tt>10</tt>……<tt>01</tt> | |<tt>10</tt>……<tt>01</tt> | ||
| align=right |<tt>10</tt>……<tt>01<font color=#B20080>1</font></tt> | | align=right |<tt>10</tt>……<tt>01<font color=#B20080>1</font></tt> | ||
Строка 59: | Строка 60: | ||
== Представление натуральных чисел == | == Представление натуральных чисел == | ||
− | Любое неотрицательное целое число <math>a</math> можно единственным образом представить последовательностью [[бит]]ов …ε<sub>k</sub>…ε<sub>4</sub>ε<sub>3</sub>ε<sub>2</sub> (<math>\varepsilon_k \in \{ 0,1\}</math>) так, что <math>a = \sum_k \varepsilon_k F_k</math>, причём последовательность {ε<sub>k</sub>} содержит лишь конечное число единиц, и не имеет пар соседних единиц: <math>\forall k\ge 2 | + | Любое неотрицательное целое число <math>a</math> можно единственным образом представить последовательностью [[бит]]ов …ε<sub>k</sub>…ε<sub>4</sub>ε<sub>3</sub>ε<sub>2</sub> (<math>\varepsilon_k \in \{ 0,1\}</math>) так, что <math>a = \sum_k \varepsilon_k F_k</math>, причём последовательность {ε<sub>k</sub>} содержит лишь конечное число единиц, и не имеет пар соседних единиц: <math>\forall k\ge 2\colon (\varepsilon_k=1) \Rightarrow (\varepsilon_{k+1}=0)</math>. |
За исключением последнего свойства, данное представление аналогично [[двоичная система счисления|двоичной системе счисления]]. | За исключением последнего свойства, данное представление аналогично [[двоичная система счисления|двоичной системе счисления]]. | ||
=== Обоснование === | === Обоснование === | ||
− | В основе лежит '' | + | В основе лежит ''[[теорема Цекендорфа]]''<ref>{{Cite web |url=http://www.goldenmuseum.com/1601Mathematics_rus.html |title=Эдуард Цекендорф |access-date=2010-01-27 |archive-url=https://web.archive.org/web/20170506095256/http://www.goldenmuseum.com/1601Mathematics_rus.html |archive-date=2017-05-06 |url-status=dead }}</ref> — любое неотрицательное целое число единственным образом представимо в виде суммы некоторого набора попарно различных чисел Фибоначчи с индексами, большими единицы, не содержащего пар соседних чисел Фибоначчи. |
Доказательство существования легко провести [[математическая индукция|по индукции]]. Любое целое число <math>a\ge 1</math> попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого <math>n\ge 2</math> верно неравенство: <math>F_n \le a < F_{n+1}</math>. Таким образом, <math>a = F_n + a'</math>, где <math>a'=a-F_n\ <\ F_{n-1}</math>, так что разложение числа <math>a'</math> уже не будет содержать слагаемого <math>F_{n-1}</math>. | Доказательство существования легко провести [[математическая индукция|по индукции]]. Любое целое число <math>a\ge 1</math> попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого <math>n\ge 2</math> верно неравенство: <math>F_n \le a < F_{n+1}</math>. Таким образом, <math>a = F_n + a'</math>, где <math>a'=a-F_n\ <\ F_{n-1}</math>, так что разложение числа <math>a'</math> уже не будет содержать слагаемого <math>F_{n-1}</math>. | ||
=== Использование === | === Использование === | ||
+ | |||
==== Юпана ==== | ==== Юпана ==== | ||
− | [[Файл:Yupana 1. | + | [[Файл:Yupana 1.png|thumb|[[Юпана]]]] |
− | Предполагают, что некоторые разновидности [[Юпана|юпаны]] ([[абак]]а [[инки|инков]]) использовали фибоначчиеву систему счисления, чтобы минимизировать необходимое для вычислений число зёрен<ref>{{cite web|author=Antonio Aimi, Nicolino De Pasquale|url= | + | Предполагают, что некоторые разновидности [[Юпана|юпаны]] ([[абак]]а [[инки|инков]]) использовали фибоначчиеву систему счисления, чтобы минимизировать необходимое для вычислений число зёрен<ref>{{cite web|author=Antonio Aimi, Nicolino De Pasquale|url=https://web.archive.org/web/*/http://www.quipus.it/english/Andean%20Calculators.pdf|title=Andean Calculators|access-date=2009-12-12}}</ref>. |
==== В теории информации ==== | ==== В теории информации ==== | ||
− | На основе фибоначчиевой системы счисления строится ''код (кодирование) Фибоначчи'' | + | На основе фибоначчиевой системы счисления строится ''код (кодирование) Фибоначчи'' — [[универсальный код]] для натуральных чисел (1,{{nbsp|1}}2,{{nbsp|1}}3…), использующий последовательности [[бит]]ов. Поскольку комбинация{{nbsp|1}}<tt>11</tt> запрещена в фибоначчиевой системе счисления, её можно использовать как маркер конца записи. |
− | Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз <tt>1</tt> (см. таблицу). То есть, кодовая последовательность имеет вид: | + | |
+ | Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз{{nbsp|1}}<tt>1</tt> (см. таблицу). То есть, кодовая последовательность имеет вид: | ||
: ε<sub>2</sub>ε<sub>3</sub>…ε<sub>''n''</sub><font color=#B20080>1</font>, | : ε<sub>2</sub>ε<sub>3</sub>…ε<sub>''n''</sub><font color=#B20080>1</font>, | ||
− | где ''n'' | + | где ''n'' — номер самого старшего разряда с единицей. |
=== Арифметика === | === Арифметика === | ||
− | Сложение чисел в [[позиционная система счисления|позиционных системах счисления]] выполняется с использованием [[перенос (арифметика)|переноса]], позволяющего устранять последствия переполнения разряда. Например, в двоичной системе: <span style="background-color: rgb(255,255,51)">01</span> + <span style="background-color: rgb(255,255,51)">01</span> = <span style="background-color: rgb(255,255,51)">0<font color=red>2</font></span> = <span style="background-color: rgb(255,255,51)">10</span>. | + | Сложение чисел в [[позиционная система счисления|позиционных системах счисления]] выполняется с использованием [[перенос (арифметика)|переноса]], позволяющего устранять последствия переполнения разряда. Например, в двоичной системе: <span style="background-color: rgb(255,255,51)">01</span> + <span style="background-color: rgb(255,255,51)">01</span> = <span style="background-color: rgb(255,255,51)">0<font color=red>2</font></span> = <span style="background-color: rgb(255,255,51)">10</span>. |
В фибоначчиевой системе счисления дело обстоит сложнее: | В фибоначчиевой системе счисления дело обстоит сложнее: | ||
− | * Во-первых, вес старших разрядов не является кратным весу разряда, из которого требуется перенос. При сложении двух единиц в одном разряде требуется перенос не только влево, но и вправо: <span style="background-color: rgb(102,255,51)">0<font color=red>2</font>00</span> = <span style="background-color: rgb(102,255,51)">1001</span>. При переносе в отсутствующие разряды ε<sub>1</sub> и ε<sub>0</sub> следует помнить, что F<sub>1</sub>=1=F<sub>2</sub> и F<sub>0</sub>=0. | + | * Во-первых, вес старших разрядов не является кратным весу разряда, из которого требуется перенос. При сложении двух единиц в одном разряде требуется перенос не только влево, но и вправо: <span style="background-color: rgb(102,255,51)">0<font color=red>2</font>00</span> = <span style="background-color: rgb(102,255,51)">1001</span>. При переносе в отсутствующие разряды ε<sub>1</sub> и ε<sub>0</sub> следует помнить, что F<sub>1</sub>=1=F<sub>2</sub> и F<sub>0</sub>=0. |
* Во-вторых, требуется избавляться от соседних единиц: <span style="background-color: rgb(102,255,51)">0<font color=red>11</font></span> = <span style="background-color: rgb(102,255,51)">100</span>. Правило для раскрытия двоек является следствием этого равенства: <span style="background-color: rgb(102,255,51)">0<font color=red>2</font>00</span> = <span style="background-color: rgb(102,255,51)">0100</span> + <span style="background-color: rgb(102,255,51)">00<font color=red>11</font></span> = <span style="background-color: rgb(102,255,51)">0<font color=red>11</font>1</span> = <span style="background-color: rgb(102,255,51)">1001</span>. | * Во-вторых, требуется избавляться от соседних единиц: <span style="background-color: rgb(102,255,51)">0<font color=red>11</font></span> = <span style="background-color: rgb(102,255,51)">100</span>. Правило для раскрытия двоек является следствием этого равенства: <span style="background-color: rgb(102,255,51)">0<font color=red>2</font>00</span> = <span style="background-color: rgb(102,255,51)">0100</span> + <span style="background-color: rgb(102,255,51)">00<font color=red>11</font></span> = <span style="background-color: rgb(102,255,51)">0<font color=red>11</font>1</span> = <span style="background-color: rgb(102,255,51)">1001</span>. | ||
− | + | {{дополнить раздел|дата=2014-03-27}} | |
− | {{ | ||
== Обобщение на вещественные числа == | == Обобщение на вещественные числа == | ||
− | |||
{| align=right class=standard style="margin-right: 20px" | {| align=right class=standard style="margin-right: 20px" | ||
|- | |- | ||
! Число | ! Число | ||
− | ! Представление<br | + | ! Представление<br>через степени{{nbsp|1}}<math>\varphi</math> |
|- | |- | ||
− | | | + | | 1 |
− | |<tt> 1 | + | |<tt> 1</tt> |
|- | |- | ||
− | | | + | | 2 |
|<tt> 10,01</tt> | |<tt> 10,01</tt> | ||
|- | |- | ||
− | | | + | | 3 |
|<tt> 100,01</tt> | |<tt> 100,01</tt> | ||
|- | |- | ||
− | | | + | | 4 |
|<tt> 101,01</tt> | |<tt> 101,01</tt> | ||
|- | |- | ||
− | | | + | | 5 |
|<tt> 1000,1001</tt> | |<tt> 1000,1001</tt> | ||
|- | |- | ||
− | | | + | | 6 |
|<tt> 1010,0001</tt> | |<tt> 1010,0001</tt> | ||
|- | |- | ||
− | | | + | | 7 |
|<tt> 10000,0001</tt> | |<tt> 10000,0001</tt> | ||
|- | |- | ||
− | | | + | | 8 |
|<tt> 10001,0001</tt> | |<tt> 10001,0001</tt> | ||
|- | |- | ||
− | | | + | | 9 |
|<tt> 10010,0101</tt> | |<tt> 10010,0101</tt> | ||
|- | |- | ||
Строка 137: | Строка 138: | ||
|} | |} | ||
− | Похожее устройство имеет [[позиционная система счисления]] с [[иррациональное число|иррациональным]] основанием, равным [[золотое сечение|золотому сечению]] <math>\varphi = (1 + \sqrt{5})/2</math>. | + | Похожее устройство имеет [[позиционная система счисления]] с [[иррациональное число|иррациональным]] основанием, равным [[золотое сечение|золотому сечению]] <math>\varphi = (1 + \sqrt{5})/2</math>. |
− | Любое [[вещественное число]] ''x'' из отрезка [0,1] допускает разложение в [[степенной ряд|ряд]] через отрицательные степени золотого сечения: | + | Любое [[вещественное число]] {{math|''x''}} из отрезка [0,1] допускает разложение в [[степенной ряд|ряд]] через отрицательные степени золотого сечения: |
: <math>x = \sum_{k=-1}^{-\infty} \varepsilon_k \varphi^k,\qquad \varepsilon_k \in \{0,1\}</math> | : <math>x = \sum_{k=-1}^{-\infty} \varepsilon_k \varphi^k,\qquad \varepsilon_k \in \{0,1\}</math> | ||
− | где | + | где <math>\left\{ \varepsilon_k \right\}</math> обладает тем же свойством отсутствия соседних единиц. |
− | Коэффициенты находятся последовательным сравнением ''x'' с <math>\varphi^{-1}</math> | + | Коэффициенты находятся последовательным сравнением {{math|''x''}} с <math>\varphi^{-1}</math> — золотым сечением отрезка [0,1], вычитанием <math>\varphi^{-1}</math> (если <math>\varepsilon_k = 1</math>) и умножением на <math>\varphi</math>. |
Из этого нетрудно видеть, что любое неотрицательное вещественное число допускает разложение: | Из этого нетрудно видеть, что любое неотрицательное вещественное число допускает разложение: | ||
: <math>a = \sum_{k=N-1}^{-\infty} \varepsilon_k \varphi^k\,,</math> | : <math>a = \sum_{k=N-1}^{-\infty} \varepsilon_k \varphi^k\,,</math> | ||
− | где | + | где {{math|<var>N</var>}} таково, что <math>a < \varphi^N</math>. |
− | + | При этом <math>\varepsilon_k = 0</math> для всех <math>k \geqslant N</math>. | |
Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. | Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. | ||
− | Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент [[ | + | Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент [[Кольцо (математика)|кольца]] <math>{\mathbb Z}+\varphi{\mathbb Z}</math>) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.<ref>{{iw|Система счисления на основе золотого сечения|||Golden ratio base}}<!-- тут хорошо бы найти настоящий источник --></ref> |
Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: | Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: | ||
− | : <math>F_k = F_{k-1} + F_{k-2} | + | : <math>F_k = F_{k-1} + F_{k-2}</math> |
− | позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.<!-- | + | : <math>\varphi^k = \varphi^{k-1} + \varphi^{k-2}</math> |
+ | позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.<!-- | ||
Тут надо уточнить, на самом деле связь будет с некоторыми оговорками и с точностью до множителя √5 или что-то такое. | Тут надо уточнить, на самом деле связь будет с некоторыми оговорками и с точностью до множителя √5 или что-то такое. | ||
Думаю, что должна быть связь с формулой секцией ниже, поскольку то умножение действует по той же логике, что и перемножение чисел в Φ-системе. | Думаю, что должна быть связь с формулой секцией ниже, поскольку то умножение действует по той же логике, что и перемножение чисел в Φ-системе. | ||
Строка 161: | Строка 163: | ||
== Фибоначчиево умножение == | == Фибоначчиево умножение == | ||
− | Для целых чисел <math>a = \sum_k \varepsilon_k F_k\ </math> и <math>b = \sum_l \zeta_l F_l\ </math> можно определить «умножение»<ref>{{OEIS|A101330}} | + | Для целых чисел <math>a = \sum_k \varepsilon_k F_k\ </math> и <math>b = \sum_l \zeta_l F_l\ </math> можно определить «умножение»<ref>{{OEIS|A101330}}{{ref-en}}, [[Теорема Цекендорфа]]</ref> |
− | : <math>a\circ b = \sum_{k,l} \varepsilon_k \zeta_l F_{k+l},</math> | + | : <math>a \circ b = \sum_{k,l} \varepsilon_k \zeta_l F_{k+l},</math> |
которое аналогично умножению чисел в [[двоичная система счисления|двоичной системе счисления]]. | которое аналогично умножению чисел в [[двоичная система счисления|двоичной системе счисления]]. | ||
− | + | Эта операция не является настоящим умножением чисел, и выражается формулой:<ref>[http://www.research.att.com/~njas/sequences/a101330.txt Notes on the Fibonacci circle and arroba products]{{ref-en}}</ref> | |
− | : <math>a\circ b = 3 a b - a \lfloor(b+1)\varphi^{-2}\rfloor - b \lfloor(a+1)\varphi^{-2}\rfloor,</math> | + | : <math>a\circ b = 3 a b - a \lfloor(b+1)\varphi^{-2}\rfloor - b \lfloor(a+1)\varphi^{-2}\rfloor,</math> |
− | где <math>\lfloor\cdot\rfloor</math> | + | где <math>\lfloor\cdot\rfloor</math> — [[целая часть]], <math>\varphi=\frac{1+\sqrt{5}}{2}</math> — [[золотое сечение]]. |
− | Эта операция обладает [[ | + | Эта операция обладает [[Ассоциативная операция|ассоциативностью]], на что впервые обратил внимание [[Кнут, Дональд Эрвин|Дональд Кнут]]<ref>{{статья |заглавие=Fibonacci multiplication |ссылка=https://archive.org/details/sim_applied-mathematics-letters_1988_1_1/page/57 |издание=Applied Mathematics Letters |том=1 |номер=1 |страницы=57—60 |doi=10.1016/0893-9659(88)90176-0 |язык=und |автор=D. E. Knuth |год=1988}}</ref>. Другое «произведение» <math>\sum_{k,l} \varepsilon_k \zeta_l F_{k+l-2},</math> отличающееся лишь сдвигом на два разряда, уже не является ассоциативным. |
− | |||
− | {{ | + | {{дополнить раздел|дата=2014-01-09}} |
== Примечания == | == Примечания == | ||
Строка 179: | Строка 180: | ||
== Литература == | == Литература == | ||
* {{книга | * {{книга | ||
− | |автор = Н. Н. | + | |автор = Воробьёв Н. Н. |
− | |заглавие = Числа Фибоначчи | + | |заглавие = Числа Фибоначчи |
− | |серия = [[Популярные лекции по математике]] | + | |серия = [[Популярные лекции по математике]] |
|издательство = Наука | |издательство = Наука | ||
− | |том = 39 | + | |том = 39 |
− | |год = 1978 | + | |год = 1978 |
− | |ссылка = http://ilib.mccme.ru/plm/ann/a06.htm | + | |ссылка = http://ilib.mccme.ru/plm/ann/a06.htm |
+ | }} | ||
+ | |||
+ | * {{статья | ||
+ | |заглавие = Система счисления Фибоначчи, реализация на C++ | ||
+ | |год = 2014 | ||
+ | |ссылка = http://www.moveinfo.ru/article/stablelink?page=0000041 | ||
+ | |издание = | ||
+ | |archiveurl = https://web.archive.org/web/20141016062442/http://www.moveinfo.ru/article/stablelink?page=0000041 | ||
+ | |archivedate = 2014-10-16 | ||
}} | }} | ||
+ | * Стахов А., Слученкова А., Щербаков И. Код да Винчи и ряды Фибоначчи. СПБ. Издательство: Питер, 2006. 320 с. ISBN 5-469-01369-3 | ||
+ | * Стахов А. П. Алгоритмическая теория измерения: новый подход к теории позиционных систем счисления и компьютерной арифметике// Журнал «Управляющие машины и системы», 1994, No 4-5. | ||
+ | * Стахов А. П. Компьютеры Фибоначчи и новая теория кодирования: история, теория, перспективы// Электронный журнал Таганрогского радиотехнического университета «Перспективные информационные технологии и интеллектуальные системы», № 2 (18), 2004// http://pitis.tsure.ru/files18/p5.pdf. | ||
[[Категория:Системы счисления]] | [[Категория:Системы счисления]] | ||
[[Категория:Золотое сечение]] | [[Категория:Золотое сечение]] | ||
[[Категория:Сжатие данных]] | [[Категория:Сжатие данных]] |
Текущая версия от 00:56, 20 августа 2025
Фибоначчиева система счисления — смешанная система счисления для целых чисел на основе чисел Фибоначчи F2=1, F3=2, F4=3, F5=5, F6=8 и т. д.
![]() | ||
Число | Запись в ФСС |
Код Фибоначчи |
---|---|---|
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 |
Представление натуральных чисел[править | править код]
Любое неотрицательное целое число можно единственным образом представить последовательностью битов …εk…ε4ε3ε2 () так, что , причём последовательность {εk} содержит лишь конечное число единиц, и не имеет пар соседних единиц: . За исключением последнего свойства, данное представление аналогично двоичной системе счисления.
Обоснование[править | править код]
В основе лежит теорема Цекендорфа[1] — любое неотрицательное целое число единственным образом представимо в виде суммы некоторого набора попарно различных чисел Фибоначчи с индексами, большими единицы, не содержащего пар соседних чисел Фибоначчи.
Доказательство существования легко провести по индукции. Любое целое число попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого верно неравенство: . Таким образом, , где , так что разложение числа уже не будет содержать слагаемого .
Использование[править | править код]
Юпана[править | править код]
Предполагают, что некоторые разновидности юпаны (абака инков) использовали фибоначчиеву систему счисления, чтобы минимизировать необходимое для вычислений число зёрен[2].
В теории информации[править | править код]
На основе фибоначчиевой системы счисления строится код (кодирование) Фибоначчи — универсальный код для натуральных чисел (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.
Обобщение на вещественные числа[править | править код]
Число | Представление через степени |
---|---|
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 |
Похожее устройство имеет позиционная система счисления с иррациональным основанием, равным золотому сечению .
Любое вещественное число x из отрезка [0,1] допускает разложение в ряд через отрицательные степени золотого сечения: где обладает тем же свойством отсутствия соседних единиц. Коэффициенты находятся последовательным сравнением x с — золотым сечением отрезка [0,1], вычитанием (если ) и умножением на . Из этого нетрудно видеть, что любое неотрицательное вещественное число допускает разложение: где N таково, что . При этом для всех .
Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент кольца ) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.[3]
Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.
Правила сложения аналогичны показанным выше с той поправкой, что перенос в сторону младших разрядов распространяется без ограничения. В данной системе счисления можно производить и умножение.
Фибоначчиево умножение[править | править код]
Для целых чисел и можно определить «умножение»[4] которое аналогично умножению чисел в двоичной системе счисления.
Эта операция не является настоящим умножением чисел, и выражается формулой:[5] где — целая часть, — золотое сечение.
Эта операция обладает ассоциативностью, на что впервые обратил внимание Дональд Кнут[6]. Другое «произведение» отличающееся лишь сдвигом на два разряда, уже не является ассоциативным.
Примечания[править | править код]
- ↑ Эдуард Цекендорф . Дата обращения: 27 января 2010. Архивировано из оригинала 6 мая 2017 года.
- ↑ Antonio Aimi, Nicolino De Pasquale. Andean Calculators . Дата обращения: 12 декабря 2009.
- ↑ Система счисления на основе золотого сечения[англ.]
- ↑ последовательность A101330 в OEIS (англ.), Теорема Цекендорфа
- ↑ Notes on the Fibonacci circle and arroba products (англ.)
- ↑ D. E. Knuth. Fibonacci multiplication (неопр.) // Applied Mathematics Letters. — 1988. — Т. 1, № 1. — С. 57—60. — doi:10.1016/0893-9659(88)90176-0.
Литература[править | править код]
- Воробьёв Н. Н. Числа Фибоначчи. — Наука, 1978. — Т. 39. — (Популярные лекции по математике).
- Система счисления Фибоначчи, реализация на C++. — 2014. Архивировано 16 октября 2014 года.
- Стахов А., Слученкова А., Щербаков И. Код да Винчи и ряды Фибоначчи. СПБ. Издательство: Питер, 2006. 320 с. ISBN 5-469-01369-3
- Стахов А. П. Алгоритмическая теория измерения: новый подход к теории позиционных систем счисления и компьютерной арифметике// Журнал «Управляющие машины и системы», 1994, No 4-5.
- Стахов А. П. Компьютеры Фибоначчи и новая теория кодирования: история, теория, перспективы// Электронный журнал Таганрогского радиотехнического университета «Перспективные информационные технологии и интеллектуальные системы», № 2 (18), 2004// http://pitis.tsure.ru/files18/p5.pdf.