使用梯度下降法计算z = (x-1)^2 + (y-3)^4-1的最小值。
Machine Learning 入门
import numpy as np
x=4
y=10
a=0.01
dy=dx=0.001
def f(x,y):
return (x-1)**2+(y-3)**4-1
while True:
# 求关于x的偏导数的数值解
xx = (f(x+dx,y)-f(x,y))/dx
# 求关于y的偏导数的数值解
yy = (f(x,y+dy)-f(x,y))/dy
x1 = x - a*xx
y1 = y - a*yy
if f(x,y)==f(x1,y1):
break
x=x1
y=y1
print(f(x,y))
print(x,' ',y)