Аналитическая теория чисел

Вывод производящей функции

Как превратить правило построения объектов в формулу для их числа? Если размеры складываются, подсчёт составных объектов приводит к свёртке последовательностей. Производящая функция выбрана именно так, чтобы эта свёртка стала обычным умножением. Благодаря этому рекурсии превращаются в алгебраические уравнения, из решений которых снова можно извлечь исходные коэффициенты.

Слои градуированного множества

Пусть C — множество дискретных объектов, снабжённое отображением степени deg:CZ0. Обозначим через Cn={uCdegu=n} слой степени n, а через an=|Cn| — число объектов в этом слое. Результат подсчёта — не отдельное число, а вся последовательность

a=(a0,a1,a2,)

На примере перестановок градуировку можно увидеть как отображение от объектов к их степеням. Перестановки одного размера переходят в одно и то же число и тем самым образуют слой Cn=Sn.

Перейдите от степени один к двум, затем к трём. До каждого переключения сосчитайте перестановки нужного размера. Различайте число точек в слое и число значений градуировки.

Градуировка перестановок

Степень

Слой размера 1 содержит 1 перестановок.

Объекты и слои одной градуировкиПрообраз числа n состоит из всех перестановок размера n и образует слой градуированного семейства.

Простейшие примеры одной и той же конструкции:

Примеры градуированных множеств
ОбъектыГрадуированное множество CСтепеньСлой CnЧисло an
Двоичные слова{0,1}degw=|w|{0,1}n2n
Перестановкиm0Smdegσ=n для σSnSnn!
Мономы от d переменныхВсе мономы от d переменныхПолная степеньМономы полной степени n(n+d1d1)
Упорядоченные суммы(k1,,kr), где kiSZ>0k1++krПоследовательности с суммой n|Cn|

Индекс здесь несёт математическую информацию: он задаёт степень. Поэтому последовательность хранит не только значения an, но и их положение в градуировке: объекты разных степеней принадлежат разным компонентам.

Сложение степеней порождает рекурсию

Таблица выше иллюстрировала только наличие градуировки. Теперь наложим дополнительное условие, которому не обязано удовлетворять произвольное градуированное множество: объект должен допускать каноническое разложение по последней присоединённой части.

Чтобы получить рекурсию, нужно однозначно обратить последний шаг этой операции. Предположим, что каждый объект положительной степени допускает представление up, где u — объект меньшей степени, а p — одна допустимая часть. Для упорядоченной суммы такой частью служит последнее слагаемое, для слова — последняя буква, для замощения — последняя плитка.

Снабдим множество допустимых частей P градуировкой deg:PZ>0, а Pk={pPdegp=k} — его слой степени k. Обозначим число элементов этого слоя через νk=|Pk|. Потребуем, чтобы операция μ была согласована с градуировкой: если uCnk и pPk, то

deg(up)=(nk)+k=n

Потребуем, чтобы это представление up было единственным. Степень k=degp последней части разбивает Cn на непересекающиеся подмножества. После удаления части остаётся объект из Cnk. Обозначим через Cn,k подмножество объектов, у которых последняя часть имеет степень k:

  1. Фиксируем степень последней части
    Cn,kCnk×Pk
  2. Разбиваем слой на непересекающиеся части
    Cn=k=1nCn,kk=1nCnk×Pk
  3. Результат: Переходим к числу объектов
    an=k=1nνkank,an=|Cn|,νk=|Pk|

Для упорядоченных разложений числа последнее слагаемое канонично, поэтому достаточно одного индекса n. В неупорядоченных разбиениях требуется дополнительное состояние — например, максимальное разрешённое слагаемое, — но рекурсия по-прежнему возникает из разбиения множества объектов на непересекающиеся случаи.

Теперь требуется работать со всей последовательностью a0,a1, как с одним алгебраическим объектом. Такое представление не должно смешивать компоненты разных степеней или терять отдельные коэффициенты. Отсюда возникает первое требование к искомой конструкции.

Требование

Сохранение координат

Представление должно быть инъективным и коэффициентно-линейным. Индексу n соответствует базисный элемент en, а последовательности a — формальная сумма

Φ(a)=n0anen

Сложение индексов определяет базис

Рекурсия из предыдущего раздела имеет вид an=k=0nνkank, если положить ν0=0. Её правая часть зависит только от двух последовательностей и правила сложения индексов. Абстрагируем это правило.

Определение

Свёртка последовательностей

Свёрткой последовательностей a и b называется последовательность c=ab. Её коэффициенты задаются равенством

(ab)n=cn=i+j=naibj(ab)n=cn=i=0naibni

Следовательно, исходная рекурсия записывается как an=(νa)n при n1. Та же операция имеет прямой комбинаторный смысл. Пусть A и B — градуированные множества со слоями Ai,Bj и числами элементов ai,bj. На произведении A×B положим

deg(u,v)=degu+degv

Пара имеет степень n, если её компоненты имеют степени i и j с i+j=n. Поэтому число пар степени n равно i+j=naibj=(ab)n: свёртка считает объекты, составленные из двух независимо выбранных градуированных компонентов.

Односторонние последовательности полагаются равными нулю при отрицательных индексах. Зафиксируем a, а b запишем в обратном порядке. Для вычисления cn верхняя строка сдвигается так, чтобы b0 оказался над an.

Начните с нулевого индекса, затем сдвигайте строку по одной позиции. Перед сдвигом назовите новую пару множителей и пару, которая перестанет участвовать. Объясните, почему развернуть одну строку необходимо.

Переворот и сдвиг

cn=i=0naibni
n
0
bj=2j+1
31
ai=i+1
1234567
коэффициент свёрткиc0=11=1
Свёртка как наложение последовательностейСдвиг выбирает ровно те вертикальные пары aᵢbₙ₋ᵢ, которые входят в коэффициент cₙ.

Область перекрытия содержит ровно пары (ai,bni), входящие в сумму. Изменение n сдвигает верхнюю строку и меняет состав суммы.

Требование

Свёртка переходит в умножение

Представление должно переводить свёртку в умножение.

Φ(ab)=Φ(a)Φ(b)

Пусть δ(n) — последовательность с единственной ненулевой координатой на месте n. Тогда

δ(i)δ(j)=δ(i+j)

Для образов en=Φ(δ(n)) отсюда следует eiej=ei+j и e0=1. Следовательно, en=e1n. Обозначение x=e1 даёт en=xn, а коэффициентная линейность определяет всё представление:

A(x)=Φ(a)=n0anxn

Здесь x обозначает образ δ(1), а не числовой аргумент. Для операций с коэффициентами сходимость ряда не требуется.

Коэффициент произведения считает разложения

Возьмём a=(1,2,1) и b=(1,1,2). Для суммарной степени 3 два ненулевых вклада соответствуют разложениям 3=1+2 и 3=2+1. Эти вклады равны a1b2=4 и a2b1=1, поэтому c3=5.

Для нулевой степени найдите единственную допустимую пару. Затем выберите степень три и перечислите допустимые разложения с учётом степеней обоих многочленов. Сравните число пар с суммой их весов: это одна и та же величина лишь в специальном случае.

Коэффициент произведения

Итоговая степень
A(x)=12xx2
B(x)=1x2x2
1
·
1
=
1
коэффициент при x0[x0]A(x)B(x)=1=1
Комбинаторный смысл свёрткиДля выбранного n все пары индексов i+j=n дают вклады, сумма которых является коэффициентом произведения.

При умножении рядов равенство xixj=xi+j собирает в коэффициенте при xn все пары мономов с i+j=n. Следовательно,

[xn]A(x)B(x)=i=0naibni=(ab)n

Тем самым Φ(ab)=Φ(a)Φ(b). Базис 1,x,x2, определяется аддитивностью индексов, а не выбирается независимо от свёртки.

