Создайте рекурсивную функцию, а также определение замкнутой функции

#python-3.x #recursion #math

#python-3.x #рекурсия #математика

Вопрос:

Цель этого назначения — взять рекуррентное отношение, указанное внизу, а затем создать рекурсивную функцию под recFunc(n) , а также определение замкнутой функции под nonRecFunc(n) . Закрытая функция означает, что наша функция должна зависеть исключительно от n, и что ее выходные данные должны точно соответствовать выводам рекурсивной функции. Затем найдите значение для n = 15 и n = 20 и используйте его, как указано ниже. Вероятно, вам потребуется использовать характеристическое уравнение для решения этой проблемы.

Чему равно значение для nonRecFunc(20) (деленное на) nonRecFunc(15) , округленное до ближайшего целого числа.

Проблема:

Решите рекуррентное соотношение a_n = 12a_n-1 — 32a_n-2 с начальными условиями a_0 = 1 и a_1 = 4.

Я не понимаю, как мне следует решать эту проблему и как я могу использовать рекурсию для решения проблемы.

 def recFunc(n):
    if n == 0:
        return 1
    elif n == 1:
        return 2
    else:
        return recFunc(n - 1)   6 * recFunc(n - 2)


def nonRecFunc(n):
    return 4/5 * 3 ** n   1/5 * (-2) ** n


for i in range(0,10):
    print(recFunc(i))
    print(nonRecFunc(i))
    print()
  

Комментарии:

1. Я не уверен, в чем заключается ваш вопрос — на первый взгляд опубликованный исходный код, кажется, показывает вам, как решить вашу проблему; вам просто нужно подключить правильные константы.

2. В задаче говорится «Решите рекуррентное соотношение a_n = 12a_n-1 — 32a_n-2 с начальными условиями a_0 = 1 и a_1 = 4». Как бы я это сделал?

3. Что вы пробовали? Запрос ответов с ложечки обычно здесь не подходит; у вас достаточно информации, чтобы легко решить рекурсивную часть, но преобразование рекурсивной функции в закрытую может быть неудобным, и помощь в этом могла бы быть лучше по математике .

4. Я не прошу ответов, я попросил процесс. Каков метод решения проблемы, какие методы можно использовать и какие приложения это может иметь для рекурсии? Я думаю, что вопрос, который я задал, довольно интуитивно понятен. Возможно, вы неправильно поняли вопрос? Спасибо за помощь!

5. Но вы показали краткое рекурсивное решение для коэффициентов 1,6 и начальных значений 1,2. Что мешает вам изменить их на 12,32 и 1,4?

Ответ №1:

Как упоминалось в моем комментарии выше, я оставляю рекурсивное решение вам. Для более математического вопроса о нерекурсивном решении рассмотрим это:

у вас есть

x_n = a x_(n-1) b x_(n-2)

Это означает, что изменение x более или менее пропорционально x, поскольку x_n и x_(n-1) будут одного порядка величины. Другими словами, мы ищем тип функции, дающий

df(n)/dn ~ f (n)

Это нечто экспоненциальное. Итак, приведенное выше предположение

x_n = альфа t ^ n бета s ^ n

(позже, при решении для s и t, мотивация для этого станет ясна) из начальных значений мы получаем

альфа бета = 1

и

альфа t бета s = 2

Рекурсия обеспечивает

альфа t ^ n бета s ^ n = a (alpa t ^ (n-1) бета s ^(n-1) ) b (alpa t ^ (n-2) бета s ^ (n-2))

или

t ^ 2 альфа t ^ (n-2) s ^ 2 бета s ^(n-2) = a ( t alpa t ^(n-2) s бета s ^(n-2)) b (alpa t ^ (n-2) бета s ^(n-2))

Это уравнение справедливо для всех n, так что вы можете вывести уравнение для t и s.

Включение результатов в приведенные выше уравнения дает вам нерекурсивное решение.

Попробуйте воспроизвести это, а затем перейдите к реальной задаче.

Приветствия.