beale函数用随机梯度下降法优化的代码加中文注释
时间: 2023-06-18 12:06:13 浏览: 50
# 导入必要的包
import numpy as np
# 定义Beale函数
def beale(x):
return (1.5 - x[0] + x[0]*x[1])**2 + \
(2.25 - x[0] + x[0]*x[1]**2)**2 + \
(2.625 - x[0] + x[0]*x[1]**3)**2
# 定义Beale函数的梯度
def beale_grad(x):
dx = np.zeros_like(x)
dx[0] = 2*(1.5 - x[0] + x[0]*x[1])*(x[1]-1) + \
2*(2.25 - x[0] + x[0]*x[1]**2)*(x[1]**2) + \
2*(2.625 - x[0] + x[0]*x[1]**3)*(x[1]**3)
dx[1] = 2*(1.5 - x[0] + x[0]*x[1])*x[0] + \
2*(2.25 - x[0] + x[0]*x[1]**2)*2*x[0]*x[1] + \
2*(2.625 - x[0] + x[0]*x[1]**3)*3*x[0]*x[1]**2
return dx
# 随机梯度下降法优化Beale函数
def sgd_beale(x0, alpha=0.01, max_iter=1000, tol=1e-6):
x = x0.copy()
for i in range(max_iter):
dx = beale_grad(x)
x -= alpha * dx
if np.linalg.norm(dx) < tol:
break
return x
# 测试代码
x0 = np.array([1.0, 1.0])
x_opt = sgd_beale(x0)
print("最优解:", x_opt)
print("最优值:", beale(x_opt))