from sympy import diff
from math import sin,cos
def returnfunc(x):
return 3*cos(3*x)+1/(x+2)-sin(x)
def returndiff(differ, x):
differ = str(differ)
differ = differ.replace('x', str(x))
result = eval(differ)
return result
func = '3*cos(3*x)+1/(x+2)-sin(x)'
differ = diff(func)
delta = 1
epsilon = 0.001
x0 = 2
count = 0
while delta>epsilon:
x = x0 - returnfunc(x0) / returndiff(differ, x0)
delta = abs(x-x0)
print(format(x,".3f"))
x0 = x
count += 1
if count > 30:
break
print ('Количество итераций', count)
ZnJvbSBzeW1weSBpbXBvcnQgZGlmZgpmcm9tIG1hdGggaW1wb3J0IHNpbixjb3MKCmRlZiByZXR1cm5mdW5jKHgpOgoJcmV0dXJuIDMqY29zKDMqeCkrMS8oeCsyKS1zaW4oeCkKCmRlZiByZXR1cm5kaWZmKGRpZmZlciwgeCk6CglkaWZmZXIgPSBzdHIoZGlmZmVyKQoJZGlmZmVyID0gZGlmZmVyLnJlcGxhY2UoJ3gnLCBzdHIoeCkpCglyZXN1bHQgPSBldmFsKGRpZmZlcikKCXJldHVybiByZXN1bHQKCmZ1bmMgPSAnMypjb3MoMyp4KSsxLyh4KzIpLXNpbih4KScKZGlmZmVyID0gZGlmZihmdW5jKQpkZWx0YSA9IDEKZXBzaWxvbiA9IDAuMDAxCngwID0gMgpjb3VudCA9IDAKCndoaWxlIGRlbHRhPmVwc2lsb246Cgl4ID0geDAgLSByZXR1cm5mdW5jKHgwKSAvIHJldHVybmRpZmYoZGlmZmVyLCB4MCkKCWRlbHRhID0gYWJzKHgteDApCglwcmludChmb3JtYXQoeCwiLjNmIikpCgl4MCA9IHgKCWNvdW50ICs9IDEKCWlmIGNvdW50ID4gMzA6CgkJYnJlYWsKcHJpbnQgKCfQmtC+0LvQuNGH0LXRgdGC0LLQviDQuNGC0LXRgNCw0YbQuNC5JywgY291bnQp