利用for循环实现梯度下降法实现函数的最小值问题,例如,求y=2X^3+5x 的最小值。可利用scipy实现函数的求导
代码:
# 利用for循环实现梯度下降法实现函数的最小值问题,例如,求y=2X^3+5x 的最小值。可利用scipy实现函数的求导
from scipy.misc import derivative
# 定义目标函数
def func(x):
return 2 * x ** 3 + 5 * x
# 计算目标函数的导数
def gradient(x):
return derivative(func, x, dx=1e-6, n=1)
# 梯度下降法
def gradient_descent(alpha, num_iterations):
x = 6 # 初始值
for i in range(num_iterations):
grad = gradient(x)
# print(grad)
x = x - alpha * grad
return x
alpha = 0.01
num_iterations = 3
result = gradient_descent(alpha, num_iterations)
print("最小值点 x =", result)
print("最小值点 y =", func(result))