一维搜索问题应用实例

【例1】在长为350cm、宽为260cm的长方形不锈钢板的四角各剪去一个小正方形,做成一个无盖的储水箱,试确定正方形的边长,使储水箱的容积最大。

假设剪去的正方形的边长为x,则的取值范围为0~130cm,水槽的容积为

\[f\left( x \right)=x\left( 350-2x \right)\left( 260-2x \right)\]

现在要求在区间(0,130)上确定一个x,使\(f(x)\)最大化。因为MATLAB最优化工具箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求\(-f(x)\)最小化。

首先编写M文件fminbndtest.m:

code.matlab
function f = myfun(x)
f = - x*(350-2*x)*(260-2*x);

然后在命令窗口调用fminbnd函数:

code.matlab
>> [x,fval]=fminbnd(@fminbndtest,0,130)

得到问题的解:

code.matlab
x =
    49.1997
fval =
  -2.0004e+06

即当剪掉的正方形的边长为49.1997cm时,水槽的容积最大,为2.0004e+06cm3。