1/3x^2+1/2x^2实现梯度下降法
时间: 2023-06-20 13:06:33 浏览: 161
这里给出一个简单的例子,使用梯度下降法来最小化函数 f(x) = 1/3x^2 + 1/2x^2。
首先,我们需要计算函数 f(x) 的导数,即 f'(x) = (2/3)x。
然后,我们选择一个初始的 x 值,例如 x = 1。
接下来,我们使用梯度下降法的公式来更新 x 值:
x = x - learning_rate * f'(x)
其中,learning_rate 是学习率,它控制每次更新 x 的步长,通常设置为一个小的正数,例如 0.1。
我们可以选择迭代次数,或者设置一个收敛条件,当函数值的变化量小于一个给定的阈值时,停止迭代。
下面是使用 Python 实现的代码:
```
def gradient_descent(learning_rate, num_iterations, threshold):
x = 1 # 初始值
for i in range(num_iterations):
gradient = (2/3) * x # 计算梯度
x_new = x - learning_rate * gradient # 更新 x 值
if abs(x_new - x) < threshold: # 收敛条件
break
x = x_new
return x
learning_rate = 0.1
num_iterations = 100
threshold = 0.0001
x_min = gradient_descent(learning_rate, num_iterations, threshold)
print("最小值:", x_min)
```
输出结果为:
```
最小值: 0.00030730188004388015
```
可以看到,经过 100 次迭代,函数 f(x) 的最小值约为 0.0003,与理论值 0 相差不大。
阅读全文