Путеводитель для влюблённых в математику - Эдвард Шейнерман
Шрифт:
Интервал:
Закладка:
Каков был наш путь решения проблемы пяти книг? Есть пять вариантов, какую книгу поставить на крайнюю левую позицию. Когда она уже там, остаются четыре книги. Таким образом, количество вариантов для пяти книг в пять раз больше, чем количество вариантов для четырех. Давайте запишем это на математическом языке.
Пусть A5 – количество вариантов расстановки пяти книг. Мы получаем формулу:
A5 = 5 × A4.
Здесь A4, как вы догадались, – количество вариантов для четырех книг.
Как найти A4? Да точно так же! Слева может быть одна из четырех книг; в каждом случае останется три книги и соответствующее количество вариантов их взаиморасположения. Мы получаем:
A4 = 4 × A3.
Соответственно, A3 = 3 × A2. Количество вариантов для двух книг (куда уж проще) составляет A2 = 2 × A1, где, разумеется, A1 = 1.
И что же мы имеем?
A5 = 5 × A4 = 5 × 4 × A3 = 5 × 4 × 3 × A2 = 5 × 4 × 3 × 2 × A1 = 5 × 4 × 3 × 2 × 1 = 120.
Теперь все ясно и с общим случаем. Количество способов расставить N книг на полке:
N × (N – 1) × (N – 2) × … × 3 × 2 × 1. (A)
Выражение (A) носит название N факториал. Факториал обозначают восклицательным знаком: N!. Например, 6! = 6 × 5 × 4 × 3 × 2 × 1 = 720.
А есть ли формула?
Если мы задались целью вычислить значение 10! самый простой путь – перемножить числа от 1 до 10 и получить:
10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 3 628 800.
Но для подсчета 20! придется перемножать двадцать чисел. А вычислять 100! таким манером – просто каторжный труд. Есть ли какой-нибудь быстрый способ[101]?
Красивая, но никуда не годная с точки зрения реальных вычислений идея состоит в том, чтобы определить 10! через 9!. Это же «проще простого»:
10! = 10 × (9 × 8 × … × 3 × 2 × 1) = 10 × 9!.
Для произвольного значения N мы имеем:
N! = N × [(N – 1) × (N – 2) × … × 3 × 2 × 1].
Иными словами,
N! = N × (N – 1)!. (B)
Формула (B) чудесна, но она мало помогает при вычислении, скажем, 20!. Мы должны вычислить 19! и умножить его на 20. Само собой, она подсказывает, как вычислить 19!: для этого надо посчитать 18!. А затем умножить на 19. В конце концов нам придется перемножать все целые числа от 1 до 20.
Вот бы найти способ побыстрее… Есть ли основания предполагать, что мы можем ускорить вычисления? Да, и про это нам говорят треугольные числа[102] – суммы вида:
1 + 2 + 3 + … + N.
Например, пятое треугольное число равно 1 + 2 + 3 + 4 + 5 = 15. Обозначим TN треугольное число, представляющее собой сумму N элементов:
TN = N + (N – 1) + (N – 2) + … + 3 + 2 + 1.
Например:
T10 = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 55.
Это похоже на факториал, но со сложением вместо умножения. Есть ли способ посчитать T10, не складывая все десять чисел?
Есть хорошая новость: да, такое возможно, и доказательство выглядит просто и элегантно. Запишем сумму первых десяти целых положительных чисел в возрастающем и убывающем порядке:
Если мы сложим все эти 20 чисел, результат будет равен удвоенному T10. Но мы не станем сразу суммировать числа по горизонтали. Для начала сложим их попарно по вертикали:
В нижней строке все элементы равны 11, потому ответ прост[103]: 11 × 10 = 110. Теперь поделим этот результат пополам: T10 = 110 / 2 = 55.
Как мы будем действовать в общем случае? Для вычисления TN запишем целые числа от 1 до N в возрастающем и убывающем порядке и сложим пару в каждом столбце:
В нижней строке N элементов, каждый равен N + 1; таким образом, их сумма равна N × (N + 1). Поскольку это «двойная порция» TN, получается:
Для вычисления T100 нет необходимости складывать сотню чисел. Нужно лишь посчитать:
(100 × 101) / 2 = 5050.
Вот и ответ.
Существует ли простая, элегантная формула вычисления факториала? Увы, нет. Однако есть формула для вычисления приближенного значения факториала, выведенная Джеймсом Стирлингом[104]: