2.7.2.1 入门: 一维最优化
使用scipy.optimize.brent() 来最小化一维函数。它混合抛物线近似与区间策略。
二元函数的Brent方法: 在3次迭代后收敛, 因为,稍后二元近似精确了。
非凸函数的Brent方法: 注意最优化方法避免了局部最小值其实是因为运气。
In [4]:
from scipy import optimize
def f(x):
return -np.exp(-(x - .7)**2)
x_min = optimize.brent(f) # 实际上在9次迭代后收敛!
x_min
Out[4]:
0.6999999997839409
In [4]:
x_min - .7
Out[4]:
-2.160590595323697e-10
注意: Brent方法也可以用于限制区间最优化使用scipy.optimize.fminbound()
注意: 在scipy 0.11中, scipy.optimize.minimize_scalar() 给出了一个一维标量最优化的通用接口。