ЛЕММА МАТИЯСЕВИЧА. Если № > 2, то число Фибоначчи Fm кратно Fn2 тогда и только тогда, когда m кратно nFn.
ДОКАЗАТЕЛЬСТВО. Докажем это, рассмотрев последовательность (Fkn mod Fn2) при k = 1, 2, 3,... № выяснив, когда же Fkn mod Fn2 = 0.(Мы знаем, что m должно иметь вид kn, если Fm mod Fn = 0.) Вначале имеем Fn mod Fn2 = Fn, что не равно нулю. Затем, согласно (6.108), получаем:
F3n = FnFn+1 +Fn-1Fn ≡ 2FnFn+1 (mod Fn2), поскольку Fn+1 ≡ Fn-1 (mod Pn). Аналогично F2n+1 = Fn+12 + Fn2 ≡ Fn+12 (mod Fn2).
Это сравнение позволяет вычислить:
F3n = F2n+1Fn + F2nFn-1
≡ Fn+12Fn + (2FnFn+1)Fn+1 = 3 Fn+12Fn (mod Fn2),
F3n+1 = F2n+1Fn+i + F2nFn
≡ Fn+13(2FnFn+1) Fn ≡ F3n+1 (mod Fn2)
И вообще индукцией по k устанавливается, что:
Fkn ≡ kFn+1k-1 и Fkn+1 = Fn+1k (mod Fn2).
А поскольку Fn+1 взаимно просто с Fn, то
Fkn ≡ 0 (mod Fn2)
kFn ≡ 0 (mod Fn2) k ≡ 0 (mod Fn2)и лемма Матиясевича доказана.
Одно из наиболее важных качеств чисел Фибоначчи – это особый способ представления целых чисел с их использованием. Будем писать:
j >> k
j ≥ k + 2.(11)Тогда верна следующая
ТЕОРЕМА Цеккендорфа. Каждое целое положительное число имеет единственное представление вида:
n = Fk1, + Fk2+ … + Fkr, k1 > k2 > … > kr > 0.(12)
К примеру, представление одного миллиона оказывается таким:
1 000 000 = 832040 + 121393+46368 + 144+55 = F30 + F26 + F24 + F12 + F10.
Подобное представление всегда может быть найдено с помощью „жадного" подхода: в качестве Fk1, выбирается наибольшее число Фибоначчи ≤ n, затем в качестве Fk2 выбирается наибольшее число ≤ № – Fk1, и т. д. (Более точно, предположим, что Fk ≤ № < Fk+1; тогда 0 ≤ № – Fk < Fk+1 – Fk = Fk-1,. Если № – одно из чисел Фибоначчи, то представление (12) справедливо при r = 1 и k1 = k. В противном случае индукция по № показывает, что № – Fk имеет фибоначчиево представление Fk2 + … + Fkr, и представление (12) справедливо, если положить k1 = k, ибо неравенства Fk2 ≤ № – Fk < Fk-1 означают, что k >> k2.) И обратно, всякое представление вида (12) означает, что:
Fk1 ≤ № < Fk1+1,
поскольку наибольшим возможным значением выражения Fk2 + …+Fkr, когда k >> k2 >> … >> kr >> 0, является:
Fk-2 + Fk-4 +---+ Fk mod2+2 = Fk-1 – 1, если k ≥ 2.(13)
(Эта формула легко доказывается индукцией по k – ее левая часть обращается в нуль при k равном 2 или 3.) Поэтому k1 – это как раз описанная выше, „жадно" выбранная величина, и данное представление должно быть единственным.
Любая система однозначного представления чисел является системой счисления – следовательно, теорема Цеккендорфа приводит к фибоначчиевой системе счисления. Всякое целое неотрицательное число можно представить в виде последовательности нулей и единиц, записав:
n = (bmbm-1... b2)F
№ = . (14)Эта система счисления отчасти напоминает двоичное (с основанием 2) представление, за исключением того, что в ней никогда не встречаются две 1 подряд. Вот, к примеру, числа от 1 до 20, представленные по Фибоначчи:
1 = (000001)F 6 = (001001)F 11=(010100)F 16 = (100100)F
2 = (000010)F 7 = (001010)F 12=(010101)F 17 = (100101)F
3 = (000100)F 8 = (010000)F 13 = (100000)F 18 = (101000)F
4 = (000101)F 9 = (010001)F 14 = (100001)F 19 = (101001)F
5 = (001000)F 10 = (010010)F 15 = (100010)F 20 = (101010)F
Фибоначчиево представление одного миллиона, указанное минутой ранее, может быть сопоставлено с его двоичным представлением: 219 + 218 + 217 + 2'6 + 214 + 29 + 26:
(1000000)10=(10001010000000000010100000000)F=(11110100001001000000)2.
Фибоначчиево представление требует несколько больше битов, поскольку не допускаются две 1 подряд – но в остальном оба представления аналогичны. При прибавлении 1 в фибоначчиевой системе счисления возникают два случая. В случае, если „разряд единиц" есть 0, он заменяется на 1 – тем самым прибавляется F2 = 1, ибо разряд единиц связан с F2.В противном случае двумя наименее значащими цифрами будут 01, и они заменяются на 10 (тем самым прибавляя F3 – F2 = 1). Наконец, мы должны „перенести" 1 столько раз, сколько это необходимо, заменяя набор цифр ‘011’ на ‘100’ до тех пор, пока в строке цифр имеются две рядом стоящие 1.(Подобное правило переноса эквивалентно замене Fm+1 + Fm на Fm+2). Так, для того чтобы перейти от 5 = (1000)F к 6 = (1001)F или от 6 = (1001)F к 7 = (1010)F, переносов не требуется, но для того чтобы перейти от 7 = (1010)F к 8 = (10000)F необходимо выполнить перенос дважды.
Несмотря на обилие рассмотренных нами свойств чисел Фибоначчи, мы пока не сталкивались с какой-либо замкнутой формулой для них. Так, нет ли какой-нибудь связи между Fn и другими известными нам величинами? Можно ли "разрешить" рекуррентность, посредством которой определяются числа Fn?
Ответ утвердительный: действительно, существует простой способ решения этой рекуррентности, если воспользоваться понятием производящей функции. Образуем бесконечный ряд:
F(z) =F0+F1z + F2z2 +... =
Fnzn. (15)Если мы сможем найти простую формулу для F(z), то появятся шансы установить простую формулу и для его коэффициентов Fn.
Степенной ряд F(z) обнаруживает одно замечательное свойство, если посмотреть, что происходит при его умножении на z и на z2:
F(z) = F0 + F1z + F2z2 + F3z3 + F4z4 + F5z5 + …,
zF(z) = F0z + F1z2 + F2z3 + F3z4 + F4z5 + …,
z2F(z) = F0z2 + F1z3 + F2z4 + F3z5 + ….
Если теперь вычесть два последних равенства из первого, то члены, включающие z2, z3 и большие степени z, пропадут – в силу фибоначчиевой рекуррентности. К тому же постоянный член F0 на самом деле никогда не оказывается первым, поскольку F0 = 0. Следовательно, все, что остается после вычитания – это (F1 – F0)z, т. е. просто z. Другими словами,
F(z) – z F(z) – z2F(z) =z,
и решение F(z) получается в виде компактной формулы:
F(z) = z / (1 – z – z2). (16)
Итак, вся информация, содержащаяся в последовательности Фибоначчи, свернута в несложное (хотя и непонятное) выражение z/(1 – z – z2). Теперь знаменатель можно разложить на множители, а затем воспользоваться элементарными дробями для получения формулы, которую легко разложить в степенной ряд. А коэффициенты этого степенного ряда дадут выражение для чисел Фибоначчи в замкнутой форме.
Выть может, план действия, который мы только набросали, будет понятнее, если подойти к нему с другого конца. Если имеется какая-нибудь более простая производящая функция – скажем, 1/(1 – α z), где α – некоторая константа, то нам известны коэффициенты при всех степенях z, поскольку:
1/(1 – α z) = 1 + α z + α2 z2 + α3 z3 + ….
Аналогично, если имеется некоторая производящая функция вида:
А/(1 – α z) + В/(1 – β z),
то коэффициенты также легко вычисляются, ибо:
А/(1 – α z) + В/(1 – β z) = A
(α z)n + (β zn) = (A αn + B βn)zn. (17)Следовательно, все, что от нас требуется – это найти константы А, В, α и β, такие, что:
1/(1 – α z) + В/(1 – β z) = z / (1 – z – z2),
и тогда будет получено выражение в замкнутой форме A αn + B βn для коэффициента Fn при zn в разложении F(z). Левая часть может быть переписана как:
1/(1 – α z) + В/(1 – β z) = (A – A β z – B – B α z) +) / [(1 – α z) (1 – β z)],
так что интересующие нас четыре константы являются решениями двух полиномиальных уравнений:
(1 – α z) (1 – β z) = 1 – z – z2; (18)
(A + B) – (A β – B α) z = z. (19)
Мы хотим представить знаменатель F(z) в форме произведения (1 – α z) (1 – β z) – тогда появится возможность выразить F(z) в виде суммы двух дробей, в которых сомножители (1 – α z) и (1 – β z) удачно отделены друг от друга.
Обратим внимание на то, что сомножители в знаменателе уравнения (18) записаны в виде (1 – α z) (1 – β z), а не в более привычной форме c(z – ρ1)(z – ρ2), где ρ1 и ρ2 – некоторые корни. Дело в том, что запись (1 – α z) (1 – β z) приводит к более привлекательным разложениям в степенные ряды.
Величины α и β могут быть найдены несколькими способами, в одном из которых используется тонкая уловка. Введем новую переменную w и попробуем найти разложение вида:
w2 – w z – z2 = (w – α z) (w – β z).
Тогда мы сможем просто положить w = 1 и получить разложение 1 – z – z2.Корни уравнения w2 – w z – z2 = 0 могут быть найдены по формуле решения квадратного уравнения – они равны:
(z ±
)/2 = z.