AI | Gradient Descent Method
import numpy as np
#define the fuction and its gradient
def f(x,y):
return x**2+y**2+2*(np.sin(1.5*(x**2+y**2)))**2+2
def fx(x,y): #df/dx
return 2*x*(3*np.sin(3*(x**2+y**2))+1)
def fy(x,y): #df/dy
return 2*y*(3*np.sin(3*(x**2+y**2))+1)
#Gradient Descent
x0=1
y0=1
xk=x0
yk=y0
t0=0.0001 #step size
tk=t0
eps=10**(-10)
iter=0
max_iter=100000
while True:
dxk=-fx(xk,yk)
dyk=-fy(xk,yk)
xkp1=xk+tk*dxk
ykp1=yk+tk*dyk
iter = iter+1
norm_dist=np.sqrt((xkp1-xk)**2+(ykp1-yk)**2)
if norm_dist<eps:
print("Converges at : ",iter)
print("Min f(x) is attained at (", xkp1, ",", ykp1,")")
break
if iter>max_iter:
print("Not converge!")
xk=xkp1
yk=ykp1
Reference
この問題について(AI | Gradient Descent Method), 我々は、より多くの情報をここで見つけました https://velog.io/@hrpp1300/AI-Gradient-Descent-Methodテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol