zhukov000

Метод градиентного спуска

Nov 11th, 2021
943
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.63 KB | None | 0 0
  1. # исходная функция
  2. f = lambda x,y: x * x + 2 * y * y + 2 * x - 4 * y + 1
  3. # производная по x
  4. fdx = lambda x,y: 2 * x + 2
  5. # производная по y
  6. fdy = lambda x,y: 4 * y - 4
  7.  
  8. eps = 0.01
  9. x, y = -0.9, 0.9
  10. dx, dy = fdx(x, y), fdy(x, y)
  11. i = 0 # номер итерации
  12. while max(abs(dx), abs(dy)) >= eps:
  13.     k = ((2 * x + 2) * dx + (4 * y - 4) * dy) / (2 * (dx ** 2 + 2 * dy ** 2))
  14.     x, y = x - k * dx, y - k * dy   # новое приблежение
  15.     i += 1
  16.     print('Итерация {:d}, значения x = {:.4f}, y = {:.4f}'.format(i, x, y))
  17.     dx, dy = fdx(x, y), fdy(x, y)
  18.  
  19.  
  20.  
Advertisement
Add Comment
Please, Sign In to add comment