Теперь оба исходных требования выполнены: коэффициенты восстанавливаются по правилу [xn]A(x)=an, а произведение рядов соответствует свёртке последовательностей. Полученное представление имеет стандартное название.

Определение

Обыкновенная производящая функция

Обыкновенной производящей функцией (ordinary generating function, OGF) последовательности a0,a1,a2, называется формальный степенной ряд

A(x)=a0+a1x+a2x2+=n0anxn

Если коэффициенты лежат в кольце R, такие ряды образуют кольцо R[[x]]. Равенство и операции в нём определяются коэффициентно; числовая подстановка вместо x и аналитическая сходимость не используются.

Оператор [xn] извлекает n-ю координату: [xn]A(x)=an. Поэтому последовательность и её производящая функция взаимно однозначно определяют друг друга.

A(x)=23x+5x4+
[x4]A(x)=5,[x2]A(x)=0

Рекурсия как свёртка с ядром

Вернёмся к конструкции из раздела 2. Пусть C состоит из конечных упорядоченных сумм слагаемых 1 и 2, а степень равна сумме слагаемых. Множество допустимых частей P{1,2} имеет по одной части каждой из степеней 1 и 2, поэтому

ν1=ν2=1,νk=0(k{1,2})

Удаление последнего слагаемого даёт рекурсию an=an1+an2. При соглашении am=0 для m<0 она справедлива для n1, а a0=1 соответствует пустой сумме. Тем самым a0=a1=1, и an является сдвинутой последовательностью Фибоначчи.

Последовательность ν, считающая допустимые части, уже является ядром свёртки; его не требуется угадывать. Обозначим h=ν. Чтобы согласовать индексы, запишем правую часть рекурсии в порядке слагаемых (ha)n=k=0nhkank:

an1+an2=0an+1an1+1an2

Коэффициент перед ank равен hk=νk, поэтому

