单变量最小化算法和举例

单变量最小化可以单独解决对应的最优化问题,但更多的是作为更复杂最优化问题的基础进行使用。常用的单变量最小化算法有黄金分割法和Brent法等。下面结合一个实例介绍在MATLAB和Python中怎样求解单变量最小化问题。

对边长为3m的正方形铁板,在4个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?

假设剪去的正方形的边长为x,则水槽的容积为

\[f(x)=(3-2x{)}^{2}x\]

现在要求在区间(0,1.5)上确定一个x,使\(f(x)\)最大化。

Python中可以使用SciPy包进行求解。使用该包前需要先进行安装。在电脑连接互联网的情况下,在Power Shell窗口键入:

pip install scipy

进行安装。使用SciPy包中的optimize子包进行求解。

在Python IDLE Shell窗口键入下面的命令行,先定义计算目标函数的函数f:

code.python
>>> def f(x):
	return -(3-2*x)**2*x

然后从scipy.optimize子包中导入minimize_scalar函数进行求解。

code.python
>>> from 400">scipy.optimize import minimize_scalar
>>> res=minimize_scalar(f,bounds=(0,1.5),method=class="text-primary">'bounded')
>>> res
     fun: -1.9999999999962486
 message: class="text-primary">'Solution found.'
    nfev: 10
  status: 0
 success: class="text-secondary">True
       x: 0.5000007907227136

即剪掉的正方形的边长为0.5m时水槽的容积最大。