Основная теорема о рекуррентных соотношениях
В этой статье вы познакомитесь с основной теоремой о рекуррентных соотношениях и узнаете, как использовать ее для решения рекуррентных соотношений.
Основная теорема о рекуррентных соотношениях — это формула, предназначенная для решения рекуррентных соотношений следующего вида:
T(n) = aT(n/b) + f(n), где
n = объем входных данных
a = количество подзадач в рекурсии
n/b = размер каждой подзадачи. Предполагается, что все подзадачи имеют одинаковый размер.
f(n) = оценка выполненной работы вне рекурсивных вызовов.
Также она включает в себя вычислительную стоимость деления на подзадачи объединения решений этих подзадач.
Здесь a ≥ 1
и b > 1
— константы, а f(n)
— асимптотически положительная функция.
Асимптотически положительная функция — функция, где при достаточно больших значениях n
f(n)>0
.
Основная теорема о рекуррентных соотношениях — простой и быстрый способ вычисления временной сложности рекуррентных соотношений (например, «Разделяй и влавствуй»).
Формулировка теоремы
Если a ≥ 1
и b > 1
— константы, а f(n)
— асимптотически положительная функция, то временная сложность рекуррентного соотношения задается выражением:
T(n) = aT(n/b) + f(n)
T(n) имеет следующие асимптотические оценки:
- Если f(n) = O(nlogba-ϵ), то T(n) = Θ(nlogb a).
- Если f(n) = Θ(nlogb a), то T(n) = Θ(nlogb a*log n).
- Если f(n) = Ω(nlogb a+ϵ), то T(n) = Θ(f(n)).
ϵ > 0 — константа.
Каждое из этих условий можно интерпретировать следующим образом:
- Если стоимость решения подзадач на каждом уровне увеличивается на некий коэффициент, то значение
f(n)
станет полиномиально меньше, чем nlogb a. - Если стоимость решения подзадач на каждом уровне примерно одинакова, то значение
f(n)
станет равно nlogb a. То есть, временная сложность будет равнаf(n)
, умноженной на количество уровней — nlogb a*log n. - Если стоимость решения подзадач на каждом уровне уменьшается на некий коэффициент, то значение
f(n)
станет полиномиально больше, чем nlogb a. То есть, временная сложность зависит от стоимостиf(n)
.
Пример использования
T(n) = 3T(n/2) + n2
Здесь:
a = 3
n/b = n/2
f(n) = n2
logb a = log2 3 ≈ 1.58 < 2
то есть f(n) < nlogb a+ϵ, где ϵ — константа.
То есть, это 3 случай.
Следовательно, T(n) = f(n) = Θ(n2)
Когда не работает
Основную теорему о рекуррентных соотношениях нельзя использовать в следующих случаях:
T(n)
не монотонна — например,T(n) = sin n
.f(n)
не полиномиальна — например,f(n) = 2n
.a
не константа — например,а = 2n
.a < 1
.
Использование рекуррентных формул при интегрировании
В этой статье мы расскажем, что такое рекуррентные формулы и как использовать их при интегрировании. Мы не будем перечислять все возможные варианты, а лишь сформулируем общий принцип их получения.
Рекуррентные формулы выражают n-ный член последовательности через предыдущие члены. Их можно вывести путем преобразования подынтегральной функции с помощью метода интегрирования по частям.
Допустим, мы вычисляем неопределенный интеграл с помощью рекуррентной формулы Jn(x)=cos x·sinn-1(x)n+n-1nJn-2(x).
Расчет будет выглядеть следующим образом:
J5(x)=∫sin5xdx=-cos x·sin4x5+45J3(x)==-cos x·sin4x5+45∫sin3xdx==-cos x·sin4x5+45-cos x·sin2x3+23∫sin xdx==-cos x·sin4x5-4cos x·sin2 x15-815cos x+C
Теперь рассмотрим, как именно была выведена формула Jn(x)=∫sinnxdx=-cos x·sinn-1(x)n+n-1nJn-2(x).
Jn(x)=∫sinnxdx=∫sinn-2x·sin2xdx=∫sinn-2x·(1-cos2x)dx==∫sinn-2xdx-∫sinn-2x·cos2xdx=Jn-2(x)-∫sinn-2x·cos2xdx
Получившийся в итоге интеграл можно взять, используя метод интегрирования по частям. Берем в качестве функции u(x)cos x, тогда dvx=sinn-2x·cos xdx.
dux=-sin xdx, v(x)=∫sinn-2x·cos xdx=∫sinn-2xd(sin x)=sinn-1xn-1
Значит,
∫sinn-2x·cos2xdx=u(x)v(x)-∫v(x)d(u(x))==sinn-1x·cos xn-1+1n-1∫sinnxdx=sinn-1x·cos xn-1+1n-1Jn(x)
Теперь вернемся к тому интегралу, что был у нас в начале:
Jn(x)=∫sinnxdx=Jn-2(x)-∫sinn-2x·cos2xdx==Jn-2(x)-sinn-1x·cos xn-1+1n-1Jn(x)==Jn-2(x)-sinn-1x·cos xn-1-1n-1Jn(x)
Таким образом, мы получим следующее:
Jn(x)=Jn-2(x)-sinn-1x·cos xn-1-1n-1Jn(x)⇒⇒1+1n-1Jn(x)=Jn-2(x)-sinn-1x·cos xn-1⇒Jn(x)=-cos x·sinn-1(x)n+n-1nJn-2(x)
Это и есть то, что нам нужно было доказать.Другие рекуррентные формулы могут быть выведены точно таким же образом.
Определение 1- Чтобы найти интеграл вида Jn(x)=∫sinnxdx, нужно использовать формулу Jn(x)=-cos x·sinn-1(x)n+n-1nJn-2(x), где n является натуральным числом.
- Если нам надо вычислить интеграл вида Jn(x)=∫dxsinn(x), то для этого нам пригодится формула Jn(x)=cos x(n-1)·sinn-1x+n-2n-1Jn-2(x).
- Для вычисления интеграла Kn(x)=∫cosn(x)dx применяется рекуррентная формула Kn(x)=sin x·cosn-1(x)n+n-1nKn-2(x).
- Чтобы найти интеграл вида Kn(x)=sin x·cosn-1(x)n+n-1nKn-2(x), берем формулу Kn(x)=sin x(n-1)·cosn-1x+n-2n-1Kn-2(x).
Вычислите неопределенный интеграл ∫cos-3xdx.
Решение
Нам потребуется рекуррентная формула, указанная в пункте 4. Значение n при этом будет равно трем.
Из таблицы первообразных мы знаем, что ∫cos-1xdx=ln1+sin xcos x+C1, следовательно,
∫cos-3xdx=sin x2cos2x+12∫cos-1xdx==sin x2 cos2x+12ln1+sin xcos x+C
Добавим к нашему списку формул еще одну. Она пригодится в том случае, если нужно выполнить интегрирование простейших дробей четвертого типа.
Jn=∫dxx2+px+qn==2x+p(n-1)(4q-p2)(x2+px+q)n-1+2n-3n-1·24q-p2·Jn-1
Она выводится путем преобразования подынтегральной функции с дальнейшим интегрированием по частям.
∫dxx2+px+qn=∫dxx+p22+4q-p24n=z=x+p2==∫dzz2+4q-p24n=44q-p2∫z2+4q-p24-z2dzz2+4q-p24n==44q-p2∫dzz2+4q-p24n-1-44q-p2∫z2dzz2+4q-p24n-1
Получившийся в итоге интеграл мы берем по частям.
Ответы: dv(z)=zdzz2+4q-p24n-1
Пример 2Найдите множество первообразных функции 1(x2+3x+8)3.
Решение
Из условия мы знаем, что q = 8, p = 3, а n = 3. Для вычисления берем рекуррентную формулу:
∫dx(x2+3x+8)3==2x+3(3-1)(4·8-32)x2+3x+83-1+2·3-33-1·24·8-32·∫dx(x2+3x+8)2==2x+346(x2+3x+8)2+323·∫dx(x2+3x+8)2==применяем формулу вновь для n=2==2x+346(x2+3x+8)2++323·2x+3(2-1)(4·8-32)x2+3x+82-1+2·2-32-1·24·8-32·∫dxx2+3x+8==2x+346(x2+3x+8)2+3529·2x+3×2+3x+8+6529·∫dxx2+3x+8==выделяем полный квадрат в знаменателе==2x+346(x2+3x+8)2+3529·2x+3×2+3x+8+6529·∫dxx+322+234==2x+346(x2+3x+8)2+3529·2x+3×2+3x+8+6529·223·arctg2x+323+C==2x+346(x2+3x+8)2+3529·2x+3×2+3x+8+1252923·arctg2x+323+C
Ответ: ∫dx(x2+3x+8)3=2x+346(x2+3x+8)2+3529·2x+3×2+3x+8+1252923·arctg2x+323+C
Подводя итоги статьи, отметим, что применение рекуррентных формул делает интегрирование более быстрым и простым, однако в некоторых случаях можно обойтись без них, воспользовавшись основными методами интегрирования.
Преподаватель математики и информатики. Кафедра бизнес-информатики Российского университета транспорта
Решение квадратных уравнений
|
Калькулятор последовательности, определяемой повторением
Рекурсивная последовательность, онлайн-исчисление
Резюме :
Калькулятор последовательности позволяет в режиме онлайн вычислить члены последовательности, определяемые повторяемостью и ее первым членом, до указанного индекса.
recursive_sequence онлайн
Описание:
Калькулятор может вычислить в режиме онлайн члены последовательности, определяемой повторением между двумя индексами этой последовательности.
Также возможно вычислять элементы числовой последовательности, когда она явно определена .
Вычисление членов последовательности, определяемой повторяемостью
Калькулятор умеет вычислять членов последовательности, определяемой повторением между двумя индексами этой последовательности.
Таким образом, чтобы получить элемента последовательности , определяемой формулой `u_(n+1)=5*u_n` и `u_0=2`, между 1 и 4, введите: recursive_sequence(`5x;2;4;x`) после вычисления возвращается результат.
Вычисление элементов арифметической прогрессии, определяемой повторяемостью
Калькулятор способен вычислять члена арифметической прогрессии между двумя индексами этой последовательности , из первого члена последовательности и рекуррентного соотношения.
Таким образом, чтобы получить члена арифметической последовательности, определяемой повторением с отношением `u_(n+1)=5*u_n` и `u_0=3`, между 1 и 6 входить : recursive_sequence(`5*x;3;6;x`) после вычисления возвращается результат.
Вычисление членов геометрической прогрессии
Калькулятор способен вычислять членов геометрической прогрессии между двумя индексами этой последовательности, из отношения рекуррентности и первого члена последовательности.
Таким образом, чтобы получить члена геометрической последовательности , определяемой формулой `u_(n+1)=3*u_n` и `u_0=2`, между 1 и 4, введите: recursive_sequence(`3*x;1;4;x`) после вычисления возвращается результат.
Вычисление суммы членов последовательности
Калькулятор умеет вычислять сумма членов последовательности между двумя индексами этого ряда, его можно использовать, в частности, для расчета частичные суммы некоторых рядов. .
Синтаксис:
recursive_sequence(выражение;первый_член;верхняя граница;переменная)
Примеры:
В этом примере показано, как вычислить первые члены геометрической последовательности, определяемой повторением. `u_(n+1)=4*u_n` и `u_0=-1` recursive_sequence(`4*x;-1;3;x`)
Расчет онлайн с помощью recursive_sequence (калькулятор рекурсивной последовательности)
См. также
Список связанных калькуляторов:
- Вычислить элементы продукта последовательности: продукт.