梯度法 写出计算梯度的python代码
时间: 2024-10-28 11:01:04 浏览: 29
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
5星 · 资源好评率100%
梯度法是一种优化算法,用于寻找函数的最小值。它基于目标函数关于输入变量的导数(梯度)。在最简单的形式下,它迭代更新每个变量,使其朝着负梯度方向移动,即降低函数值的方向。
在Python中,我们可以使用NumPy库来计算梯度。假设我们有一个简单的一元二次函数`f(x) = x**2`,其导数就是`f'(x) = 2*x`,以下是计算和应用梯度的基本代码:
```python
import numpy as np
# 定义目标函数
def function(x):
return x**2
# 定义梯度函数
def gradient_function(x):
return 2 * x
# 初始化点
x_current = 0
learning_rate = 0.01
while True:
# 计算当前点的梯度
grad = gradient_function(x_current)
# 更新点的位置
x_new = x_current - learning_rate * grad
# 打印进度
print(f"Current x: {x_new}, Gradient: {grad}")
# 检查是否接近极小值(例如达到一定的精度)
if abs(grad) < 1e-6 or abs(function(x_new) - function(x_current)) < 1e-6:
break
# 更新当前点
x_current = x_new
```
这段代码是一个基本的梯度下降过程,但在实际应用中,可能需要更复杂的循环控制和更高效的优化策略,如批量梯度下降、随机梯度下降等。
阅读全文