Производящая функция — различия между версиями
(→Решение рекуррентных соотношений) |
м (rollbackEdits.php mass rollback) |
||
(не показано 18 промежуточных версий 8 участников) | |||
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
+ | |id=main | ||
|definition= | |definition= | ||
− | '''Производящая функция''' (англ. ''generating function'') — это формальный степенной ряд | + | '''Производящая функция''' (англ. ''generating function'') — это формальный степенной ряд вида <tex>G(z)=\sum\limits_{n=0}^\infty a_n z^n</tex>, порождающий (производящий) последовательность <tex>(a_0, a_1, a_2, \ldots)</tex>. |
− | |||
− | <tex>G(z)=\sum\limits_{n=0}^\infty a_n z^n</tex>, | ||
− | |||
− | порождающий (производящий) последовательность <tex>(a_0, a_1, a_2, \ldots)</tex>. | ||
}} | }} | ||
Метод производящих функций был разработан Эйлером в 1750-х годах. | Метод производящих функций был разработан Эйлером в 1750-х годах. | ||
Строка 31: | Строка 28: | ||
* <tex>\prod\limits_{ n = 1}^\infty(1+x^n)</tex> {{---}} производящая функция для последовательности <tex>d_n</tex>, где <tex>d_i</tex> {{---}} число разбиений на различные слагаемые. | * <tex>\prod\limits_{ n = 1}^\infty(1+x^n)</tex> {{---}} производящая функция для последовательности <tex>d_n</tex>, где <tex>d_i</tex> {{---}} число разбиений на различные слагаемые. | ||
− | * <tex>\prod\limits_{n=1}^\infty(1+x^{ 2n - 1})</tex> {{---}} производящая функция для последовательности <tex>l_n</tex>, где <tex>l_i</tex> {{---}} число разбиений на нечётные слагаемые. С помощью метода производящих функций можно доказать, что производящие функции последовательностей равны, соответственно <tex>d_n = l_n </tex>: <tex>\prod\limits_{n=1}^\infty(1+x^{ n})=\prod\limits_{n=1}^\infty \dfrac{1-x^{2n}}{1-x^n}=\dfrac{1-x^2}{1-x}\dfrac{1-x^4}{1-x^2}\dfrac{1-x^6}{1-x^3}\ldots=</tex> | + | * <tex>\prod\limits_{n=1}^\infty(1+x^{ 2n - 1})^{-1}</tex> {{---}} производящая функция для последовательности <tex>l_n</tex>, где <tex>l_i</tex> {{---}} число разбиений на нечётные слагаемые. С помощью метода производящих функций можно доказать, что производящие функции последовательностей равны, соответственно <tex>d_n = l_n </tex>: <tex>\prod\limits_{n=1}^\infty(1+x^{ n})=\prod\limits_{n=1}^\infty \dfrac{1-x^{2n}}{1-x^n}=\dfrac{1-x^2}{1-x}\dfrac{1-x^4}{1-x^2}\dfrac{1-x^6}{1-x^3}\ldots=</tex> |
− | <tex>=\dfrac{1}{1-x}\dfrac{1}{1-x^3}\dfrac{1}{1-x^5}\ldots=\prod\limits_{n=1}^\infty(1+x^{ 2n - 1})</tex> | + | <tex>=\dfrac{1}{1-x}\dfrac{1}{1-x^3}\dfrac{1}{1-x^5}\ldots=\prod\limits_{n=1}^\infty(1+x^{ 2n - 1})^{-1}</tex> |
== Примеры решений задач методом производящих функций == | == Примеры решений задач методом производящих функций == | ||
Строка 40: | Строка 37: | ||
Существует целый класс последовательностей, задаваемых рекуррентным соотношением, например, <tex>f_n</tex> {{---}} числа Фибоначчи или <tex>C_n</tex> {{---}} | Существует целый класс последовательностей, задаваемых рекуррентным соотношением, например, <tex>f_n</tex> {{---}} числа Фибоначчи или <tex>C_n</tex> {{---}} | ||
[[Числа Каталана | числа Каталана]]. Метод производящих функций позволяет получить выражение для <tex>a_n</tex> через номер элемента в последовательности в замкнутом виде, то есть в таком виде, что выражение можно вычислить, предполагая, что <tex>z</tex> достаточно мало. | [[Числа Каталана | числа Каталана]]. Метод производящих функций позволяет получить выражение для <tex>a_n</tex> через номер элемента в последовательности в замкнутом виде, то есть в таком виде, что выражение можно вычислить, предполагая, что <tex>z</tex> достаточно мало. | ||
− | |||
Пусть последовательность <tex>(a_0, a_1, a_2, \ldots)</tex> удовлетворяет некоторому рекуррентному соотношению. Мы хотим получить выражение для <tex>a_n</tex> (при <tex>n \geqslant 0</tex>) в замкнутом виде. Алгоритм получения замкнутого выражения для чисел <tex>a_n</tex>, удовлетворяющих рекуррентному соотношению, с помощью производящих функций состоит из 4 шагов: | Пусть последовательность <tex>(a_0, a_1, a_2, \ldots)</tex> удовлетворяет некоторому рекуррентному соотношению. Мы хотим получить выражение для <tex>a_n</tex> (при <tex>n \geqslant 0</tex>) в замкнутом виде. Алгоритм получения замкнутого выражения для чисел <tex>a_n</tex>, удовлетворяющих рекуррентному соотношению, с помощью производящих функций состоит из 4 шагов: | ||
Строка 102: | Строка 98: | ||
− | Таким образом наше последнее слагаемое примет вид: | + | Таким образом, наше последнее слагаемое примет вид: |
Строка 172: | Строка 168: | ||
{{Задача | {{Задача | ||
| about = | | about = | ||
− | | definition = Рассмотрим множество путей на прямой, состоящих из шагов длины <tex>1</tex> вправо и влево. Найдите производящую функцию для числа таких путей из <tex>n</tex> шагов, начинающихся в <tex>0</tex> и оканчивающихся | + | | definition = Рассмотрим множество путей на прямой, состоящих из шагов длины <tex>1</tex> вправо и влево. Найдите производящую функцию для числа таких путей из <tex>n</tex> шагов, начинающихся в <tex>0</tex> и оканчивающихся в <tex>0</tex>. |
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
− | + | Заметим, что для того, чтобы закончить путь в <tex>0</tex>, необходимо совершить равное число шагов вправо и влево. Тогда задача сводится к тому, чтобы выбрать <tex>\dfrac{n}{2}</tex> позиций для, например, шагов вправо из всего <tex>n</tex> шагов. Тогда ответом будет сумма от нуля до бесконечности по <tex>n</tex> всех <tex>C^{n}_{2n}</tex>. То есть: | |
− | |||
<tex> | <tex> | ||
g(x) = \sum\limits_{0}^{\infty} C^{n}_{2n} x^n | g(x) = \sum\limits_{0}^{\infty} C^{n}_{2n} x^n | ||
Строка 197: | Строка 188: | ||
<tex> | <tex> | ||
− | g(x) = \dfrac{1 - 2x - \sqrt{1-4x}}{2x \sqrt{1-4x}} + \dfrac{1-\sqrt{1-4x}}{2x} | + | g(x) = \dfrac{1 - 2x - \sqrt{1-4x}}{2x \sqrt{1-4x}} + \dfrac{1-\sqrt{1-4x}}{2x} = \dfrac{1}{\sqrt{1 - 4x}} |
</tex> | </tex> | ||
− | + | {{Задача | |
+ | | about = | ||
+ | | definition = Рассмотрим множество путей на прямой, состоящих из шагов длины <tex>1</tex> вправо и влево. Найдите производящую функцию для числа таких путей из <tex>n</tex> шагов, начинающихся и оканчивающихся в <tex>0</tex> и не заходящих в отрицательную полупрямую. | ||
+ | }} | ||
+ | |||
+ | Заметим, что задача аналогична [[Правильные скобочные последовательности | Правильной скобочной последовательности]]. Тогда производящей функцией для нашей задачи будет производящая функция для правильной скобочной последовательности, а именно: | ||
<tex> | <tex> | ||
g(x) = \dfrac{1-\sqrt{1-4x}}{2x} | g(x) = \dfrac{1-\sqrt{1-4x}}{2x} | ||
</tex> | </tex> | ||
− | |||
== Приложения == | == Приложения == | ||
=== Примеры простых производящих функций === | === Примеры простых производящих функций === | ||
− | На последнем шаге приведения производящей функции к замкнутому виду требуется разложить полученные слагаемые в ряд. Для этого можно воспользоваться таблицей основных производящих функций <ref>[http://www.genfunc.ru/theory/pril03/ Таблица производящих функций]</ref>. | + | <!--easy биномы увеличить, но так имхо лучше--->На последнем шаге приведения производящей функции к замкнутому виду требуется разложить полученные слагаемые в ряд. Для этого можно воспользоваться таблицей основных производящих функций <ref>[http://www.genfunc.ru/theory/pril03/ Таблица производящих функций]</ref>. |
Все суммы выполняются по переменной <tex>n</tex> от <tex>0</tex> до <tex>\infty</tex>. Элементы последовательности нумеруются от <tex>0</tex>. | Все суммы выполняются по переменной <tex>n</tex> от <tex>0</tex> до <tex>\infty</tex>. Элементы последовательности нумеруются от <tex>0</tex>. | ||
Строка 247: | Строка 242: | ||
| <tex>(m, -\dfrac{1}{3!}m^3, \dfrac{1}{5!}m^5, -\dfrac{1}{7!}m^7, \dfrac{1}{9!}m^9,\ldots)</tex> || <tex>\sum\limits \dfrac{1}{(2n-1)!}</tex> <tex>m^{(2n-1)}</tex> || <tex>\sin m</tex> | | <tex>(m, -\dfrac{1}{3!}m^3, \dfrac{1}{5!}m^5, -\dfrac{1}{7!}m^7, \dfrac{1}{9!}m^9,\ldots)</tex> || <tex>\sum\limits \dfrac{1}{(2n-1)!}</tex> <tex>m^{(2n-1)}</tex> || <tex>\sin m</tex> | ||
|} | |} | ||
+ | |||
+ | == См. также == | ||
+ | |||
+ | * [[Производящая функция Дирихле]] | ||
== Примечания == | == Примечания == |
Текущая версия на 19:31, 4 сентября 2022
Определение: |
Производящая функция (англ. generating function) — это формальный степенной ряд вида | , порождающий (производящий) последовательность .
Метод производящих функций был разработан Эйлером в 1750-х годах.
Содержание
Применение
Производящая функция используется для:
- Компактной записи информации о последовательности.
- Нахождения зависимости для последовательности , заданной рекуррентным соотношением. Например, для чисел Фибоначчи.
- Нахождения рекуррентного соотношения для последовательности — вид производящей функции может помочь найти формулу.
- Исследования асимптотического поведения последовательности.
- Доказательства тождеств с последовательностями.
- Решения задачи подсчета объектов в комбинаторике. Например, в доказательстве пентагональной теоремы или в задаче нахождения количества расстановок ладей на доске .
- Вычисления бесконечных сумм.
Примеры производящих функций
Рассмотрим производящие функции для различных комбинаторных последовательностей:
- — производящая функция для разности количества разбиений числа в четное и нечетное число различных слагаемых. Например, коэффициент при равен , потому что существует два разбиения на четное число различных слагаемых и одно на нечетное ( ). Правильность этого легко осознать, если понять, что каждая скобка представляет какое-то слагаемое и мы можем его взять (второе слагаемое — ) или не взять (первое — ). Эта производящая функция используется в комбинаторном доказательстве пентагональной теоремы.
- — производящая функция для последовательности , где — число разбиений числа на слагаемые.
- — производящая функция для последовательности , где — число разбиений на различные слагаемые.
- — производящая функция для последовательности , где — число разбиений на нечётные слагаемые. С помощью метода производящих функций можно доказать, что производящие функции последовательностей равны, соответственно :
Примеры решений задач методом производящих функций
Решение рекуррентных соотношений
Существует целый класс последовательностей, задаваемых рекуррентным соотношением, например, числа Каталана. Метод производящих функций позволяет получить выражение для через номер элемента в последовательности в замкнутом виде, то есть в таком виде, что выражение можно вычислить, предполагая, что достаточно мало.
— числа Фибоначчи или —Пусть последовательность
удовлетворяет некоторому рекуррентному соотношению. Мы хотим получить выражение для (при ) в замкнутом виде. Алгоритм получения замкнутого выражения для чисел , удовлетворяющих рекуррентному соотношению, с помощью производящих функций состоит из 4 шагов:- Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен
- Домножить каждую строчку на в соответствующей степени и просуммировать строчки для всех .
- В полученном уравнении привести все суммы к замкнутому виду. Получить уравнение для производящей функции.
- Выразить в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням .
Для демонстрации универсальности метода рассмотрим довольно произвольное рекуррентное соотношение:
Запишем производящую функцию для этой последовательности и преобразуем правую часть:
Для того, чтобы замкнуть последнюю сумму воспользуемся очень важным приемом, который используется при преобразовании производящих функций. Фактически мы имеем дело с последовательностью (в нашем случае последовательность ). Такая последовательность получается путём дифференцирования функции , производящей для , с последующим умножением результата на :
Тогда замкнем последнее слагаемое следующим образом:
Таким образом, наше последнее слагаемое примет вид:
Это уравнение для производящей функции. Из него выражаем :
Разложим знаменатель на множители и разобьём дробь на сумму простых дробей [1]:
Разложим первое слагаемое в ряд, используя расширенные биномиальные коэффициенты [2]:
Расчет дисперсии геометрического распределения
Метод производящих функций также используется для нахождения математического ожидания и дисперсии различных распределений в теории вероятностей. Например, в геометрическом распределении [3] для нахождения дисперсии нужно найти два мат. ожидания:
которые фактически являются производящими функциями последовательностей и :
.
Тогда:
Пример задачи на нахождение производящей функции
Задача: |
Рассмотрим множество путей на прямой, состоящих из шагов длины | вправо и влево. Найдите производящую функцию для числа таких путей из шагов, начинающихся в и оканчивающихся в .
Заметим, что для того, чтобы закончить путь в число Каталана. Тогда, заметим что . Так как , то справедливо равенство:
, необходимо совершить равное число шагов вправо и влево. Тогда задача сводится к тому, чтобы выбрать позиций для, например, шагов вправо из всего шагов. Тогда ответом будет сумма от нуля до бесконечности по всех . То есть: Рассмотрим , где —Мы знаем, что производящая функция для чисел Каталана равна
. Найдем .
Соответственно, ответом будет производящая функция вида:
Задача: |
Рассмотрим множество путей на прямой, состоящих из шагов длины | вправо и влево. Найдите производящую функцию для числа таких путей из шагов, начинающихся и оканчивающихся в и не заходящих в отрицательную полупрямую.
Заметим, что задача аналогична Правильной скобочной последовательности. Тогда производящей функцией для нашей задачи будет производящая функция для правильной скобочной последовательности, а именно:
Приложения
Примеры простых производящих функций
На последнем шаге приведения производящей функции к замкнутому виду требуется разложить полученные слагаемые в ряд. Для этого можно воспользоваться таблицей основных производящих функций [4].
Все суммы выполняются по переменной
от до . Элементы последовательности нумеруются от .Последовательность | Производящая функция в виде ряда | Производящая функция в замкнутом виде |
( нулей в начале) | ||
(повторяется через ) | ||
См. также
Примечания
Источники информации
- Вайнштейн Ф., Разбиение чисел. Журнал "Квант" № 11, 1988 год
- Производящие функции
- Wikipedia — Generating function
- Нахождение количества разбиений числа на слагаемые. Пентагональная теорема Эйлера
- Graham, Knuth, and Patashnik: Concrete Mathematics