Решение рекуррентных соотношений — различия между версиями
(→Метод производящих функций) |
|||
Строка 9: | Строка 9: | ||
<tex> f = \begin{cases} f(0)=0; \\ f(n) = n + f(n-1),\quad n > 0 \end{cases}</tex> | <tex> f = \begin{cases} f(0)=0; \\ f(n) = n + f(n-1),\quad n > 0 \end{cases}</tex> | ||
− | может быть переведена в замкнутую форму: <tex>f = \ | + | может быть переведена в замкнутую форму: <tex>f = \dfrac{n(n+1)}{2}</tex>. Для этого можно использовать метод производящих функций. |
==Метод производящих функций== | ==Метод производящих функций== | ||
Строка 58: | Строка 58: | ||
откуда получаем замкнутое выражение для производящей функции: | откуда получаем замкнутое выражение для производящей функции: | ||
<br><tex> | <br><tex> | ||
− | G(z) = \ | + | G(z) = \dfrac{z}{1-z-z^2}. |
</tex><br> | </tex><br> | ||
Строка 64: | Строка 64: | ||
<br><tex>\displaylines{ | <br><tex>\displaylines{ | ||
1-z-z^2 = 0 \cr | 1-z-z^2 = 0 \cr | ||
− | z_1=-\ | + | z_1=-\dfrac{1-\sqrt{5}}{2}, z_2=-\dfrac{1+\sqrt{5}}{2}. |
} | } | ||
</tex><br> | </tex><br> | ||
Строка 70: | Строка 70: | ||
Таким образом, | Таким образом, | ||
<br><tex> | <br><tex> | ||
− | G(z) = \ | + | G(z) = \dfrac{z}{1-z-z^2}=\dfrac{-z}{(z_1-z)(z_2-z)} |
= | = | ||
− | \ | + | \dfrac{z_1/(z_1-z_2)}{z_1-z} + \dfrac{z_2/(z_2-z_1)}{z_2-z}. |
</tex><br> | </tex><br> | ||
Нам известно разложение следующей рациональной функции: | Нам известно разложение следующей рациональной функции: | ||
<br><tex> | <br><tex> | ||
− | \ | + | \dfrac{1}{1-z} = \sum_{n=0}^{\infty}z^n = 1 + z + z^2 + z^3 + \cdots. |
</tex><br> | </tex><br> | ||
Рассмотрим первую дробь и поделим в ней числитель и знаменатель на <tex>z_1</tex>: | Рассмотрим первую дробь и поделим в ней числитель и знаменатель на <tex>z_1</tex>: | ||
<br><tex> | <br><tex> | ||
− | \ | + | \dfrac{z_1/(z_1-z_2)}{z_1-z} = \dfrac1{z_1-z_2}\dfrac{1}{1-\dfrac{z}{z_1}} = |
− | \ | + | \dfrac1{z_1-z_2}\sum_{n=0}^{\infty}\dfrac{z^n}{z_1^n}. |
</tex><br> | </tex><br> | ||
Аналогично (но с делением на <tex>z_2</tex>) поступим со второй дробью: | Аналогично (но с делением на <tex>z_2</tex>) поступим со второй дробью: | ||
<br><tex> | <br><tex> | ||
− | \ | + | \dfrac{z_2/(z_2-z_1)}{z_2-z} = \dfrac1{z_2-z_1}\dfrac1{1-\dfrac{z}{z_2}} = |
− | \ | + | \dfrac1{z_2-z_1}\sum_{n=0}^{\infty}\dfrac{z^n}{z_2^n}. |
</tex><br> | </tex><br> | ||
Строка 95: | Строка 95: | ||
<br><tex> | <br><tex> | ||
G(z)=\sum_{n=0}^{\infty} f_nz^n = | G(z)=\sum_{n=0}^{\infty} f_nz^n = | ||
− | \sum_{n=0}^{\infty}\biggr(\ | + | \sum_{n=0}^{\infty}\biggr(\dfrac{1}{z_1-z_2}\dfrac{1}{z_1^n} + \dfrac{1}{z_2-z_1}\dfrac{1}{z_2^n} \biggr)z^n, |
</tex><br> | </tex><br> | ||
и, следовательно, | и, следовательно, | ||
<br><tex> | <br><tex> | ||
− | f_n = \ | + | f_n = \dfrac1{z_1-z_2}\dfrac{1}{z_1^n} + \dfrac1{z_2-z_1}\dfrac{1}{z_2^n}. |
</tex><br> | </tex><br> | ||
Данное выражение можно упростить, если обратить внимание на то, что <tex>1/z_1=-z_2</tex>, <tex>1/z_2=-z_1</tex> и <tex>z_1-z_2=√5</tex>: | Данное выражение можно упростить, если обратить внимание на то, что <tex>1/z_1=-z_2</tex>, <tex>1/z_2=-z_1</tex> и <tex>z_1-z_2=√5</tex>: | ||
<br><tex> | <br><tex> | ||
− | f_n=\ | + | f_n=\dfrac{1}{\sqrt{5}}\left( \biggl( \dfrac{1+\sqrt{5}}{2} \biggr)^n - \biggl( \dfrac{1-\sqrt{5}}{2} \biggr)^n \right). |
</tex><br> | </tex><br> | ||
Строка 139: | Строка 139: | ||
Последняя сумма может быть свёрнута: | Последняя сумма может быть свёрнута: | ||
<br><tex> | <br><tex> | ||
− | \sum_{n=2}^{\infty}z^n=\sum_{n=0}^{\infty}z^n-1-z=\ | + | \sum_{n=2}^{\infty}z^n=\sum_{n=0}^{\infty}z^n-1-z=\dfrac{1}{1-z}-1-z=\dfrac{z^2}{1-z}. |
</tex><br> | </tex><br> | ||
Подставив свёрнутое выражение обратно, имеем, | Подставив свёрнутое выражение обратно, имеем, | ||
<br><tex> | <br><tex> | ||
− | z\biggl(\sum_{n=2}^{\infty}z^n\biggr)' = z \biggl(\ | + | z\biggl(\sum_{n=2}^{\infty}z^n\biggr)' = z \biggl(\dfrac{z^2}{1-z}\biggr)'=\dfrac{z^2(2-z)}{(1-z)^2}. |
</tex><br> | </tex><br> | ||
Таким образом, наше последнее уравнение примет вид | Таким образом, наше последнее уравнение примет вид | ||
<br><tex> | <br><tex> | ||
− | G(z) = 1 -4z + 6zG(z)-8z^2G(z) + \ | + | G(z) = 1 -4z + 6zG(z)-8z^2G(z) + \dfrac{z^2(2-z)}{(1-z)^2}.\\ |
</tex><br> | </tex><br> | ||
Это уравнение для производящей функции. Из него выражаем <tex>G(z)</tex>: | Это уравнение для производящей функции. Из него выражаем <tex>G(z)</tex>: | ||
<br><tex> | <br><tex> | ||
− | G(z) = \ | + | G(z) = \dfrac{1-6z+11z^2-5z^3}{(1-6z+8z^2)(1-z)^2}. |
</tex><br> | </tex><br> | ||
Разложим знаменатель на множители и разобьём дробь на сумму простых дробей: | Разложим знаменатель на множители и разобьём дробь на сумму простых дробей: | ||
<br><tex> | <br><tex> | ||
− | G(z) = \ | + | G(z) = \dfrac{1-6z+11z^2-5z^3}{(1-6z+8z^2)(1-z)^2}=\dfrac{1-6z+11z^2-5z^3}{(1-2z)(1-4z)(1-z)^2}=\dfrac{1/3}{(1-z)^2}+\dfrac{7/9}{1-z}-\dfrac{1/2}{1-2z}+\dfrac{7/18}{1-4z}. |
</tex><br> | </tex><br> | ||
Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее: | Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее: | ||
<br><tex> | <br><tex> | ||
− | \ | + | \dfrac{1}{(1-z)^2} =(1-z)^{-2} =\sum_{n=0}^{\infty}\binom{-2}{n}(-z)^n=\sum_{n=0}^{\infty}(-1)^n\binom{n+1}{1}(-z)^n =\sum_{n=0}^{\infty}(n+1)z^n. |
</tex><br> | </tex><br> | ||
Теперь соберём ответ: | Теперь соберём ответ: | ||
<br><tex> | <br><tex> | ||
− | G(z) = \ | + | G(z) = \dfrac{1/3}{(1-z)^2}+\dfrac{7/9}{1-z}-\dfrac{1/2}{1-2z}+\dfrac{7/18}{1-4z}=\dfrac{1}{3}\sum_{n=0}^{\infty}(n+1)z^n+ |
− | \ | + | \dfrac{7}{9}\sum_{n=0}^{\infty}z^n-\dfrac{1}{2}\sum_{n=0}^{\infty}2^nz^n+\dfrac{7}{18}\sum_{n=0}^{\infty}4^nz^n. |
</tex><br> | </tex><br> | ||
Строка 176: | Строка 176: | ||
<br><tex> | <br><tex> | ||
a_n= | a_n= | ||
− | \ | + | \dfrac{n+1}{3} |
− | +\ | + | +\dfrac{7}{9} |
− | -\ | + | -\dfrac{2^n}{2} |
− | +\ | + | +\dfrac{7\cdot4^n}{18}= |
− | \ | + | \dfrac{7\cdot4^n+6n+20}{18} - 2^{n-1}. |
</tex><br> | </tex><br> | ||
Версия 20:01, 16 марта 2018
Содержание
Определения
Определение: |
Рекуррентная формула — формула вида | , выражающая каждый член последовательности через предыдущих членов и возможно номер члена последовательности .
Во многих задачах полезно знать, есть ли у рекурсивной функции нерекурсивная или как еще говорят «замкнутая» форма, т.е. получение в виде аналитически заданной функции. Например, рекурсивная функция, описывающая сумму чисел натурального ряда:
может быть переведена в замкнутую форму:
. Для этого можно использовать метод производящих функций.Метод производящих функций
Алгоритм получения замкнутого выражения для чисел
, удовлетворяющих рекуррентному соотношению, с помощью производящих функций cостоит из шагов.- Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен
):
- Домножить каждую строчку на в соответствующей степени и просуммировать строчки для всех .
- В полученном уравнении привести все суммы к замкнутому виду. Получить уравнение для производящей функции.
- Выразить в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням .
Примеры
Числа Фибоначчи
Рассмотрим рекуррентное соотношение для чисел Фибоначчи:
Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг:
Складываем все строчки:
Третий шаг алгоритма требует привести все суммы к замкнутому виду:
откуда получаем замкнутое выражение для производящей функции:
Осталось разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения:
Таким образом,
Нам известно разложение следующей рациональной функции:
Рассмотрим первую дробь и поделим в ней числитель и знаменатель на
Аналогично (но с делением на
Таким образом,
и, следовательно,
Данное выражение можно упростить, если обратить внимание на то, что
Произвольное соотношение
Рассмотрим следующее рекуррентное соотношение:
Следующие действия аналогичны тем, которые мы делали для чисел Фибоначчи:
Вспомним, что
поэтому
Последняя сумма может быть свёрнута:
Подставив свёрнутое выражение обратно, имеем,
Таким образом, наше последнее уравнение примет вид
Это уравнение для производящей функции. Из него выражаем
Разложим знаменатель на множители и разобьём дробь на сумму простых дробей:
Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее:
Теперь соберём ответ:
Значит,