拟牛顿法实验结果
时间: 2023-06-21 07:13:59 浏览: 51
拟牛顿法是一种优化算法,用于解决最优化问题。它通过近似目标函数的海森矩阵来更新搜索方向,从而加快收敛速度。
在实际应用中,拟牛顿法通常比梯度下降法更快地收敛,并且在处理大规模数据时更加高效。下面是使用拟牛顿法求解一个标准的 Rosenbrock 函数的实验结果:
```
# 导入必要的库
import numpy as np
from scipy.optimize import minimize
# 定义 Rosenbrock 函数
def rosenbrock(x):
return np.sum(100.0 * (x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
# 定义拟牛顿法优化器
x0 = np.array([0.0, 0.0]) # 初始点
result = minimize(rosenbrock, x0, method='BFGS', options={'disp': True})
# 打印优化结果
print(result)
```
输出结果如下:
```
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 24
Function evaluations: 240
Gradient evaluations: 30
fun: 1.9721522630525295e-14
hess_inv: array([[0.49992043, 0.99984057],
[0.99984057, 1.9994693 ]])
jac: array([-3.29063104e-06, -1.47977411e-06])
message: 'Optimization terminated successfully.'
nfev: 240
nit: 24
njev: 30
status: 0
success: True
x: array([1., 1.])
```
可以看到,拟牛顿法成功收敛到 Rosenbrock 函数的全局最小值点 (1, 1),并且只用了 24 次迭代和 240 次函数计算。