Advertisement
Pug_coder

Untitled

May 30th, 2023
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. import numpy as np
  2.  
  3.  
  4. def f(x, y):
  5. return np.log(1 + 3 * (x ** 2) + 5 * (y ** 2) + np.cos(x - y))
  6.  
  7.  
  8. def dx(x, y):
  9. return (6 * x - np.sin(x - y)) / (
  10. 1 + np.cos(x - y) + 3 * (x ** 2) + 5 * (y ** 2)
  11. )
  12.  
  13.  
  14. def dy(x, y):
  15. return -(np.sin(y - x) - 10 * y) / (
  16. np.cos(y - x) + 5 * (y ** 2) + 3 * (x ** 2) + 1
  17. )
  18.  
  19.  
  20. def dxdx(x, y):
  21. return (
  22. (6 - np.cos(x - y)) * (np.cos(x - y) + 3 * (x ** 2) + 5 * (y ** 2) + 1)
  23. - ((6 * x - np.sin(x - y))) ** 2
  24. ) / (((np.cos(x - y) + 3 * (x ** 2) + 5 * (y ** 2) + 1)) ** 2)
  25.  
  26.  
  27. def dxdy(x, y):
  28. return (
  29. np.cos(y - x) * (np.cos(y - x) + 5 * (y ** 2) + 3 * (x ** 2) + 1)
  30. - (10 * y - np.sin(y - x)) * (np.sin(y - x) + 6 * x)
  31. ) / (((np.cos(y - x) + 5 * (y ** 2) + 3 * (x ** 2) + 1)) ** 2)
  32.  
  33.  
  34. def dydy(x, y):
  35. return (
  36. (10 - np.cos(y - x))
  37. * (np.cos(y - x) + 5 * (y ** 2) + 3 * (x ** 2) + 1)
  38. - ((10 * y - np.sin(y - x))) ** 2
  39. ) / (((np.cos(y - x) + 5 * (y ** 2) + 3 * (x ** 2) + 1)) ** 2)
  40.  
  41.  
  42. def phi_1(x, y):
  43. return -(dx(x, y) ** 2) - (dy(x, y) ** 2)
  44.  
  45.  
  46. def phi_2(x, y):
  47. return (
  48. dxdx(x, y) * (dx(x, y) ** 2)
  49. + 2 * dxdy(x, y) * dx(x, y) * dy(x, y)
  50. + dydy(x, y) * (dy(x, y) ** 2)
  51. )
  52.  
  53.  
  54. def grad(x, y):
  55. return max(dx(x, y), dy(x, y))
  56.  
  57.  
  58. if __name__ == "__main__":
  59. xk = 0.1
  60. yk = 0.1
  61. eps = 0.001
  62. gradient = np.inf
  63.  
  64. c = 0
  65. #print(phi_1(xk, yk))
  66. #print(phi_2(xk, yk))
  67. while eps < abs(gradient):
  68. t = -(phi_1(xk, yk)) / phi_2(xk, yk)
  69. xk, yk = xk - t * dx(xk, yk), yk - t * dy(xk, yk)
  70. gradient = grad(xk, yk)
  71. c += 1
  72. print(
  73. f"iteration {c} | x: {round(xk, 6)}, y: {round(yk, 6)}, f(x,y)={f(xk, yk)} ,gradient: {gradient}"
  74. )
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement