最速下降法python
时间: 2023-07-06 18:36:20 浏览: 64
最速下降法是一种求解无约束优化问题的方法,其思想是利用梯度信息来确定搜索方向,并以最速下降的方式逼近极小值点。在Python中,可以使用NumPy库来实现最速下降法。
下面是一个简单的示例代码,用于最小化函数 f(x) = x1^2 + x2^2:
``` python
import numpy as np
def f(x):
return x[0]**2 + x[1]**2
def grad_f(x):
return np.array([2*x[0], 2*x[1]])
def steepest_descent(x0, max_iter=1000, tol=1e-6, alpha=0.1):
x = x0
for i in range(max_iter):
grad = grad_f(x)
if np.linalg.norm(grad) < tol:
break
x = x - alpha * grad
return x
x0 = np.array([1.0, 1.0])
x_opt = steepest_descent(x0)
print("Optimal solution:", x_opt)
print("Minimum value:", f(x_opt))
```
在这个示例中,我们定义了函数 f(x) 和其梯度 grad_f(x),然后利用最速下降法 steepest_descent() 来求解最小化问题。我们初始化初始点为 x0=[1.0, 1.0],最大迭代次数为1000,收敛容差为1e-6,步长为0.1。最终输出最优解和对应的最小值。