参考官网:Scipy.
单变量函数最优化的快速求解
很多时候我们只需要一个单变量函数(即一个以标量为输入的函数)的最小值。在这种情况下,有些方法可以更快的去进行优化。这些都可以从
minim_scalar
函数中获得,它提出了几种算法。
无约束的最小化(method=‘brent’)
实际上,有两种方法可以用来最小化单变量函数:Brent
和golden
,但golden
只是出于学术目的,很少使用。这两种方法可以通过minim_scalar
中的方法参数分别选择。brent
使用布伦特的算法来定位最小值。
示例如下:
from scipy.optimize import minimize_scalar
f = lambda x: (x - 2) * (x + 1)**2
res = minimize_scalar(f, method='brent')
print(res.x)
其结果为1
有界的最小化(method=‘bounded’)
比如在
x
=
5
x=5
x=5的附近寻找
J
1
(
x
)
J_1(x)
J1(x)的最小值。minimize_scalar
可以将其限制在
[
4
,
7
]
[4,7]
[4,7]之间,其结果为
x
m
i
n
=
5.3314
x_{min}=5.3314
xmin=5.3314
from scipy.special import j1
from scipy.optimize import minimize_scalar
res = minimize_scalar(j1, bounds=(4, 7), method='bounded')
print(res.x)