Как использовать цикл (любой), чтобы поместить выходные данные уравнения в то же уравнение и получить новое значение для определенного набора значений в Python?

Я хочу использовать уравнение {Xn=2.6*X*(1-X)} положить начальное значение X как 0,4 и получить 1-е Xn и использовать его в качестве X в том же уравнении, и таким образом получить первые 50 значений.

Вот что я попробовал:

x=float(input("enter the initial guess:"))
xn=2.6*x*(1-x)
print(xn)
for x in xn:
    print(xn)

И

count=0
print(2.6*x*(1-x))
while x>=0.4:
    count+=x
    print(count)

Всего 2 ответа


Вы можете сделать это с помощью цикла

x = 0.4
for i in range(50):
    x = 2.6 * x * (1 - x)
    print(x)

Ничто из этого не имеет смысла, если только вы не предполагаете, что Python может выполнять символическую оценку в стиле пролога, а это невозможно.

Python не сложный язык: у вас есть выражения, которые оцениваются и привязываются к переменной. Похоже, что вы хотите здесь перебрать свое уравнение: применить его к начальному значению, а затем повторно применить к его собственному результату.

AFAIK Python не имеет ни iterate ни unfold как часть своей стандартной библиотеки, но вы можете достаточно легко создать генератор для конкретного случая итерации:

def the_thing(x=0.4):
    while True:
        # swap if you don't want the initial value to be returned
        yield x
        x = 2.6 * x * (1-x)

Затем вы можете перебрать этот раздел:

for x in itertools.islice(the_thing(), 50):
    print(x)

Есть идеи?

10000