如何在Python中使用梯度下降法求解函数f(x) = x^2?给出一个具体的步骤,包括选择任意初始值x₀,然后根据梯度下降公式迭代更新x值,直到满足f(x)的变化量小于1.0e-6为止,能否详细解释这个过程并提供相应的代码示例?
时间: 2024-12-13 08:19:38 浏览: 22
在Python中,我们可以使用梯度下降算法来最小化函数`f(x)`,比如`f(x) = x^2`。这是一个简单的二次函数,其导数即为梯度,对于这个函数,梯度总是2*x。以下是使用梯度下降法的详细步骤:
1. **确定目标函数**:我们的目标是最小化`f(x) = x**2`。
2. **初始化**:选择一个初始值`x_0`,比如`x_0 = 5`作为搜索起点。这是个非常重要的选择,因为它影响了找到最小值的速度和结果。
3. **计算梯度**:对于函数`f(x)`,梯度`g(x)`就是其一阶导数,即`g(x) = df/dx = 2*x`。
4. **更新规则**:每次迭代,我们沿着负梯度方向更新x的值,新的x值由旧值减去学习率乘以梯度得到。学习率是一个超参数,控制了步长大小,一般会设置为一个小于1的数值,如0.01。
5. **停止条件**:当函数值的变化量小于一个预设的小阈值,比如1.0e-6,我们认为找到了足够接近最小值的点,这时停止迭代。
下面是一个简单的Python代码示例:
```python
def f(x):
return x**2
def gradient_descent(x0, learning_rate=0.01, threshold=1e-6):
x = x0
prev_value = float('inf') # 无限大初始值,用于比较变化量
while abs(prev_value - f(x)) > threshold:
prev_value = f(x)
grad = 2 * x # 梯度
x -= learning_rate * grad # 更新x
return x
# 初始化x0
initial_x = 5
minimized_x = gradient_descent(initial_x)
print(f"Minimized value of x: {minimized_x}")
```
在这个例子中,运行上述代码将找到函数`f(x) = x^2`的最小值点,也就是`x = 0`。
阅读全文