Преобразование производящих функций
При решении рекуррентных соотношений были использованы некоторые приёмы работы с производящими функциями. Здесь эти приёмы рассмотрены более подробно и оформлены в виде таблицы в конце раздела.
Определение
Напоминаю, что мы находимся в рамках определения, данного во «Введении», а именно: производящая функция последовательности (a0, a1, a2, ...) есть формальный степенной ряд
Говорят, что функция «производит», или «генерирует» последовательность, так как в разложении функции G(z) ряд по степеням z, коэффициент при zn равен an. Обозначается этот факт с помощью записи:
Данная запись так и читается: «коэффициент при zn в разложении функции G по степеням z».
Последовательность (an) начинается от нуля, но иногда удобно считать, что n — произвольное целое число. Для этого полагаем a-1=a-2=...=0.
Производящая функция является формальным рядом, то есть не следует считать, что z — число и пытаться строгость рассуждений привязывать к доказательству сходимости степенных рядов. Мы смотрим на производящие функции как на формальные суммы, не принимая во внимание их сходимость. Существуют ряды, которые расходятся во всех точках кроме нуля, например,
однако манипуляции с ними остаются корректными все равно. Строгое доказательство преобразований формальных степенных рядов здесь не приводится.
В любом случае, если Вы не доверяете механизму производящих функций, можно поступить следующим образом: получить некоторую формулу, а затем доказать её строго другим способом, например, методом математической индукции. Скажем, получили формулу для чисел Фибоначчи — проверьте, что она удовлетворяет рекуррентному соотношению и выполняются начальные условия. Проще доказать формулу, которая уже у нас в руках, чем выводить её «с нуля».
Сдвиг
Итак, функция G(z) генерирует последовательность (a0, a1, a2, ...). Что даёт умножение всей функции на zm (m≥0, целое)? Для ответа на этот вопрос распишем процесс умножения подробнее:
Данная функция генерирует новую последовательность:
которая является сдвигом исходной последовательности на m элементов вправо. То есть
Обратите внимание на то, что запись корректна, поскольку при n<m получаются отрицательные индексы, а элементы с такими индексами мы договорились считать нулями.
Аналогично, но в обратную сторону, происходит процесс деления. Для того, чтобы отрицательные (после сдвига) члены были равны нулю, нужно вычесть первые m слагаемых:
То есть
Полиномиальный множитель и делитель
Довольно часто приходится иметь дело с последовательностью (nan). Такая последовательность получается путём дифференцирования функции G(z) с последующим умножением результата на z:
В предпоследней сумме индекс суммирования стал начинаться от 1, так как производная константы a'0=0, а в последней сумме мы снова заставили его начинаться от 0, так как при n=0 величина (0⋅a0z0) все равно равна нулю и не влияет на сумму. Таким образом,
Аналогично, интегрирование функции (G(z)−a0)/z поделит общий член последовательности на n (заметьте, что мы предусмотрительно сдвинули элементы влево, а иначе у нас получилась бы последовательность (an−1/n)n≥1 [проверьте]).
Обратите внимание, что в новой последовательности нулевой член равен нулю.
Сложение и умножение на константу
Рассмотрим две производящие функции:
Мы можем их формально сложить:
что, в общем-то не удивительно.
Производящую функцию можно умножить на постоянный множитель:
Символ z также можно умножить на постоянное число:
Таким образом,
Свёртка
Перемножим производящие функции G(z) и H(z):
Сумму, взятую в скобки, принято называть «свёрткой» (обозначим её через cn):
Таким образом, произведение производящих функций, генерирующих последовательности (an) и (bn), генерирует свёртку (cn).
Рассмотрим частный случай этого замечательного факта. Пусть bn=1, тогда
То есть функция G(z)/(1−z) генерирует последовательность частичных сумм исходной последовательности (an). Такое положение дел даёт нам много свободы, например, теперь легко представлять себе разложение в ряд следующих дробей, не вспоминая явно про биномиальные коэффициенты:
Обратите внимание на то, как следующая последовательность получается из частичных сумм предыдущей.
Далее, используя свёртку, можно доказать некоторые полезные тождества. Мы знаем, чему равна сумма биномиальных коэффициентов с целым положительным верхним индексом n: Она равна 2n. А чему равна сумма их квадратов? —
Распишем сумму подробнее:
Теперь хорошо видно, что это свёртка двух последовательностей, каждая из которых порождается функцией
Значит
Кстати, эта красивая последовательность биномиальных коэффициентов из 2n по n украшает верхнюю часть нашего сайта.
Чётные и нечётные элементы
Расмотрим сумму
Таким образом, производящая функция
генерирует последовательность (a0, 0, a2, 0, a4, ...), то есть последовательность, в которой элементы с нечётными номерами заменены нулями. Например, пусть G(z)=1/(1−z), тогда
Полученная производящая функция генерирует последовательность (1, 0, 1, 0, ...), что согласуется с таблицей производящих функций (последовательность №5 при m=2).
Последовательность, в которой элементы с нечётным индексом вырезаны, можно «уплотнить» заменой z на z1/2:
Такая производящая функция генерирует последовательность из элементов с чётными номерами в исходной последовательности: (a0, a2, a4, ...).
Рассуждая аналогично, получим
Такая функция «вырезает» элементы, стоящие на чётных позициях. Вопрос: как «уплотнить» такую последовательность (убрать появившиеся нули)?
Таблица преобразований
Предполагается, что
В таблице указаны основные преобразования, которые можно законно выполнять с производящими функциями G(z) и H(z), а также комплексными числами α, β, r и целым m. В левой колонке указано действие над функциями, а в правой — порождаемая после этого действия последовательность.