Решение рекуррентных соотношений — различия между версиями
Строка 29: | Строка 29: | ||
====ЧИСЛА ФИБОНАЧЧИ==== | ====ЧИСЛА ФИБОНАЧЧИ==== | ||
Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | ||
− | |||
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
f_0&{}={}&0,\\ | f_0&{}={}&0,\\ | ||
Строка 36: | Строка 35: | ||
\end{array} | \end{array} | ||
</math><br> | </math><br> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг: | Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг: | ||
− | |||
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
1\cdot f_0&{}={}&0\cdot 1,\\ | 1\cdot f_0&{}={}&0\cdot 1,\\ | ||
Строка 54: | Строка 43: | ||
\end{array} | \end{array} | ||
</math><br> | </math><br> | ||
+ | |||
Складываем все строчки: | Складываем все строчки: | ||
− | |||
<br><math> | <br><math> | ||
f_0 + f_1 z + \sum_{n=2}^{\infty}f_nz^n = | f_0 + f_1 z + \sum_{n=2}^{\infty}f_nz^n = | ||
z + \sum_{n=2}^{\infty}f_{n-1}z^n+\sum_{n=2}^{\infty}f_{n-2}z^n. | z + \sum_{n=2}^{\infty}f_{n-1}z^n+\sum_{n=2}^{\infty}f_{n-2}z^n. | ||
</math><br> | </math><br> | ||
+ | |||
Третий шаг алгоритма требует привести все суммы к замкнутому виду: | Третий шаг алгоритма требует привести все суммы к замкнутому виду: | ||
− | |||
<br><math>\begin{array}{rcl} | <br><math>\begin{array}{rcl} | ||
G(z) &{}={}& \displaystyle z + z\sum_{n=z} &{}={}& \displaystyle z + zG(z)+z^2G(z),\\ | G(z) &{}={}& \displaystyle z + z\sum_{n=z} &{}={}& \displaystyle z + zG(z)+z^2G(z),\\ | ||
\end{array} | \end{array} | ||
</math><br> | </math><br> | ||
+ | |||
откуда получаем замкнутое выражение для производящей функции: | откуда получаем замкнутое выражение для производящей функции: | ||
− | |||
<br><math> | <br><math> | ||
G(z) = \frac{z}{1-z-z^2}. | G(z) = \frac{z}{1-z-z^2}. | ||
</math><br> | </math><br> | ||
− | |||
+ | Осталось разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения: | ||
<br><math>\displaylines{ | <br><math>\displaylines{ | ||
1-z-z^2 = 0 \cr | 1-z-z^2 = 0 \cr | ||
Строка 78: | Строка 67: | ||
} | } | ||
</math><br> | </math><br> | ||
− | |||
+ | Таким образом, | ||
<br><math> | <br><math> | ||
G(z) = \frac{z}{1-z-z^2}=\frac{-z}{(z_1-z)(z_2-z)} | G(z) = \frac{z}{1-z-z^2}=\frac{-z}{(z_1-z)(z_2-z)} | ||
Строка 85: | Строка 74: | ||
\frac{z_1/(z_1-z_2)}{z_1-z} + \frac{z_2/(z_2-z_1)}{z_2-z}. | \frac{z_1/(z_1-z_2)}{z_1-z} + \frac{z_2/(z_2-z_1)}{z_2-z}. | ||
</math><br> | </math><br> | ||
− | |||
+ | Нам известно разложение следующей рациональной функции: | ||
<br><math> | <br><math> | ||
\frac{1}{1-z} = \sum_{n=0}^{\infty}z^n = 1 + z + z^2 + z^3 + \cdots. | \frac{1}{1-z} = \sum_{n=0}^{\infty}z^n = 1 + z + z^2 + z^3 + \cdots. | ||
</math><br> | </math><br> | ||
− | |||
+ | Рассмотрим первую дробь и поделим в ней числитель и знаменатель на <math>z1</math>: | ||
<br><math> | <br><math> | ||
\frac{z_1/(z_1-z_2)}{z_1-z} = \frac1{z_1-z_2}\frac{1}{1-\frac{z}{z_1}} = | \frac{z_1/(z_1-z_2)}{z_1-z} = \frac1{z_1-z_2}\frac{1}{1-\frac{z}{z_1}} = | ||
\frac1{z_1-z_2}\sum_{n=0}^{\infty}\frac{z^n}{z_1^n}. | \frac1{z_1-z_2}\sum_{n=0}^{\infty}\frac{z^n}{z_1^n}. | ||
</math><br> | </math><br> | ||
− | |||
+ | Аналогично (но с делением на <math>z2</math>) поступим со второй дробью: | ||
<br><math> | <br><math> | ||
\frac{z_2/(z_2-z_1)}{z_2-z} = \frac1{z_2-z_1}\frac1{1-\frac{z}{z_2}} = | \frac{z_2/(z_2-z_1)}{z_2-z} = \frac1{z_2-z_1}\frac1{1-\frac{z}{z_2}} = | ||
\frac1{z_2-z_1}\sum_{n=0}^{\infty}\frac{z^n}{z_2^n}. | \frac1{z_2-z_1}\sum_{n=0}^{\infty}\frac{z^n}{z_2^n}. | ||
</math><br> | </math><br> | ||
+ | |||
Таким образом, | Таким образом, | ||
− | |||
<br><math> | <br><math> | ||
G(z)=\sum_{n=0}^{\infty} f_nz^n = | G(z)=\sum_{n=0}^{\infty} f_nz^n = | ||
Строка 109: | Строка 98: | ||
...rac{1}{z_1^n} + \frac{1}{z_2-z_1}\frac{1}{z_2^n} \biggr)z^n, | ...rac{1}{z_1^n} + \frac{1}{z_2-z_1}\frac{1}{z_2^n} \biggr)z^n, | ||
</math><br> | </math><br> | ||
+ | |||
и, следовательно, | и, следовательно, | ||
− | |||
<br><math> | <br><math> | ||
f_n = \frac1{z_1-z_2}\frac{1}{z_1^n} + \frac1{z_2-z_1}\frac{1}{z_2^n}. | f_n = \frac1{z_1-z_2}\frac{1}{z_1^n} + \frac1{z_2-z_1}\frac{1}{z_2^n}. | ||
</math><br> | </math><br> | ||
− | |||
+ | Данное выражение можно упростить, если обратить внимание на то, что <math>1/z_1=-z_2</math>, <math>1/z_2=-z_1</math> и <math>z_1-z_2=√5</math>: | ||
<br><math> | <br><math> | ||
f_n=\frac{1}{\sqrt{5}}\left( \biggl( \frac{1+\sqrt{5}}{2} \biggr)^n - \biggl( \frac{1-\sqrt{5}}{2} \biggr)^n \right). | f_n=\frac{1}{\sqrt{5}}\left( \biggl( \frac{1+\sqrt{5}}{2} \biggr)^n - \biggl( \frac{1-\sqrt{5}}{2} \biggr)^n \right). |
Версия 23:12, 12 марта 2018
Содержание
Определения
Определение: |
Рекуррентная формула — формула вида | , выражающая каждый член последовательности через предыдущих членов и возможно номер члена последовательности .
Во многих задачах полезно знать, есть ли у рекурсивной функции нерекурсивная или как еще говорят «замкнутая» форма, т.е. получение в виде аналитически заданной функции. Например, рекурсивная функция, описывающая сумму чисел натурального ряда:
может быть переведена в замкнутую форму:
. Для этого можно использовать метод производящих функций.Метод производящих функций
Алгоритм получения замкнутого выражения для чисел
, удовлетворяющих рекуррентному соотношению, с помощью производящих функций cостоит из 4 шагов.- Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен
):
- Домножить каждую строчку на в соответствующей степени и просуммировать строчки для всех .
- В полученном уравнениипривести все суммы к замкнутому виду. Получить уравнение для производящей функции.
- Выразить в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням .
Доказательство
по построению
Примеры
ЧИСЛА ФИБОНАЧЧИ
Рассмотрим рекуррентное соотношение для чисел Фибоначчи:
Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг:
Складываем все строчки:
Третий шаг алгоритма требует привести все суммы к замкнутому виду:
откуда получаем замкнутое выражение для производящей функции:
Осталось разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения:
Таким образом,
Нам известно разложение следующей рациональной функции:
Рассмотрим первую дробь и поделим в ней числитель и знаменатель на
Аналогично (но с делением на
Таким образом,
и, следовательно,
Данное выражение можно упростить, если обратить внимание на то, что