fork download
  1. from sympy import diff
  2. from math import sin,cos
  3.  
  4. def returnfunc(x):
  5. return 3*cos(3*x)+1/(x+2)-sin(x)
  6.  
  7. def returndiff(differ, x):
  8. differ = str(differ)
  9. differ = differ.replace('x', str(x))
  10. result = eval(differ)
  11. return result
  12.  
  13. func = '3*cos(3*x)+1/(x+2)-sin(x)'
  14. differ = diff(func)
  15. delta = 1
  16. epsilon = 0.001
  17. x0 = 2
  18. count = 0
  19.  
  20. while delta>epsilon:
  21. x = x0 - returnfunc(x0) / returndiff(differ, x0)
  22. delta = abs(x-x0)
  23. print(format(x,".3f"))
  24. x0 = x
  25. count += 1
  26. if count > 30:
  27. break
  28. print ('Количество итераций', count)
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty