Проверка итерации с фиксированной точкой - PullRequest
0 голосов
/ 20 декабря 2018

Я должен написать код, который находит корни кубического полинома и проверяет, сходится ли он и где.Я написал код, используя различные подсказки, хотя у меня смешанные чувства, когда он работает.Мой код возвращает набор значений, но, по какой-то причине есть отклонение, например, вместо того, чтобы взять x = 1, он принимает x = 1.0000000000000007, и он отбрасывает определенные результаты (в полиноме я взял один из корней равен 0, иэто трудно заметить в результате, это легко увидеть для корней -0,5 и 1)

Я очень сомневаюсь, что когда он правильно проверяет сходимость, предполагается, что часть

if (x>10):
        print("rozbieżny")
        break

проверить (rozbieżny означает, что не сходится) Это правильно?

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

Спасибо за ваше время (и, надеюсь, помочь).

x=0
def f(x):
    f=x**3.0-(x**2.0/2.0)-(x/2.0)
    return (f)

def frange(start, stop, krok):
    i=start
    while i < stop :
        yield i
        i += krok

a=-2.0
b=2.0
c=0.1       

for x in frange(a,b,c):
    print("pierwszy x",x)
    for i in range (5):
        if (x>10):
            print("rozbieżny")
            break
        else:
            x=x-f(x)
        if  (x<10):
            print(x)
...