所以我想在 Python 中做一个梯度下降,这样我就可以找到 f 的全局最小值,其中 x=10,学习率为 0.01,epsilon 为 0.00001 和最大值。迭代次数为 10000
# parameters to set
x = 10 # Starting value of x
alpha = 0.01 # Set learning rate
epsilon = 0.00001 # Stop algorithm when absolute difference between 2 consecutive x-values is less than epsilon
max_iter = 10000 # set maximum number of iterations
# Define function and derivative of function
f = lambda x: x**4-3*x**3+15
fprime = lambda x: 4*x**3-9*x**2
# Initialising
diff = 1 # initialise difference between 2 consecutive x-values
iter = 1 # iterations counter
# Now Gradient Descent
while diff > epsilon and iter < max_iter: # 2 stopiing criteria
x_new = x - alpha * fprime(x) # update rule
print("Iteration ", iter, ": x-value is:", x_new,", f(x) is: ", f(x_new) )
diff = abs(x_new - x)
iter = iter + 1
x = x_new
print("The local minimum occurs at: ", x)
但问题是,当我运行整个代码时,它只能打印出 5 次迭代,然后我遇到 OverFlowError 消息。
