Решение рекуррентных соотношений — различия между версиями
(Метки: правка с мобильного устройства, правка из мобильной версии) |
|||
Строка 15: | Строка 15: | ||
<ol> | <ol> | ||
<li>Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен <math>k</math>): | <li>Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен <math>k</math>): | ||
− | < | + | <br>[[Файл:img37.png]] |
</li> | </li> | ||
Строка 22: | Строка 22: | ||
<li>Выразить <math>G(z)</math> в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням <math>z</math>.</li> | <li>Выразить <math>G(z)</math> в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням <math>z</math>.</li> | ||
</ol> | </ol> | ||
− | |||
==Доказательство== | ==Доказательство== | ||
Строка 29: | Строка 28: | ||
==Примеры== | ==Примеры== | ||
====ЧИСЛА ФИБОНАЧЧИ==== | ====ЧИСЛА ФИБОНАЧЧИ==== | ||
+ | Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | ||
+ | |||
+ | Рассмотрим рекуррентное соотношение для чисел Фибоначчи: | ||
+ | <br>[[Файл:Img39.png]]<br> | ||
+ | |||
+ | Это хорошо известная последовательность, каждый элемент которой (кроме нулевого и первого) равен сумме двух предыдущих: | ||
+ | <br>[[Файл:Img40.png]]<br> | ||
+ | Эти числа очень быстро растут, например, f10=55, f20=6765, f30=832040, f100=354224848179261915075. | ||
+ | Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг: | ||
+ | <br>[[Файл:Img45.png]]<br> | ||
+ | Складываем все строчки: | ||
+ | <br>[[Файл:Img46.png]]<br> | ||
+ | Третий шаг алгоритма требует привести все суммы к замкнутому виду: | ||
+ | <br>[[Файл:Img47.png]]<br> | ||
+ | откуда получаем замкнутое выражение для производящей функции: | ||
+ | <br>[[Файл:Img48.png]]<br> | ||
+ | Осталось «всего лишь» разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения: | ||
+ | <br>[[Файл:Img49.png]]<br> | ||
+ | Таким образом (проверьте), | ||
+ | <br>[[Файл:Img50.png]]<br> | ||
+ | Как теперь поступить с этими выражениями? Ведь пока нам известно разложение только одной рациональной функции: | ||
+ | <br>[[Файл:Img31.png]]<br> | ||
+ | Рассмотрим первую дробь и поделим в ней числитель и знаменатель на z1: | ||
+ | <br>[[Файл:Img52.png]]<br> | ||
+ | Аналогично (но с делением на z2) поступим со второй дробью: | ||
+ | <br>[[Файл:Img53.png]]<br> | ||
+ | Таким образом, | ||
+ | <br>[[Файл:Img54.png]]<br> | ||
+ | и, следовательно, | ||
+ | <br>[[Файл:Img55.png]]<br> | ||
+ | Данное выражение можно «причесать», если обратить внимание на то, что 1/z1=-z2, 1/z2=-z1 и z1-z2=√5 (корень из 5): | ||
+ | <br>[[Файл:Img59.png]]<br> | ||
====БОЛЕЕ СЛОЖНОЕ СООТНОШЕНИЕ==== | ====БОЛЕЕ СЛОЖНОЕ СООТНОШЕНИЕ==== |
Версия 22:09, 12 марта 2018
Содержание
Определения
Определение: |
Рекуррентная формула — формула вида | , выражающая каждый член последовательности через предыдущих членов и возможно номер члена последовательности .
Во многих задачах полезно знать, есть ли у рекурсивной функции нерекурсивная или как еще говорят «замкнутая» форма, т.е. получение в виде аналитически заданной функции. Например, рекурсивная функция, описывающая сумму чисел натурального ряда:
может быть переведена в замкнутую форму:
. Для этого можно использовать метод производящих функций.Метод производящих функций
Алгоритм получения замкнутого выражения для чисел
, удовлетворяющих рекуррентному соотношению, с помощью производящих функций cостоит из 4 шагов.- Записать рекуррентное соотношение и начальные данные для него в следующем виде (если порядок соотношения равен
):
- Домножить каждую строчку на в соответствующей степени и просуммировать строчки для всех .
- В полученном уравнениипривести все суммы к замкнутому виду. Получить уравнение для производящей функции.
- Выразить в явном виде (решить уравнение, полученное на предыдущем шаге) и разложить производящую функцию в ряд по степеням .
Доказательство
по построению
Примеры
ЧИСЛА ФИБОНАЧЧИ
Рассмотрим рекуррентное соотношение для чисел Фибоначчи:
Рассмотрим рекуррентное соотношение для чисел Фибоначчи:
Это хорошо известная последовательность, каждый элемент которой (кроме нулевого и первого) равен сумме двух предыдущих:
Эти числа очень быстро растут, например, f10=55, f20=6765, f30=832040, f100=354224848179261915075.
Первый шаг алгоритма мы уже выполнили, записав рекуррентное соотношение. Выполним второй шаг:
Складываем все строчки:
Третий шаг алгоритма требует привести все суммы к замкнутому виду:
откуда получаем замкнутое выражение для производящей функции:
Осталось «всего лишь» разложить её в ряд (чего требует четвёртый шаг алгоритма). С этой целью нужно разложить знаменатель на множители. Найдем корни уравнения:
Таким образом (проверьте),
Как теперь поступить с этими выражениями? Ведь пока нам известно разложение только одной рациональной функции:
Рассмотрим первую дробь и поделим в ней числитель и знаменатель на z1:
Аналогично (но с делением на z2) поступим со второй дробью:
Таким образом,
и, следовательно,
Данное выражение можно «причесать», если обратить внимание на то, что 1/z1=-z2, 1/z2=-z1 и z1-z2=√5 (корень из 5):