Решение рекуррентных соотношений — различия между версиями
Строка 27: | Строка 27: | ||
==Примеры== | ==Примеры== | ||
− | ==== | + | ====Числа Фибоначчи==== |
Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | ||
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
Строка 111: | Строка 111: | ||
</math><br> | </math><br> | ||
− | ==== | + | ====Произвольное соотношение==== |
− | Рассмотрим | + | Рассмотрим следующее рекуррентное соотношение: |
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
a_0&{}={}&1,\\ | a_0&{}={}&1,\\ | ||
Строка 122: | Строка 122: | ||
Следующие действия аналогичны тем, которые мы делали для чисел Фибоначчи: | Следующие действия аналогичны тем, которые мы делали для чисел Фибоначчи: | ||
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
− | \displaystyle a_0 + a_1 z + \sum_{n=2}^{\infty}{a_n}{z^n} &{}={}& 1+2z+6\sum_{n=2}^{\infty}{a_{n-1}}{z^n} | + | \displaystyle a_0 + a_1 z + \sum_{n=2}^{\infty}{a_n}{z^n} &{}={}& 1+2z+6\sum_{n=2}^{\infty}{a_{n-1}}{z^n}-8\sum_{n=2}^{\infty}{a_{n-2}}{z^n}+\sum_{n=2}^{\infty}nz^n, \\ |
− | + | G(z) &{}={}& 1+2z+6z\sum_{n=2}^{\infty}{a_{n-1}}{z^{n-1}}-8z^2\sum_{n=2}^{\infty}{a_{n-2}}{z^{n-2}}+\sum_{n=2}^{\infty}nz^n, \\ | |
− | + | G(z) &{}={}& 1+2z+6z\sum_{n=1}^{\infty}{a_{n}}{z^{n}}-8z^2\sum_{n=0}^{\infty}{a_{n}}{z^{n}}+\sum_{n=2}^{\infty}nz^n, \\ | |
− | G(z) &{}={} & | + | G(z) &{}={} & 1+ 2z + 6z(G(z)-a_0)-8z^2G(z) + \sum_{n=2}^{\infty}nz^n.\\ |
− | G(z) &{}={} & 6zG(z)-8z^2G(z) + \sum_{n=2}^{\infty}nz^n.\\ | + | G(z) &{}={} & 1 - 4z + 6zG(z)-8z^2G(z) + \sum_{n=2}^{\infty}nz^n.\\ |
\end{array} | \end{array} | ||
</math><br> | </math><br> | ||
Строка 137: | Строка 137: | ||
поэтому | поэтому | ||
<br><math> | <br><math> | ||
− | \sum_{n=2}^{\infty}nz^n=z\sum_{n=2}^{\infty}nz^{n-1}= | + | \sum_{n=2}^{\infty}nz^n=z\sum_{n=2}^{\infty}nz^{n-1}=z\sum_{n=2}^{\infty}(z^n)'=z\biggl(\sum_{n=2}^{\infty}z^n\biggr)'. |
− | z\ | ||
− | |||
− | z\biggl(\sum_{n=2}^{\infty}z^n\biggr)'. | ||
</math><br> | </math><br> | ||
Строка 165: | Строка 162: | ||
Разложим знаменатель на множители и разобьём дробь на сумму простых дробей: | Разложим знаменатель на множители и разобьём дробь на сумму простых дробей: | ||
<br><math> | <br><math> | ||
− | G(z) = \frac{1-6z+11z^2-5z^3}{(1-6z+8z^2)(1-z)^2}= | + | G(z) = \frac{1-6z+11z^2-5z^3}{(1-6z+8z^2)(1-z)^2}=\frac{1-6z+11z^2-5z^3}{(1-2z)(1-4z)(1-z)^2}=\frac{1/3}{(1-z)^2}+\frac{7/9}{1-z}-\frac{1/2}{1-2z}+\frac{7/18}{1-4z}. |
− | \frac | ||
− | |||
</math><br> | </math><br> | ||
Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее: | Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее: | ||
<br><math> | <br><math> | ||
− | \frac{1}{(1-z)^2} = | + | \frac{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. |
− | (1-z)^{-2} = | ||
− | \sum_{n=0}^{\infty}\ | ||
− | |||
− | \sum_{n=0}^{\infty}(n+1)z^n. | ||
</math><br> | </math><br> | ||
Версия 13:32, 13 марта 2018
Содержание
Определения
Определение: |
Рекуррентная формула — формула вида | , выражающая каждый член последовательности через предыдущих членов и возможно номер члена последовательности .
Во многих задачах полезно знать, есть ли у рекурсивной функции нерекурсивная или как еще говорят «замкнутая» форма, т.е. получение в виде аналитически заданной функции. Например, рекурсивная функция, описывающая сумму чисел натурального ряда:
может быть переведена в замкнутую форму:
. Для этого можно использовать метод производящих функций.Метод производящих функций
Алгоритм получения замкнутого выражения для чисел
, удовлетворяющих рекуррентному соотношению, с помощью производящих функций cостоит из 4 шагов.- Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен
):
- Домножить каждую строчку на в соответствующей степени и просуммировать строчки для всех .
- В полученном уравнениипривести все суммы к замкнутому виду. Получить уравнение для производящей функции.
- Выразить в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням .
Доказательство
по построению
Примеры
Числа Фибоначчи
Рассмотрим рекуррентное соотношение для чисел Фибоначчи:
Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг:
Складываем все строчки:
Третий шаг алгоритма требует привести все суммы к замкнутому виду:
откуда получаем замкнутое выражение для производящей функции:
Осталось разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения:
Таким образом,
Нам известно разложение следующей рациональной функции:
Рассмотрим первую дробь и поделим в ней числитель и знаменатель на
Аналогично (но с делением на
Таким образом,
и, следовательно,
Данное выражение можно упростить, если обратить внимание на то, что
Произвольное соотношение
Рассмотрим следующее рекуррентное соотношение:
Следующие действия аналогичны тем, которые мы делали для чисел Фибоначчи:
Вспомним, что
поэтому
Последняя сумма может быть свёрнута:
Подставив свёрнутое выражение обратно, имеем,
Таким образом, наше последнее уравнение примет вид
Это уравнение для производящей функции. Из него выражаем
Разложим знаменатель на множители и разобьём дробь на сумму простых дробей:
Дальше мы знаем что делать со всеми этими дробями, кроме, разве лишь, первой. Рассмотрим её (без множителя) подробнее:
Теперь соберём ответ:
Значит,