О разложении рациональной функции в ряд
Рациональная функция — это функция вида
где P и Q — полиномы. Например,
При работе с производящими функциями, полином лучше выписывать, начиная от младших степеней z. Замечено, что ученики часто ошибаются в дальнейших вычислениях, если поступают наоборот. Врочем, это не важно, если Вы отдаёте себе отчет в том, что делаете и уверены, что не запутаетесь.
Рациональные производящие функции получаются при решении линейных рекуррентных соотношений. По этой причине актуальной является задача о разложении рациональной функции в ряд по степеням переменной z.
Чтобы разложить дробь в ряд, необходимо разбить её (если это возможно) на сумму «более простых» дробей: таких дробей, разложение которых мы можем посмотреть в таблице или вывести из каких-то элементарных соображений. Такая процедура назвается разбиением на элементарные дроби.
Вернёмся к нашему примеру. Дробь G(z) можно разбить на сумму дробей (пока без пояснений):
Эти дроби, в свою очередь, лекго разложить в ряд, пользуясь таблицей производящих функций и формулами преобразования:
То есть
Или, что то же самое,
Теперь ответим на самые главные вопросы: когда возможно разложить дробь на более простые дроби и как это сделать?
Общие размышления
Давайте начнём размышлять теоретически и заведём себя этими размышлениями в тупик. Это сделать необходимо, чтобы стала понятной вся глубина рассматриваемой проблемы.
Во-первых, для определённости будем считать, что deg P(z) < deg Q(z), а иначе мы могли бы записать
где deg P0(z) < deg Q(z), и далее работать с только что полученной дробью.
Во-вторых, отметим, что разбивать дробь вида
на сумму дробей с более простым знаменателем нет необходимости (да и не получится), так как она сама по себе легко раскладывается в ряд путем несложных преобразований. (см. «Таблица производящих функций» и «Преобразование производящих функций»):
а дальнейшие преобразования ряда зависят уже от исходной задачи.
Если знаменатель Q(z) имеет более сложную структуру, мы должны каким-то образом разбить его на множители. Конечно, мы можем это сделать, например, так:
вспомнив, что полином Q(z) имеет deg Q(z) корней (пусть даже и комплексных). Эти корни у нас обозначены z1, z2, ..., zs. При этом, k1+k2+⋅⋅⋅+ks=deg Q. После разбиения знаменателя на множители, получаем
где Pj(z) — полином, причем deg Pj(z)<kj. Каждая из дробей под знаком суммы раскладывается в ряд без особых усилий — с помощью той же таблицы производящих функций:
и далее как было показано выше.
Осталось ответить на главный вопрос: как получить полиномы Pj(z)?
Правило разложения
на элементарные дроби
Вернёмся к примеру, с которого начали:
Что дальше? Дальше мы знаем, что дробь должна разложиться на сумму двух дробей, причем у первой в числителе будет полином степени 0, а у второй — 1. Это означает, что разложение будет иметь вид
где A, B и C — некоторые константы. Для того, чтобы найти эти константы, нужно снова сложить дроби:
Из последнего равенства, если сравнить коэффициенты при соответствующих степенях в числителе, становится очевидным, что
Решаем систему из трёх уравнений с тремя неизвестными: A=1, B=−1, C=7.
Приведённый метод разложения называется Метод неопределённых коэффициентов.
Общий алгоритм:
- Привести дробь P(z)/Q(z) к такому виду, чтобы степень числителя была меньше степени знаменателя.
- Отыскать корни уравнения Q(z)=0 и разбить знаменатель на множители вида (zs−z)ks (здесь zs — корень кратности ks).
- Записать сумму дробей, знаменатили которых будут иметь вид (zs−z)ks, а числители — полиномы с неопределёнными коэффициентами, имеющие степень ks−1.
- Сложить выписанные дроби и сгруппировать слагаемые в числителе по степеням z.
- Прировнять полученные выражения с неопределёнными коэффициентами к соответсвующим коэффициентам полинома P(z), составив, таким образом, систему линейных уравнений.
- Решить систему и получить значения неопределённых коэффициентов.
Пример посложнее
Рассмотрим пример посложнее. Требуется разложить в ряд рациональную функцию
Разбив знаменатель на множители, получаем:
Теперь нужно снова «собрать» выражение, приведя все дроби к общему знаменателю:
Откуда легко получается система линейных уравнений:
Решение этой системы [ проверьте ]: A=4, B=3, C=−1, D=5. Это означает, что
Теперь каждую дробь можно разложить в ряд, пользуясь таблицей:
То есть
и
Пример ещё посложнее
Этот пример будет продемонстрирован без слов, так как поиск решения аналогичен предыдущему случаю:
A=16, B=0, C=0, D=1.
Тупик
Красота голой теории заключается в том, что всё кажется простым и понятным. Теперь рассмотрим другой пример, против которого описанная только что теория совершенно бессильна.
Такая функция появилась в одном из моих исследований, и работать с ней дальше обычными методами невозможно. Эта производящая функция генирирует последовательность (an), где an — количество гамильтоновых циклов на прямоугольной решётке размером 6×n. Эту последовательность Вы можете отыскать в энциклопедии целочисленных последовательностей под номером A145401.
Проблема в том, что знаменатель этой функции не имеет рациональных корней. Поэтому разбить функцию на более простые не получится. Вообще говоря, 14-я степень полинома не мешает исследовать функцию дальше другими способами (выходящими за рамки данного раздела), однако, например, есть производящая функция для аналогичной задачи для решётки 10×n, степень знаменателя в ней равна 346. На сегодняшний день открытым остаётся вопрос: а что с ней делать?
Таким образом, теория говорит, что всякую рациональную функцию можно разложить в ряд, нужно только отыскать корни знаменателя, но практика показывает, что не всё так просто. Более того, в задачах, не являющихся упражнениями из учебника, этого сделать почти никогда нельзя. Даже в наших примерах числа были специально подобраны так, чтобы вычисления можно было проводить в уме, а в реальности такие задачи почти никогда не встречаются.