fork download
  1. import math
  2.  
  3. def funcF(x, y):
  4. return((2 * x) - math.cos(y + 1)) # math.sin(x + 1) - y - 1.2
  5.  
  6. def funcG(x, y):
  7. return(y + math.sin(x) + 0.4) # 2 * x + math.cos(y) - 2
  8.  
  9. def derivedF_x(x):
  10. return(2) # math.cos(x + 1)
  11.  
  12. def derivedG_x(x):
  13. return (math.cos(x)) # 2
  14.  
  15. def derivedF_y(y):
  16. return (math.sin(y + 1)) # -1
  17.  
  18. def derivedG_y(y):
  19. return(1) # -math.sin(y)
  20.  
  21. def Determ(func1, func2, func3, func4):
  22. return(func1 * func4 - func2 * func3)
  23.  
  24. def NewtonMethod(el_x, el_y):
  25. e = 0.0001
  26. k = 0
  27. dN = Hn = Kn = 0
  28. dN = Determ(derivedF_x(el_x), derivedF_y(y), derivedG_x(x), derivedG_y(el_y))
  29. Hn = Determ(derivedF_y(y), funcF(el_x, el_y), derivedG_y(el_y), funcG(el_x, el_y)) / dN
  30. Kn = Determ(funcF(el_x, el_y), derivedF_x(el_x), funcG(el_x, el_y), derivedG_x()) / dN
  31.  
  32. #Нахождение корней сис-мы
  33. while(abs(Hn) >= e and abs(Kn) >= e):
  34. el_x += Hn
  35. el_y += Kn
  36. dN = Determ(derivedF_x(el_x), derivedF_y(y), derivedG_x(x), derivedG_y(el_y))
  37. Hn = Determ(derivedF_y(y), funcF(el_x, el_y), derivedG_y(el_y), funcG(el_x, el_y)) / dN
  38. Kn = Determ(funcF(el_x, el_y), derivedF_x(el_x), funcG(el_x, el_y), derivedG_x()) / dN
  39. k += 1
  40. print("\nКорни системы:")
  41. print(" x =", "%.5f" % el_x, "y = ", "%.5f" % el_y)
  42. print("Количество итераций:", k)
  43.  
  44. arg = [-3, -2.6, -2.2, -1.8, -1.4, -1, -0.6, -0.2, 0.2, 0.6, 1]
  45. x, y = [], []
  46.  
  47. #Заполнение значениями ф-й
  48. for i in arg:
  49. y.append(math.cos(i + 1) / 2) # math.sin(i + 1) - 1.2
  50. x.append(-math.sin(i)-0.4) # -math.cos(i)/2 + 1
  51.  
  52. #Определение начальных точек
  53. el_x, el_y = x[5], y[5]
  54. print("Начальные точки приближения:\n x =", "%.2f" % el_x, "\n y =", el_y)
  55.  
  56. NewtonMethod(el_x, el_y)
Runtime error #stdin #stdout #stderr 0.14s 23568KB
stdin
Standard input is empty
stdout
Начальные точки приближения:
 x = 0.44 
 y = 0.5
stderr
Traceback (most recent call last):
  File "./prog.py", line 56, in <module>
  File "./prog.py", line 28, in NewtonMethod
  File "./prog.py", line 16, in derivedF_y
TypeError: can only concatenate list (not "int") to list