Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. import numpy as np
  2. from algopy import UTPM
  3. import math
  4. from numpy import *
  5.  
  6. # --- Эту функцию программирует обучающийся!!! ----
  7. # функция вычисления градиента функции f в точке r
  8. # на выходе - вектор градиента в виде numpy array
  9.  
  10. def f(r):
  11. f1 = r[0]**4 + 2*r[1]**2
  12. return f1
  13.  
  14. def gradfun(f, r):
  15. # задаем вычисление градиента функции f
  16. x = UTPM.init_jacobian(r)
  17. y = f(x)
  18. grad = UTPM.extract_jacobian(y)
  19. return grad
  20.  
  21. # --- Эту функцию программирует обучающийся!!! ----
  22. # maxiter - ограничивает кол-во итераций,
  23. # т.е. список не должен превышать maxiter+1 элемент !
  24. def gradsteps(f, r0, epsg=0.1, alfa=0.01, maxiter=100):
  25. # организуем градиентный спуск
  26. xlist = [r0]
  27. iter = 0
  28. while (abs(gradfun(f, r0)) >= epsg):
  29. #iter = iter + 1
  30. r0 = r0 - (alfa * gradfun(f, r0))
  31. xlist.append(r0.tolist())
  32. return xlist
  33.  
  34. r = (1, 0)
  35. r0 = (1, 1)
  36. epsg=0.5
  37. alfa=0.1
  38. maxiter=100
  39. print(gradfun(f, r))
  40. print(gradsteps(f, r0, epsg = 0.1, alfa = 0.01, maxiter = 100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement