У меня есть итеративная функция f(x) = ax + b, которую я хочу повторить N раз. Мои действия следующие
1.) Определить итерационную функцию
2.) Присвойте значение каждому повторению
3.) Остановитесь на N-м повторении
# Define repeating function
f += a*f + b
# Assign values to iterations
# Stop iterating at Nth value
for i in range(N+1):
f += f(i)
Я не знаю, как маркировать каждую итерацию функции. Моя первая мысль — создать список всех значений функции.
f += f(i) Это не имеет смысла, поскольку вы используете имя f как имя функции и как возвращаемое значение. Вы действительно имели в виду i += f(i) ?
Что вы подразумеваете под «итеративной функцией»? Этой концепции не существует в Python. Некоторые из используемых вами обозначений кажутся математическими, а некоторые — Python. Рекомендую разбить это на части. Вам необходимо четко понимать проблему, которую вы пытаетесь решить, и использовать последовательные обозначения для ее описания. Сначала напишите функцию Python def f(x):.... Затем выясните, как можно вызвать эту функцию несколько раз. Похоже, генератор станет хорошим инструментом для решения вашей первоначальной проблемы.
Подсказка: вы можете сделать что-то вроде x = f(x) в Python. Учитывая математическую подготовку, это может немного сбить с толку. = здесь называется оператором присваивания. Это НЕ то же самое, что = в математике, где вы определяете равенство. ЭТО ОЧЕНЬ ВАЖНОЕ РАЗЛИЧИЕ, СЛЕДУЕТ ПОНЯТЬ, ПРЕЖДЕ ЧЕМ ПРОДОЛЖИТЬ. Извините пожалуйста за шапку, но это действительно важно подчеркнуть. Убедитесь, что вы знаете, что делает оператор присваивания, особенно в таком контексте.






Первым делом нужно объявить свою функцию, в Python есть несколько способов сделать это. Когда функция небольшая, ее обычно определяют как лямбду. Лямбда соответствует синтаксису.
func = lambda parameter1, parameter2, ..., parameter: <return value>
Затем нам нужно будет определить начальные значения, в данном случае я назову конечное значение v и количество итераций N.
Последнее, что нужно сделать, это вызвать функцию N раз, для этого я использую цикл for.
# Define repeating function
a = 5
b = 1
f = lambda x : a * x + b
# Assign values to iterations
v = 0
N = 10
# Stop iterating at Nth value
for i in range(N):
v = f(v)
Благодарим вас за вклад в сообщество Stack Overflow. Возможно, это правильный ответ, но было бы очень полезно предоставить дополнительные пояснения к вашему коду, чтобы разработчики могли понять ваши рассуждения. Это особенно полезно для новых разработчиков, которые не так хорошо знакомы с синтаксисом или пытаются понять концепции. Не могли бы вы отредактировать свой ответ, включив в него дополнительную информацию на благо сообщества?
Итак, вы хотите сохранить все промежуточные значения на пути к конечному значению
N? Нечто подобное обычно хорошо решается с помощьюitertools.accumulate, но совсем не ясно, действительно ли это то, что вы ищете.