hk={1,если k{1,2}0,иначе
h=(0,1,1,0,0,)

Поэтому для n1

an=(ha)n=k=0nhkank

В общем случае рекурсии an=γ1an1++γdand соответствует ядро h=(0,γ1,,γd,0,0,): порядок рекурсии определяет число его ненулевых коэффициентов.

При первом доступном индексе вычислите следующий член по двум предыдущим. Сдвиньте ядро на один шаг и повторите вычисление. Какие коэффициенты остаются прежними и какие данные заменяются?

Рекурсия как свёртка

an=(ha)n=i=0nhniai
n
2
hni
0110
ai
11235813
сумма активных парa2=1+1=2
Рекурсия как неподвижное ядроОдно и то же линейное ядро при каждом сдвиге связывает новый член с предыдущими.

Остаётся включить начальные условия. При n=0 свёртка равна нулю, а a0=1. При n=1 она уже даёт требуемое значение:

(ha)0=0(ha)1=h1a0=1=a1

Поэтому единственная поправка требуется при нулевом индексе, и вся последовательность удовлетворяет уравнению

a=δ(0)+ha

От свёртки к производящей функции

Производящая функция ядра равна H(x)=Φ(h)=x+x2, а Φ(δ(0))=1. Мультипликативность Φ переводит свёрточное уравнение в алгебраическое:

  1. Переводим свёртку в произведение
    A(x)=1+H(x)A(x)
  2. Результат: Подставляем функцию ядра
    A(x)=1+(x+x2)A(x)

Соберём слагаемые с A(x) в левой части и разделим на получившийся множитель:

  1. Собираем слагаемые с производящей функцией
    (1xx2)A(x)=1
  2. Результат: Делим на обратимый множитель
    A(x)=11xx2

Переход к последней строке корректен в кольце формальных рядов: ряд 1xx2 имеет обратный, поскольку его постоянный коэффициент равен единице и потому обратим в R.

С этого момента исходная задача принимает точную алгебраическую форму: нужно разложить полученную рациональную функцию в формальный степенной ряд при x=0,

A(x)=P(x)Q(x)=n0anxn

Коэффициенты этого разложения и есть искомая последовательность. Рациональную функцию можно разложить двумя способами: последовательно находить коэффициенты из равенства Q(x)A(x)=P(x) или преобразовать дробь в сумму базисных функций с уже известными коэффициентами.

Сначала применим оба способа к примеру Фибоначчи, а затем сформулируем их для произвольных многочленов P и Q.

Читаем коэффициенты последовательно

Сдвиг ряда на k позиций выражается умножением на xk:

[xn](xkA(x))={anknk0n<k

В данном случае достаточно выписать три сдвинутых ряда:

A(x)=a0+a1x+a2x2+a3x3+
xA(x)=a0x+a1x2+a2x3+
x2A(x)=a0x2+a1x3+

Теперь вычтем вторую и третью строки из первой и соберём одинаковые степени x:

(1xx2)A(x)=a0+(a1a0)x+D(x)
D(x)=n2dnxn
dn=anan1an2

Правая часть исходного равенства — постоянный ряд 1=1+0x+0x2+. Два формальных ряда равны тогда и только тогда, когда совпадают коэффициенты при каждой степени. Поэтому

{a0=1a1a0=0anan1an2=0,n2

Таким образом, сравнение коэффициентов возвращает начальные условия и исходную рекурсию.

Получаем явную формулу

Чтобы выразить коэффициент непосредственно через n, разложим знаменатель. Пусть φ=(1+5)/2 и ψ=(15)/2. Тогда

  1. Факторизуем знаменатель
    1xx2=(1φx)(1ψx)
  2. Результат: Разлагаем на простейшие дроби
    A(x)=φ511φxψ511ψx

В кольце формальных рядов геометрическое разложение имеет вид (1λx)1=n0λnxn. Следовательно,

A(x)=n0φn+1ψn+15xn

Коэффициент при xn теперь читается непосредственно:

an=[xn]A(x)=φn+1ψn+15

При нумерации a0=a1=1 это число Фибоначчи Fn+1.

Способ 1. Последовательное извлечение коэффициентов

В примере Фибоначчи рациональная функция допускала два чтения: сравнение коэффициентов восстанавливало рекурсию, а разложение знаменателя давало явную формулу. Теперь отделим эти два метода от конкретного примера и рассмотрим произвольную рациональную производящую функцию.

Пусть A(x)=P(x)/Q(x), где Q(0)0. Искомый степенной ряд — не результат формального «раскрытия дроби», а единственный ряд A(x)=n0anxn, удовлетворяющий уравнению Q(x)A(x)=P(x).

Запишем Q(x)=k=0rqkxk и P(x)=n0pnxn, полагая pn=0 выше степени многочлена P. Сравнение коэффициентов в равенстве Q(x)A(x)=P(x) даёт одну и ту же трёхступенчатую процедуру для каждой степени:

  1. Раскрываем коэффициент произведения
    [xn](Q(x)A(x))=q0an+k=1rqkank
  2. Приравниваем коэффициенту правой части
    q0an+k=1rqkank=pn
  3. Результат: Выражаем неизвестный коэффициент
    an=1q0(pnk=1rqkank)

Здесь ak=0 при k<0. При n=0 формула определяет a0, при n=1a1, и так далее. Поэтому именно условие q0=Q(0)0 позволяет на каждом шаге однозначно найти следующий коэффициент. Так устроено деление формальных степенных рядов: чтобы узнать коэффициент степени n, не требуется знать весь бесконечный ряд — достаточно уже найденных коэффициентов меньших степеней.

От рациональной функции к явной формуле

Исходная задача — разложить рациональную функцию A(x)=P(x)/Q(x) в формальный степенной ряд при x=0:

P(x)Q(x)=n0anxn

Предыдущий способ последовательно находит коэффициенты этого ряда из равенства Q(x)A(x)=P(x). Теперь получим явную формулу для an=[xn]A(x), в которой зависимость от n видна непосредственно.

Идея: перейти к функциям с известными рядами

Извлечение коэффициента линейно. Поэтому вместо прямого разложения одной сложной дроби достаточно представить её как конечную линейную комбинацию функций, степенные ряды которых уже известны. Для этого введём семейство

Определение

Семейство функций Gλ,r

Gλ,r(x):=1(1λx)r,r1

При r=1 это геометрический ряд: Gλ,1(x)=n0λnxn. При произвольном r функция Gλ,r(x)=Gλ,1(x)r остаётся произведением известных рядов; её коэффициенты явно вычислим ниже.

Искомое представление имеет форму

A(x)=H(x)+k=1NckGμk,rk(x)

Здесь H(x) — многочлен, N — конечное число слагаемых, ck — их коэффициенты, а параметры μk,rk будут определены множителями знаменателя Q. Дальнейшие шаги строят именно это представление.

1. Отделяем уже готовую часть

Многочлен H(x) сам является конечным степенным рядом: его коэффициенты уже видны. Если degPdegQ, находим эту часть обычным делением P на Q. Оно единственным образом определяет частное H(x) и остаток R(x):

  1. Делим числитель на знаменатель
    P(x)=H(x)Q(x)+R(x),degR<degQ
  2. Результат: Отделяем многочленную часть
    A(x)=H(x)+R(x)Q(x)

Если degP<degQ, деление не требуется: полагаем H(x)=0 и R(x)=P(x). После отделения H остаётся дробь R/Q со свойством degR<degQ. Такая дробь называется правильной.

2. Знаменатель определяет базис

Поскольку Q(0)0, разделим P и Q на Q(0) и будем считать, что Q(0)=1. Пусть qd — старший коэффициент Q, ξ1,,ξs — его различные корни, а m1,,ms — их кратности. Ни один корень не равен нулю.

  1. Факторизуем знаменатель по корням
    Q(x)=qdj=1s(xξj)mj
  2. Выносим множитель из каждого корня
    xξj=ξj(1xξj)
  3. Собираем постоянный множитель
    qdj=1s(ξj)mj=Q(0)=1
  4. Результат: Используем единичную нормировку
    Q(x)=j=1s(1xξj)mj

Именно на втором шаге возникает деление на корень: после вынесения постоянного множителя ξj переменная внутри скобки принимает вид x/ξj.

Введём обратные к корням величины λj=ξj1. Именно они удобны для степенных рядов: множитель принимает вид 1λjx, а обратная к нему функция порождает геометрическую прогрессию с коэффициентами λjn. Поэтому

Q(x)=j=1s(1λjx)mj

Теперь знаменатель непосредственно указывает, какие функции Gλj,r должны войти в искомое представление: для множителя кратности mj нужны значения r=1,,mj.

Теорема о разложении на простейшие дроби утверждает, что этих функций достаточно: правильная дробь единственным образом представляется в виде

R(x)Q(x)=j=1sr=1mjρj,rGλj,r(x)

Таким образом, искомый базис — это семейство

GQ={Gλj,r:1js,1rmj}

Числа ρj,r — координатами дроби R/Q в этом базисе.

3. Находим координаты ρⱼ,ᵣ

Числа ρj,r не извлекаются из степенного ряда. Это неизвестные коэффициенты в разложении дроби по базису GQ. Чтобы найти их, умножим разложение на Q(x). Знаменатели исчезнут, и получится тождество многочленов

  1. Записываем разложение по базису
    R(x)Q(x)=j=1sr=1mjρj,r1(1λjx)r
  2. Результат: Умножаем на общий знаменатель
    R(x)=j=1sr=1mjρj,rQ(x)(1λjx)r

Каждое выражение Q(x)/(1λjx)r теперь является многочленом. Сравнение коэффициентов при 1,x,,xdegQ1 даёт линейную систему для всех ρj,r. Единственность разложения на простейшие дроби означает, что эта система имеет ровно одно решение.

Пример: два простых множителя

Пусть αβ и Q(x)=(1αx)(1βx). Числитель правильной дроби имеет степень меньше двух, поэтому записывается как R(x)=u+vx. Ищем для него новые координаты C,D в базисе Gα,1,Gβ,1.

  1. Разлагаем по двум базисным дробям
    u+vx(1αx)(1βx)=CGα,1(x)+DGβ,1(x)
  2. Получаем числитель
    (C+D)(βC+αD)x
  3. Результат: Сравниваем коэффициенты
    {u=C+Dv=(βC+αD)

Определитель этой системы равен βα0, поэтому для каждого линейного числителя существует единственная пара C,D. Разложение на простейшие дроби здесь буквально является сменой координат в двумерном пространстве числителей.

Если множитель 1λx имеет кратность m, нужны все функции Gλ,1,,Gλ,m. После приведения к общему знаменателю их числители равны (1λx)m1,,1 и образуют базис многочленов степени меньше m.

Для простого множителя соответствующую координату можно получить без решения всей системы: умножить дробь на 1λjx и подставить корень x=1/λj. Все остальные слагаемые исчезнут:

ρj=(1λjx)R(x)Q(x)|x=1/λj

При кратности mj сначала выделяется функция Fj(x)=(1λjx)mjR(x)/Q(x). Её значение в корне даёт ρj,mj, первая производная — следующую координату, и так далее. В общем виде, для 0k<mj,

ρj,mjk=Fj(k)(1/λj)(λj)kk!

Итак, координаты ρj,r находятся алгебраически. Теперь остаётся другая задача: понять, какой коэффициент при xn вносит каждая базисная функция.

4. Извлекаем коэффициенты базисных функций

Для r=1 коэффициенты уже известны из геометрического ряда: [xn]Gλ,1(x)=λn. Этого достаточно для простого множителя 1λx. Но множитель кратности m>1 добавляет в базис функции Gλ,2,,Gλ,m, и их коэффициенты ещё предстоит найти.

Координаты ρj,r пока оставим символическими и решим одну универсальную задачу: вычислим [xn]Gλ,r(x) для произвольной кратности r.

Равенство Gλ,r=Gλ,1r представляет эту функцию как произведение r одинаковых геометрических рядов. По правилу умножения рядов коэффициент при xn собирается по всем решениям n1++nr=n в неотрицательных целых числах. Каждое решение даёт один и тот же множитель λn, а число решений равно (n+r1r1): это стандартная формула для числа слабых композиций n на r частей. Поэтому

Gλ,r(x)=n0(n+r1r1)λnxn

Начните с простого множителя и последовательно увеличивайте кратность. До переключения предскажите степень полинома перед экспонентой. Проверьте ответ по общей формуле, а не только по нескольким первым членам.

Что меняет кратность

Кратность множителя
[xn](1λx)1=1λn
степень по nr1=0
Кратность корня задаёт форму коэффициентовПростой корень даёт экспоненту, а каждое повторение множителя повышает степень полинома при λⁿ.

Теперь подставим найденный коэффициент в разложение A(x):

  1. Подставляем базисное разложение
    A(x)=H(x)+j=1sr=1mjρj,rGλj,r(x)
  2. Результат: Извлекаем коэффициент
    an=[xn]H(x)+j=1sr=1mjρj,r(n+r1r1)λjn

При фиксированном j все слагаемые содержат одну экспоненту λjn. Соберём их полиномиальные множители:

πj(n):=r=1mjρj,r(n+r1r1),degπj<mj

Поскольку H — многочлен, [xn]H(x)=0 для всех достаточно больших n. Поэтому остаётся сумма по различным множителям знаменателя.

Теорема

Структура коэффициентов рациональной функции

Для всех достаточно больших n

an=j=1sπj(n)λjndegπj<mj

Простой множитель 1λjx даёт чистую экспоненту ρjλjn. Множитель кратности mj добавляет перед той же экспонентой полином степени не выше mj1.