Мой преподаватель по метрологии и стандартизации Георгий Сергеевич Утехин рассказывал, как они — студенты шестидесятники собирались после занятий и с жаром спорили на математические темы, причем дискуссии порой затягивались глубоко за полночь и отличались таким ожесточением, что главные спорщики потом месяцами не разговаривали друг с другом. Я запомнил даже одну из тем, вокруг которой разворачивались баталии «Числа Фибоначчи»
Это именно то поколение, которое с помощью логарифмической линейки рассчитывала траектории полета спутников и режимы работы АЭС, проектировало ТУ-160, ТУ-95 и всю линейку «сушек», вообщем конструировало всё то, чем мы сегодня гордимся. Конечно же мне всегда было интересно узнать про стиль мышления этих людей, где математика была не экзотикой, а самой что ни на есть популярной темой, которую, наряду с футболом, можно обсуждать в курилках и на кухнях.
Интересно, а сегодня возможны такие споры?… Как можно дискутировать на математические темы, лично я представляю с трудом, несмотря на первое техническое образование. Особенно после того, как открыл «Про математику — популярно» и попытался вникнуть в ту тему, которая засела в голове … одним словом — копирую текст сюда и предлагаю на эту тему подискутировать… ну или хотя бы понять, что тут написано… Ну или хотя бы попытаться дочитать до конца…
Числа Фибоначчи: 1, 1, 2, 3, 5, 8, 13, 21 и т.д. Этот ряд был назван в честь Леонардо Пизанского, больше известного как Фибоначчи. Леонардо Пизанский (1170–1250) — один из первых крупных математиков средневековой Европы. Прозвище Фибоначчи означает «сын Боначчи»
Вместо предисловия — задачка с домино
Вообразим длинную горизонтальную рамку размерами 1 × 10. Мы хотим полностью заполнить ее квадратами 1 × 1 и костяшками домино 1 × 2, не оставив ни единой щели. Вот картинка:
Вопрос: сколькими способами это можно сделать?
Для удобства обозначим число вариантов F10. Перебирать их все и потом пересчитывать — тяжелый труд, чреватый ошибками. Гораздо лучше упростить задачу. Не будем с места в карьер искать F10, начнем с F1. Это проще простого! Нам нужно заполнить рамку 1 × 1 квадратами 1 × 1 и костяшками домино 1 × 2. Домино не поместится, остается единственное решение: взять один квадрат. Другими словами, F1 = 1.
Теперь разберемся с F2. Размер рамки 1 × 2. Можно заполнить ее двумя квадратами или одной костяшкой домино. Таким образом, есть два варианта, и F2 = 2.
Дальше: сколькими способами можно заполнить рамку 1 × 3? Первый вариант: три квадрата. Два других варианта: одна костяшка домино (две не влезут) и квадрат слева или справа. Итак, F3 = 3. Еще один шаг: возьмем рамку 1 × 4. На рисунке показаны все варианты заполнения:
Мы нашли пять возможностей, но где гарантия, что мы ничего не упустили? Есть способ проверить себя. В левом конце рамки может быть или квадрат, или костяшка домино. В верхнем ряду на рисунке — варианты, когда слева квадрат, в нижнем ряду — когда слева домино.
Допустим, слева квадрат. Оставшуюся часть нужно заполнить квадратами и домино. Другими словами, нужно заполнить рамку 1 × 3. Это дает 3 варианта, так как F3 = 3. Если слева домино, размер оставшейся части 1 × 2, и заполнить ее можно двумя вариантами, так как F2 = 2.
Таким образом, у нас есть 3 + 2 = 5 вариантов, и мы удостоверились, что F4 = 5.
Теперь ваша очередь. Подумайте пару минут и найдите все варианты заполнения для рамки 1 × 5. Их немного. Решение — в конце главы. Можете отвлечься и подумать.
Вернемся к нашим квадратам. Хочется верить, что вы нашли 8 вариантов, так как есть 5 способов укладки, где слева квадрат, и еще 3 способа, где слева домино. Таким образом, F5 = 8.
Подытожим. Мы обозначили FN количество способов заполнения рамки 1 × n квадратами и костяшками домино. Нам необходимо найти F10. Вот что мы уже знаем:
Двигаемся дальше. Чему равно F6? Можно нарисовать все варианты, но это скучно. Лучше разобьем вопрос на две части. Сколькими способами можно заполнить рамку 1 × 6, если слева (a) квадрат и (b) костяшка домино? Хорошая новость: мы уже знаем ответ! В первом случае нам остается пять квадратов, а мы знаем, что F5 = 8. Во втором случае нужно заполнить четыре квадрата; нам известно, что F4 = 5. Таким образом, F5 + F4 = 13.
Чему равно F7?Исходя из тех же соображений, F7 =F6+F5=13+8=21. А как насчет F8? Очевидно, F8 = F7 + F6 = 21 + 13 = 34. И так далее. Мы обнаружили следующую взаимосвязь: Fn = Fn-1 + Fn-2.
Еще несколько шагов — и мы найдем искомое число F10. Правильный ответ — в конце главы.
Числа Фибоначчи
Числа Фибоначчи — это последовательность:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Она выстраивается по таким правилам:
― первые два числа 1 и 1;
― каждое следующее число получаем сложением двух предыдущих.
Будем обозначать n-ный элемент последовательности Fn, начиная с нуля: F0 = 1, F1 = 1, F2 = 2, F3 = 3, F4 = 5, … Очередной элемент мы вычисляем по формуле: Fn = Fn-1 + Fn-2.
Как мы видим, задача об укладке квадратов и домино привела нас к последовательности чисел Фибоначчи
Сумма чисел Фибоначчи
Попробуем сложить первые несколько чисел Фибоначчи. Что мы можем сказать о сумме F0 + F1 + … + Fn для любого n? Давайте проделаем кое-какие вычисления и посмотрим, что получится. Обратите внимание на результаты сложения внизу. Видите ли вы закономерность? Повремените немного, прежде чем двигаться дальше: будет лучше, если вы найдете ответ самостоятельно, а не прочтете уже готовое решение.
Хочется верить, вы увидели, что результаты суммирования, если к ним приплюсовать по единице, тоже выстраиваются в последовательность чисел Фибоначчи. Например, сложение чисел от F0 до F5 дает: F0 + F1 + F2 + F3 + F4 + F5 = 1 + 1 + 2 + 3 + 5 + 8 = 20 = F7 – 1. Сложение чисел от F0 до F6 дает 33, что на единицу меньше F8 = 34. Мы можем записать формулу для неотрицательных целых чисел n: F0 +F1 +F2 +…+Fn =Fn+2 –1. (*)
Вероятно, лично вам достаточно будет увидеть, что формула [* ]. работает в дюжине случаев, чтобы вы поверили, что она верна, но математики жаждут доказательств. Мы рады представить вам два возможных доказательства того, что она верна для всех неотрицательных целых чисел n.
Первое называется доказательством по индукции, второе — комбинаторным доказательством.
Доказательство по индукции
Формула [* ] представляет собой бесконечно много формул в свернутом виде. Доказать, что [* ] верно для конкретного значения n, скажем для n = 6, — простая арифметическая задача. Достаточно будет записать числа от F0 до F6 и сложить их: F0 +F2 +…+F6 =1+1+2+3+5+8+13=33.
Несложно увидеть, что F8 = 34, поэтому формула действует. Перейдем к F7. Не будем тратить время и складывать все числа: мы уже знаем сумму вплоть до F6. Таким образом, (F0 +F1 +…+F6 )+F7 =33+21=54. Как и раньше, все сходится: F9 = 55.
Если сейчас мы начнем проверять, работает ли формула для n = 8, наши силы окончательно иссякнут. Но все же посмотрим, что мы уже знаем и что хотим выяснить:
F0 +F1 +…+F7 =F9 .
F0 +F1 +…+F7 +F7 =?
Воспользуемся предыдущим результатом: (F0 +F1 +…+F7 )+F8 =(F9-1 )+F8.
Мы, конечно, можем вычислить (F9-1 ) + F8 арифметически. Но так мы устанем еще больше. В то же время мы знаем, что F8 + F9 = F10 . Таким образом, нам не нужно ничего высчитывать или заглядывать в таблицу чисел Фибоначчи:
(F0 + F1 + … + F7 ) + F8 = (F9-1 ) + F8 = (F8 + F9-1 ) = F10-1 .
Мы удостоверились, что формула работает для n = 8, на основе того, что знали про n = 7.
В случае n = 9 мы точно так же опираемся на результат для n = 8 (убедитесь в этом самостоятельно). Разумеется, доказав верность [* ] для n, мы можем быть уверены, что [* ] верно и для n + 1.
Мы готовы дать полное доказательство. Как уже было сказано, [* ] представляет собой бесконечное количество формул для всех значений n от нуля до бесконечности. Посмотрим, как работает доказательство.
Вначале мы доказываем [* ] в простейшем случае, для n = 0. Мы просто проверяем, что F0 = F0+2 – 1. Так как F0 = 1, а F2 = 2, очевидным образом 1 = 2 – 1, а F0 = F2-1.
Дальше нам достаточно показать, что верность формулы для одного значения n (скажем, n = k) автоматически означает верность для n + 1 (в нашем примере n = k + 1). Нам лишь надо продемонстрировать, как устроено это «автоматически». Что нам нужно сделать?
Возьмем некоторое число k. Предположим, мы уже знаем, что F0+F1+…+Fk =Fk+2–1. Мы ищем величину F0 + F1 + … + Fk + Fk+1.
Мы уже знаем сумму чисел Фибоначчи вплоть до Fk, поэтому у нас получается:
(F0+F1+…+Fk)+Fk+1 =(Fk+2–1)+Fk+1.
Правая часть равна Fk+2 – 1 + Fk+1, и мы знаем, чему равна сумма следующих друг за другом чисел Фибоначчи:
Fk+2–1 + Fk+1 = (Fk+2 + Fk+1) – 1 = Fk+3– 1
Подставим в наше равенство:
(F0+F1+…+Fk)+Fk+1 =Fk+3–1
Сейчас я объясню, что мы сделали. Если мы знаем, что [* ] верно, когда мы суммируем числа вплоть до Fk, тогда [* ] должно быть верно, если мы приплюсуем Fk+1.
Подытожим:
— Формула [* ] верна для n = 0.
— Если формула [* ] верна для n, она верна и для n + 1.
Мы можем уверенно сказать, что [* ] верно для любых значений n. Верно ли [* ] для n = 4987? Это так, если выражение верно для n = 4986, что основано на верности выражения для n = 4985, и так далее до n = 0. Следовательно, формула [* ] верна для всех возможных значений. Этот метод доказательства известен под названием математическая индукция (или доказательство по индукции). Мы проверяем базовый случай и даем шаблон, по которому каждый следующий случай может быть доказан на основе предыдущего.
Комбинаторное доказательство
А вот совершенно другое доказательство тождества [* ]. Основной подход тут — воспользоваться тем фактом, что число Fn — это количество способов облицевать прямоугольник 1 × n квадратами и костяшками домино.
Напомню, что нам нужно доказать:
F0 + F1 + F2 + … + Fn = Fn+2- 1. (*)
Идея заключается в том, чтобы рассматривать обе части уравнения как решение задачи с облицовкой. Если мы докажем, что левая и правая часть — решение для одного и того же прямоугольника, они совпадут между собой. Эта техника носит название комбинаторного доказательства[2 ].
На какой вопрос по комбинаторике уравнение [* ] дает два верных ответа? Эта головоломка похожа на те, что встречаются в шоу Jeopardy! [3 ], где участники должны формулировать вопрос, заранее зная правильный ответ.
Правая часть выглядит проще, поэтому начнем с нее. Ответ: Fn+2– 1. Каков вопрос? Если бы ответ был равен просто Fn+2, мы с легкостью сформулировали бы вопрос: сколькими способами можно облицевать прямоугольник 1 × (n + 2) с помощью квадратов и костяшек домино? Это почти то, что нужно, но ответ меньше на единицу. Попробуем мягко поменять вопрос и уменьшить ответ. Уберем один вариант облицовки и пересчитаем оставшиеся. Сложность состоит в том, чтобы найти один вариант, который кардинально отличается от остальных. Есть ли такой?
Каждый способ облицовки подразумевает использование квадратов или домино. Только квадраты задействованы в единственном варианте, в прочих есть хотя бы одна костяшка домино. Возьмем это за основу нового вопроса.
Вопрос: Сколько существует вариантов облицовки квадратами и костяшками домино прямоугольной рамки 1 × (n + 2), включающих по меньшей мере одну костяшку домино?
Сейчас мы найдем два ответа на этот вопрос. Так как оба будут верны, между числами мы сможем уверенно поставить знак равенства.
Один из ответов мы уже обсуждали. Есть Fn+2 вариантов укладки. Только один из них подразумевает использование исключительно квадратов, без домино. Таким образом, ответ №1 на наш вопрос таков: Fn+2– 1.
Второй ответ должен быть — я надеюсь — левой частью уравнения [* ]. Посмотрим, как это работает.
Нужно пересчитать варианты заполнения рамки, включающие хотя бы одну костяшку домино. Давайте подумаем, где будет расположена самая первая костяшка. Есть n + 2 позиций, и первая костяшка может располагаться в позициях от 1 до n + 1.
Рассмотрим случай n = 4. Мы ищем варианты заполнения рамки 1 × 6, задействующие хотя бы одну костяшку домино. Мы знаем ответ: F6 – 1 = 13 – 1 = 12, но нам необходимо получить его иным путем.
Первая костяшка домино может занимать следующие позиции:
Первая колонка демонстрирует случай, когда костяшка находится на первой позиции, вторая — когда костяшка на второй, и т. д.
Сколько вариантов в каждой колонке?
В первой колонке — пять вариантов. Если отбросить домино слева, мы получим ровно F4 = 5 вариантов для прямоугольника 1 × 4. Во второй колонке — три варианта. Отбросим домино и квадрат слева. Мы получим F3 = 3 варианта для прямоугольника 1 × 3. Аналогично для других колонок. Вот что мы обнаружили:
Таким образом, количество способов замостить квадратами и домино (хотя бы одной костяшкой) прямоугольную рамку 1 × 6 равно F4 + F3 + F2 + F1 + F0 = 12.
Вывод: F0+F1+F2+F3+F4=12=F6–1.
Рассмотрим общий случай. Нам дана рамка длиной n + 2. Сколько есть вариантов ее заполнения, при которых первая костяшка домино находится на некой позиции k? В этом случае первые k – 1 позиций заняты квадратами. Таким образом, в общей сложности занята k + 1 позиция [4 ]. Оставшиеся (n + 2) – (k + 1) = n – k + 1 можно заполнить любыми способами. Это дает Fn-k+1 вариантов. Построим диаграмму:
Если k меняется от 1 до n + 1, величина n – k + 1 меняется от 0 до n. Таким образом, количество вариантов заполнения нашей рамки с использованием хотя бы одной костяшки домино равно Fn + Fn-1 + … + F1 + F0.
Если поставить слагаемые в обратном порядке, мы получим левую часть выражения (*). Таким образом, мы нашли второй ответ на поставленный вопрос: F0 +F1 +…+Fn.
Итак, у нас есть два ответа на вопрос. Величины, полученные с помощью двух выведенных нами формул, совпадают, и тождество [* ] доказано.
Соотношение чисел Фибоначчи и золотое сечение
Сложение двух следующих друг за другом чисел Фибоначчи дает очередное число Фибоначчи. В этом разделе мы затронем вопрос поинтереснее: что будет, если мы поделим число Фибоначчи на предшествующее ему в ряду? Посчитаем соотношение Fk1. Для возрастающих значений k.
В таблице вы можете видеть соотношения от F1/F0 до F20/19.
Чем больше становятся числа Фибоначчи, тем ближе соотношение Fk+1/Fk к константе, примерно равной 1,61803. Это число — вы будете удивлены — достаточно известное, и если вы введете его в поисковую систему, вывалится уйма страниц о золотом сечении. Что это такое? Соотношение соседних чисел Фибоначчи не одинаково. Однако оно почти одинаково, если числа достаточно велики. Давайте найдем формулу для числа 1,61803 и для этого на время будем считать, что все соотношения одинаковы. Введем обозначение x:
x=Fk+1/ Fk=/ Fk+2/ Fk+1= Fk+3/ Fk+2=…
Это значит, что Fk+1 = xFk, Fk+2 = xFk+1 и т.д. Можно переформулировать:
Fk+2 =xFk+1=x2>Fk.
Но мы же знаем, что Fk+2= Fk+1 + Fk. Таким образом, x2>FkFk = xFk + Fk.
Если мы поделим обе части на Fk и перегруппируем слагаемые, то получим квадратное уравнение: x2-x-1=0. Оно имеет два решения:
Соотношение должно быть положительным. И вот мы получили знакомое нам число. Обычно для обозначения золотого сечения используют греческую букву φ (фи):
Мы уже приметили, что соотношение соседних чисел Фибоначчи приближается (стремится) к φ. Это замечательно. Это дает нам еще один способ вычислять приблизительные значения чисел Фибоначчи. Последовательность чисел Фибоначчи — это ряд F0 F1, F2, F3, F4, F5… Если все соотношения Fk+1/Fk будут одинаковы, мы получим формулу:
Fn=cφn
Здесь с — еще одна константа. Сравним округленные значения Fn и φn для разных n:
Для больших значений n соотношение Fn/ φn≈0,723607. Это число равно в точности φ/корень5. Другими словами,
Обратите внимание: если её округлить до ближайшего целого числа, мы получим в точности Fn
Если вы не хотите утруждать себя округлениями до целого числа, то формула, названная названная в честь Жака Бине [5 ], даст вам точное значение:
Заполнение рамки 1 × 5
Нашу рамку можно заполнить квадратами и домино следующими способами:
Есть F4 = 5 вариантов, когда вначале стоит квадрат, и F3 = 3 варианта, когда вначале стоит костяшка домино. В общей сложности это дает F5 = F4 + F3 = 8 вариантов.
Величина F10 (ответ на следующий вопрос, касающийся укладки) равна 89.