![](https://csdnimg.cn/release/download_crawler_static/87517930/bg3.jpg)
例 1:用优化工具求
f
x
x
2
4x 6
的极小值,初始点取 x=0。
解:首先在当前 MATLAB 的工作目录下建立目标函数文件文件:
function y= FunUnc1(x)
% function 必须为小写,如果 F 为大写则不行
y=x^2+4*x-6;
%平方符号输入时用键盘上数字 6 上的符合,否则错误
然后启动优化工具:
在
Solver
下拉选框中选择
fminunc;
Algorithm
下拉选框中选择
Medium scale;
目标函数栏输入@FunUnc1; %运算时输入函数不知什么原因老有错误,直接输入目标函数却没
有错误
初始点输入 0,其余参数默认;
单击“Start”按钮运行。
从求解结果可以看出,函数的极小值为-10,且在 x=-2 时取到,而且从 Current iteration 框可以看
出迭代的步数。
对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中
直接输入@(x)x^2+4*x-6,也可求出结果。
此题能否用进退法和黄金分割法(或二次插值法)求解吗?
不能,要用进退法或黄金分割法得自己先编程序,然后才能调用这样的函数。
2、无约束优化(fminsearch 求解器)
fminsearch 求解器也可用来求解无约束优化问题,它有时候能求解fminunc 不能解决的问题。
例 2:用优化工具求
f
x
x
2
3x 2
的极小值,初始点取 x=-7,比较 fminunc 和 fminsearch 求
出的结果。
解:通过数学计算,可以得到本例中的极小点有两个 x1=1,x2=2。
启动优化工具:
在
Solver
下拉选框中选择
fminunc;
Algorithm
下拉选框中选择
Medium scale;
目标函数栏输入@(x)abs(x^2-3*x+2);
初始点输入-7,其余参数默认;
单击“Start”按钮运行。
Fminunc 求得的结果为 x=,显然数值不对,它是未加绝对值时函数
f
x
x 3x 2
的极小值。
2