#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.
Включение результатов в приведенные выше уравнения дает вам нерекурсивное решение.
Попробуйте воспроизвести это, а затем перейдите к реальной задаче.
Приветствия.