Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- from algopy import UTPM
- import math
- from numpy import *
- # --- Эту функцию программирует обучающийся!!! ----
- # функция вычисления градиента функции f в точке r
- # на выходе - вектор градиента в виде numpy array
- def f(r):
- f1 = r[0]**4 + 2*r[1]**2
- return f1
- def gradfun(f, r):
- # задаем вычисление градиента функции f
- x = UTPM.init_jacobian(r)
- y = f(x)
- grad = UTPM.extract_jacobian(y)
- return grad
- # --- Эту функцию программирует обучающийся!!! ----
- # maxiter - ограничивает кол-во итераций,
- # т.е. список не должен превышать maxiter+1 элемент !
- def gradsteps(f, r0, epsg=0.1, alfa=0.01, maxiter=100):
- # организуем градиентный спуск
- xlist = [r0]
- iter = 0
- while (abs(gradfun(f, r0)) >= epsg):
- #iter = iter + 1
- r0 = r0 - (alfa * gradfun(f, r0))
- xlist.append(r0.tolist())
- return xlist
- r = (1, 0)
- r0 = (1, 1)
- epsg=0.5
- alfa=0.1
- maxiter=100
- print(gradfun(f, r))
- print(gradsteps(f, r0, epsg = 0.1, alfa = 0.01, maxiter = 100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement