Теорема о связи между рациональностью производящей функции и линейной рекуррентностью задаваемой ей последовательности — различия между версиями
(→Теорема о связи этих понятий) |
м (rollbackEdits.php mass rollback) |
||
(не показаны 3 промежуточные версии 3 участников) | |||
Строка 36: | Строка 36: | ||
{{Теорема | {{Теорема | ||
|id=th_main. | |id=th_main. | ||
− | |statement=Последовательность <tex>a_0, a_1, \ldots, a_n, \ldots </tex> является линейной рекуррентной последовательностью с <tex>k</tex> первыми заданными членами <tex>\Leftrightarrow</tex> её производящая функция <tex>A(t)</tex> является дробно-рациональной, причём представимой в виде <tex>A(t) = \dfrac{P(t)}{Q(t)}</tex>, <tex> | + | |statement=Последовательность <tex>a_0, a_1, \ldots, a_n, \ldots </tex> является линейной рекуррентной последовательностью с <tex>k</tex> первыми заданными членами, определяемыми коэффициентами <tex>c_1, c_2, \ldots, c_k</tex> <tex>\Leftrightarrow</tex> её производящая функция <tex>A(t)</tex> является дробно-рациональной, причём представимой в виде <tex>A(t) = \dfrac{P(t)}{Q(t)}</tex>, где <tex>Q(t) = 1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k</tex>, <tex>deg(P) < k</tex>. |
|proof= | |proof= | ||
− | <tex>\ | + | <tex>\Rightarrow</tex> |
+ | |||
+ | Пусть <tex>c_1, c_2, \ldots, c_k</tex> {{---}} коэффициенты, задающие линейную рекуррентную последовательность <tex>a_0, a_1, \ldots, a_n, \ldots </tex>, то есть первые <tex>k-1</tex> членов заданы, а для следующих справедливо соотношение <tex>a_n = \sum\limits_{i = 1}^k c_i \cdot a_{n - i}</tex>. | ||
+ | |||
+ | Напишем друг под другом несколько производящих функций и соответствующих им формальных степенных рядов: | ||
− | + | :<tex>A(t) = a_0 + a_1 \cdot t + a_2 \cdot t^2 + \ldots + a_k \cdot t^k + \ldots + a_n \cdot t^n + \ldots</tex> | |
+ | :<tex>-c_1 \cdot t \cdot A(t) = 0 - c_1 \cdot a_0 \cdot t - c_1 \cdot a_1 \cdot t^2 - \ldots - c_1 \cdot a_{k - 1} \cdot t^k - \ldots - c_1 \cdot a_{n - 1} \cdot t^n - \ldots</tex> | ||
+ | :<tex>-c_2 \cdot t^2 \cdot A(t) = 0 + 0 - c_2 \cdot a_0 \cdot t^2 - \ldots - c_2 \cdot a_{k - 2} \cdot t^k - \ldots - c_2 \cdot a_{n - 2} \cdot t^n - \ldots</tex> | ||
+ | :<tex>\cdots</tex> | ||
+ | :<tex>-c_k \cdot t^k \cdot A(t) = 0 + 0 + 0 + \ldots +0-c_k \cdot a_0 \cdot t^k - \ldots - c_k \cdot a_{n - k} \cdot t^n + \ldots</tex> | ||
− | + | Сложим все равенства и получим | |
− | + | :<tex>A(t) \cdot (1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k) = a_0 + (a_1 - c_1 \cdot a_0) \cdot t + (a_2 - c_1 \cdot a_1 - c_2 \cdot a_0) \cdot t^2 + \ldots + \\ + (a_{k - 1} - \sum\limits_{i = 1}^{k - 1} c_i \cdot a_{k - 1 - i}) \cdot t^{k - 1} + (a_k - \sum\limits_{i = 1}^k c_i \cdot a_{k - i}) \cdot t^k + \ldots + (a_n - \sum\limits_{i = 1}^k c_i \cdot a_{n - i}) \cdot t^n + \ldots</tex> | |
− | + | Для всех <tex>n \geqslant k</tex> выполняется равенство <tex>a_n = \sum\limits_{i = 1}^k c_i \cdot a_{n - i}</tex>, поэтому в правой части все коэффициенты при степенях, начиная с <tex>k</tex>, обнулятся, а равенство будет выглядеть следующим образом: | |
− | + | :<tex>A(t) \cdot (1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k) = a_0 + (a_1 - c_1 \cdot a_0) \cdot t + (a_2 - c_1 \cdot a_1 - c_2 \cdot a_0) \cdot t^2 + \ldots + (a_{k - 1} - \sum\limits_{i = 1}^{k - 1} c_i \cdot a_{k - 1 - i}) \cdot t^{k - 1}</tex>. | |
− | + | Заметим, что второй множитель в левой части равен в точности <tex>Q(t)</tex>, а степень правой части не превосходит <tex>k-1</tex>. Получили требуемое построение. | |
− | <tex>\ | + | '''Замечание.''' Многочлен <tex>P(t)</tex> можно найти по формуле <tex>A(t) \cdot Q(t)</tex> как числитель получившейся дроби. К результату можно применить взятие его по модулю <tex>t^k</tex>. Это действие не испортит многочлен, так как его степень строго меньше <tex>k</tex>. При этом мы сократим число операций при вычислении <tex>P(t)</tex>, поскольку достаточно найти только <tex>k</tex> первых членов результирующего ряда, а для этого можно обойтись только первыми <tex>k</tex> слагаемыми степенных рядов, соответствующих производящей функции <tex>A(t)</tex> и столькими же для <tex>Q(t)</tex>. |
+ | <!-------Для того чтобы сократить число операций, все действия могут быть выполнены по модулю <tex>t^k</tex>.--------> | ||
− | + | Итак, <tex>P(t) = A(t) \cdot Q(t) \mathrm{\ mod\ } t^k</tex>. | |
+ | <!----Значит, многочлены <tex>Q(t)</tex> и <tex>P(t)</tex> всегда могут быть найдены. Более того, многочлен в знаменателе после нашего построения всегда принимает вид <tex>Q(t)=1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k</tex-----> | ||
− | <tex> | + | <tex>\Leftarrow</tex> |
− | <tex> | + | Пусть <tex>A(t) = \dfrac{P(t)}{Q(t)}</tex>, <tex>Q(t) = 1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k</tex>, <tex> deg(P) < k</tex>. <!--------<tex> deg(Q) = k</tex>(да, я подумаю, как красиво исправить <tex> deg(Q) = k</tex> на <tex>Q(t) = 1 - c_1 \cdot t - c_2 \cdot t^2 - \ldots - c_k \cdot t^k</tex>. просто страшно сносить дальнейшие рассуждения, где используются <tex>q_i</tex> :( ... либо же буду рада любым идеям :3).-----> |
− | <tex> | + | Перепишем первое равенство, выразив <tex>P(t)</tex> через <tex>A(t)</tex> и <tex>Q(t)</tex>: <tex>P(t) = A(t) \cdot Q(t)</tex>. |
− | <tex>\ | + | Так как <tex>deg(P) < k</tex>, выполнено <tex>p_n = 0</tex> для любого <tex>n \geqslant k </tex>. Расписывая <tex>p_n</tex> по определению [[Арифметические действия с формальными степенными рядами#def_mul|произведения степенных рядов]], получаем <tex>p_n = \sum\limits_{i = 0}^n a_{n-i} \cdot q_{i} = 0</tex>. |
− | <tex> | + | Разобьём полученную сумму на две: <tex>p_n = \sum\limits_{i = 0}^{k} a_{n-i}\cdot q_{i} + \sum\limits_{i = k+1}^n a_{n-i}\cdot q_{i}</tex>. Так как <tex> Q(t)</tex> известно, можем определить, чему равны эти суммы. Для первой выполняются равенства: |
− | + | :<tex> q_0 = 1</tex>, | |
+ | :<tex> q_i = -c_i</tex> для всех <tex> i</tex> за исключением нуля. | ||
− | <tex> | + | Вторая же компонента равна нулю, поскольку <tex>deg(Q) = k</tex>. Тогда <tex>p_n = a_n + \sum\limits_{i = 1}^k a_{n-i} \cdot (-c_{i}) = a_n - \sum\limits_{i = 1}^k a_{n-i} \cdot c_{i} = 0</tex>. |
− | + | Развернём выражение для <tex>p_n</tex>: | |
− | + | :<tex> a_n - \sum\limits_{i = 1}^k a_{n-i} \cdot c_{i} = a_n - a_{n-1} \cdot c_1 - \ldots - a_{n-k} \cdot c_k = 0</tex>. | |
− | + | Перенесём все слагаемые, кроме <tex>a_n</tex>, вправо: | |
− | + | :<tex> a_n = a_{n-1} \cdot c_1 + a_{n-2} \cdot c_2 + \ldots + a_{n-k} \cdot c_k</tex>. | |
− | + | Видим, что <tex>a_n</tex> {{---}} член линейной рекуррентной последовательности, заданной коэффициентами <tex>c_1, c_2, \ldots, c_k</tex>, причём это выполнено для всех <tex>n \geqslant k </tex>, так как индекс <tex>n</tex>, удовлетворяющий данному условию, выбирался произвольно. | |
}} | }} | ||
== Примеры применения теоремы == | == Примеры применения теоремы == | ||
+ | === Вычисление производящей функции последовательности <tex>a_0 = 1, a_n = k \cdot a_{n - 1}</tex> === | ||
+ | Вычислим производящую функцию последовательности <tex>a_0 = 1, a_n = k \cdot a_{n - 1}</tex> | ||
+ | *: Так как последовательность является линейно рекуррентной, её производящая функция, согласно теореме, имеет вид <tex>F(t) = \dfrac{P(t)}{Q(t)}</tex>, где <tex>Q(t) = 1 - k \cdot t</tex> (так как <tex>c_1 = k</tex>), а <tex>deg(P) < 1</tex>. | ||
+ | *: Будем искать производящую функцию в виде <tex>F(t) = \dfrac{C}{1 - k \cdot t}, C \in \mathbb{R}</tex> | ||
+ | *: Пусть <tex>F(t) = a_0 + a_1 \cdot t + a_2 \cdot t^2 + \ldots + a_n \cdot t^n + \ldots </tex>, тогда <tex>a_0 + a_1 \cdot t + a_2 \cdot t^2 + \ldots + a_n \cdot t^n + \ldots = \dfrac{C}{1 - k \cdot t}</tex>, следовательно <tex>(a_0 + a_1 \cdot t + a_2 \cdot t^2 + \ldots a_n \cdot t^n + \ldots) \cdot (1 - k \cdot t) = C</tex> | ||
+ | *: Пользуясь правилом перемножения формальных степенных рядов, получаем | ||
+ | *: <tex> C = a_0 \cdot 1 = 1 \cdot 1 = 1</tex> | ||
+ | *: Следовательно, <tex> F(t) = \dfrac{1}{1 - k \cdot t}</tex> | ||
+ | *: Таким образом, <tex> 1 + k \cdot t + (k \cdot t)^2 + \ldots + (k \cdot t)^n + \ldots = \sum\limits_{n = 0}^{\infty}(k \cdot t)^n = \dfrac{1}{1 - k \cdot t}</tex> | ||
+ | *: Частным случаем этой формулы являются соотношения <tex>1 + t + t^2 + \ldots t^n + \cdots = \sum\limits_{n = 0}^{\infty}t^n =\dfrac{1}{1 - t}</tex> и <tex>1 - t + t^2 + \ldots (-1)^n \cdot t^n + \cdots = \sum\limits_{n = 0}^{\infty}(-1)^n \cdot t^n = \dfrac{1}{1 + t}</tex> | ||
+ | |||
+ | === Представление в виде отношения многочленов производящей функции для последовательности чисел Фибоначчи === | ||
+ | |||
+ | Введём обозначения: | ||
+ | |||
+ | :<tex>F(t)</tex> {{---}} производящая функция для чисел Фибоначчи, | ||
+ | :<tex>f_n = [t^n]F(t)</tex>. | ||
+ | |||
+ | Последовательность задаётся следующим образом: | ||
+ | |||
+ | :<tex>f_0 = f_1 = 1</tex>, | ||
+ | :<tex>f_n = f_{n-1} + f_{n-2},\ n \geq 2</tex>. | ||
+ | |||
+ | Здесь <tex>k=2</tex> и <tex>c_1 = c_2 = 1</tex>, следовательно <tex>Q(t) = 1 - t - t^2</tex>. | ||
+ | |||
+ | К числителю применим формулу <tex>P(t) = F(t) \cdot Q(t) \mathrm{\ mod\ } t^2</tex>. Чтобы получить ответ, требуется всего лишь найти <tex>p_0</tex> и <tex>p_1</tex>. | ||
+ | |||
+ | :<tex>p_0 = f_0 \cdot q_0 = 1 \cdot 1 = 1</tex>, | ||
+ | :<tex>p_1 = f_0 \cdot q_1 + f_1 \cdot q_0 = 1 \cdot (-1) + 1 \cdot 1 = 0</tex>. | ||
+ | |||
+ | Таким образом, <tex>F(t) = \dfrac{1}{1 - t - t^2}</tex>. | ||
+ | === Вычисление коэффициентов ряда <tex>\dfrac{1}{(1-t)^2}</tex> с помощью теоремы о связи рекуррентности и рациональности === | ||
+ | <!---Известно, что <tex>\dfrac{1}{(1-t)^2} = \sum\limits_{n=0}^{\infty}{(n+1)\cdot t^n}</tex>.--->Найдём коэффициенты ряда <tex>\dfrac{1}{(1-t)^2}</tex> через построение рекуррентного соотношения. | ||
+ | |||
+ | Имеем | ||
+ | :<tex>P(t)=1</tex>, | ||
+ | :<tex>Q(t)=(1-t)^2 = 1 - 2t + t^2</tex>. | ||
+ | Второе равенство позволяет найти <tex>k</tex> и коэффициенты <tex>c_1, c_2 \ldots c_k</tex>. В нашем примере <tex>k=2</tex>, <tex>c_1=2</tex>, <tex>c_2=-1</tex>. | ||
+ | |||
+ | Зная, что <tex>P(t)=A(t)\cdot Q(t) \mathrm{\ mod\ }t^2</tex>, найдём первые два коэффициента ряда, соответствующего функции <tex>A(t)</tex>. Подставим в равенство известные значения: | ||
+ | :<tex>1 = (a_0 + a_1t)\cdot(1 - 2t)</tex>. Отсюда <tex>a_0=1</tex>, <tex>a_1=2</tex>. | ||
+ | |||
+ | Итак, коэффициенты <tex>A(t)</tex> задаются соотношением | ||
+ | :<tex>a_0=1</tex>, <tex>a_1=2</tex>, | ||
+ | :<tex>a_n=2\cdot a_{n-1} - a_{n-2},\ n\geqslant 2</tex>. | ||
+ | |||
+ | Известно, что <tex>\dfrac{1}{(1-t)^2} = \sum\limits_{n=0}^{\infty}{(n+1)\cdot t^n}</tex>. Такой результат можно получить, например, продифференцировав ряд функции <tex>\dfrac{1}{1-t}</tex>. Проверим, что нахождение рекуррентного соотношения для исходной дроби даёт такой же результат, то есть для всех <tex>n</tex> выполняется <tex>a_{n}=n+1</tex>. | ||
+ | * Для начальных значений равенства выполнены: <tex>a_0=1=0+1</tex>, <tex>a_1=2=1+1</tex>; | ||
+ | <!------*: Чтобы узнать, работает ли формула для <tex>n</tex>, больших <tex>2</tex> найдём <tex>a_2</tex>: <tex>a_2 = 2a_1 - a_0 = 2\cdot 2 - 1 = 3 = 2+1</tex>.--------> | ||
+ | * Будем считать предыдущие равенства базой индукции. То есть существует такое число <tex>n\geqslant 1</tex>, что до него проверяемая формула работала. Для следующего числа <tex>n+1</tex> верно <tex>a_{n+1}=2\cdot a_{n} - a_{n-1}</tex>. Предыдущие значения известны. Они подчинялись равенству <tex>a_{n}=n+1</tex>. Раскроем формулу: | ||
+ | *: <tex>a_{n+1}=2\cdot a_{n} - a_{n-1} = 2\cdot (n+1) - n = 2\cdot n + 2 - n = n+2 = (n+1) + 1</tex>. | ||
+ | : Методом математической индукции показали, что нет такого <tex>n</tex>, на котором действие формулы <tex>a_{n}=n+1</tex> заканчивается, и установили, что результаты нахождения коэффициентов <tex>A(t)</tex> методами дифференцирования и выражения через рекуррентную связь совпали. | ||
+ | <!-------------- | ||
* Вычислим производящую функцию последовательности <tex>a_0 = 1, a_n = k \cdot a_{n - 1}</tex> | * Вычислим производящую функцию последовательности <tex>a_0 = 1, a_n = k \cdot a_{n - 1}</tex> | ||
*: Так как последовательность является линейно рекуррентной, её производящая функция, согласно теореме, имеет вид <tex>F(t) = \dfrac{P(t)}{Q(t)}</tex>, где <tex>Q(t) = 1 - k \cdot t</tex> (так как <tex>c_1 = k</tex>), а <tex>deg(P) < 1</tex>. | *: Так как последовательность является линейно рекуррентной, её производящая функция, согласно теореме, имеет вид <tex>F(t) = \dfrac{P(t)}{Q(t)}</tex>, где <tex>Q(t) = 1 - k \cdot t</tex> (так как <tex>c_1 = k</tex>), а <tex>deg(P) < 1</tex>. | ||
Строка 99: | Строка 163: | ||
*: Пусть <tex>F(t) = f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots </tex>, тогда <tex>f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots = \dfrac{C}{1 - t - t^2}</tex>, следовательно <tex>(f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots) \cdot (1 - t - t^2) = B + At</tex> | *: Пусть <tex>F(t) = f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots </tex>, тогда <tex>f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots = \dfrac{C}{1 - t - t^2}</tex>, следовательно <tex>(f_0 + f_1 \cdot t + f_2 \cdot t^2 + \ldots + f_n \cdot t^n + \ldots) \cdot (1 - t - t^2) = B + At</tex> | ||
*: Пользуясь правилами перемножения формальных степенных рядов, получаем <tex>p_n = \sum\limits_{i = 0}^{n} f_i \cdot q_{n - i}</tex>, в частности, <tex>B = f_0 \cdot q_0 = 1 \cdot 1 = 1</tex>, а <tex>A = f_0 \cdot q_1 + f_1 \cdot q_0 = 1 \cdot (-1) + 1 \cdot 1 = 1 - 1 = 0</tex> | *: Пользуясь правилами перемножения формальных степенных рядов, получаем <tex>p_n = \sum\limits_{i = 0}^{n} f_i \cdot q_{n - i}</tex>, в частности, <tex>B = f_0 \cdot q_0 = 1 \cdot 1 = 1</tex>, а <tex>A = f_0 \cdot q_1 + f_1 \cdot q_0 = 1 \cdot (-1) + 1 \cdot 1 = 1 - 1 = 0</tex> | ||
− | *: Таким образом, <tex>F(t) = \dfrac{1}{1 - t - t^2}</tex> | + | *: Таким образом, <tex>F(t) = \dfrac{1}{1 - t - t^2}</tex>--------------------> |
==См. также== | ==См. также== |
Текущая версия на 19:23, 4 сентября 2022
Необходимые определения
Определение: |
Производящая функция называется дробно-рациональной (англ. rational), если она представима в виде отношения двух многочленов, то есть , где — многочлены конечной степени |
Отметим, что если и , то оба многочлена могут быть разделены на . Разделим оба многочлена на . Если после деления и остаются равными нулю, то разделим на ещё раз. Делить будем до тех пор, пока и будут оставаться равными нулю.
Ситуация, при которой правилам деления формальных степенных рядов.
, а , невозможна поОстаётся ситуация, при которой
. Тогда необходимо разделить на , чтобы стало равным . В дальнейшем, без ограничения общности, полагаем
Определение: |
Последовательность | называется линейной рекуррентной последовательностью (англ. constant-recursive sequence), если её члены заданы, а выполняется
Условные обозначения
В дальнейшем будем придерживаться следующих условных обозначений:
Будем обозначать
коэффициент при в
Теорема о связи этих понятий
Теорема: |
Последовательность является линейной рекуррентной последовательностью с первыми заданными членами, определяемыми коэффициентами её производящая функция является дробно-рациональной, причём представимой в виде , где , . |
Доказательство: |
Пусть — коэффициенты, задающие линейную рекуррентную последовательность , то есть первые членов заданы, а для следующих справедливо соотношение .Напишем друг под другом несколько производящих функций и соответствующих им формальных степенных рядов: Сложим все равенства и получим Для всех выполняется равенство , поэтому в правой части все коэффициенты при степенях, начиная с , обнулятся, а равенство будет выглядеть следующим образом:
Заметим, что второй множитель в левой части равен в точности , а степень правой части не превосходит . Получили требуемое построение.Замечание. Многочлен можно найти по формуле как числитель получившейся дроби. К результату можно применить взятие его по модулю . Это действие не испортит многочлен, так как его степень строго меньше . При этом мы сократим число операций при вычислении , поскольку достаточно найти только первых членов результирующего ряда, а для этого можно обойтись только первыми слагаемыми степенных рядов, соответствующих производящей функции и столькими же для .Итак, .
Пусть , , .Перепишем первое равенство, выразив через и : .Так как произведения степенных рядов, получаем . , выполнено для любого . Расписывая по определениюРазобьём полученную сумму на две: . Так как известно, можем определить, чему равны эти суммы. Для первой выполняются равенства:
Вторая же компонента равна нулю, поскольку . Тогда .Развернём выражение для :
Перенесём все слагаемые, кроме , вправо:
|
Примеры применения теоремы
Вычисление производящей функции последовательности
Вычислим производящую функцию последовательности
- Так как последовательность является линейно рекуррентной, её производящая функция, согласно теореме, имеет вид , где (так как ), а .
- Будем искать производящую функцию в виде
- Пусть , тогда , следовательно
- Пользуясь правилом перемножения формальных степенных рядов, получаем
- Следовательно,
- Таким образом,
- Частным случаем этой формулы являются соотношения и
Представление в виде отношения многочленов производящей функции для последовательности чисел Фибоначчи
Введём обозначения:
- — производящая функция для чисел Фибоначчи,
- .
Последовательность задаётся следующим образом:
- ,
- .
Здесь
и , следовательно .К числителю применим формулу
. Чтобы получить ответ, требуется всего лишь найти и .- ,
- .
Таким образом,
.Вычисление коэффициентов ряда с помощью теоремы о связи рекуррентности и рациональности
Найдём коэффициенты ряда
через построение рекуррентного соотношения.Имеем
- ,
- .
Второе равенство позволяет найти
и коэффициенты . В нашем примере , , .Зная, что
, найдём первые два коэффициента ряда, соответствующего функции . Подставим в равенство известные значения:- . Отсюда , .
Итак, коэффициенты
задаются соотношением- , ,
- .
Известно, что
. Такой результат можно получить, например, продифференцировав ряд функции . Проверим, что нахождение рекуррентного соотношения для исходной дроби даёт такой же результат, то есть для всех выполняется .- Для начальных значений равенства выполнены: , ;
- Будем считать предыдущие равенства базой индукции. То есть существует такое число
- .
, что до него проверяемая формула работала. Для следующего числа верно . Предыдущие значения известны. Они подчинялись равенству . Раскроем формулу:
- Методом математической индукции показали, что нет такого , на котором действие формулы заканчивается, и установили, что результаты нахождения коэффициентов методами дифференцирования и выражения через рекуррентную связь совпали.
См. также
Источники информации
- С. А. Ландо — Лекции о производящих функциях, стр 24