用Matlab求解优化方法问题
- 格式:doc
- 大小:60.50 KB
- 文档页数:3
用Matlab 求解优化方法问题
编译环境:MA TLAB V ersion 7.8.0.347(R2009a )
第2章5(1)
3
,2,1,0 10432 232 ..32 min 321321321=≥=++=++-+-=i x x x x x x x t s x x x z i
Step1.将约束条件中的等式条件转化为小于等于,得到右端条件
===============>
3
,2,1,0 10432 10432 232 232 ..321321321321=≥-<---<++-<--<++-i x x x x x x x x x x x x x t s i
Step2.在matlab 中给lb b A cT ,,,赋值: c=[1;-2;3];
A=[-2 1 3;2 -1 -3;2 3 4;-2 -3 -4]; b=[2;-2;10;-10]; lb = zeros(3,1);
% 输入条件0≥i x
%matlab 中没有给定的函数lp ,通过查询Matlab 帮助文档使用函数linprog 。
%[x,fval] = linprog(...)函数计算线性规划问题的最优解x 和最优值fval % [x,fval] = linprog(c,A,b,[],[],lb); Step3.保存M 文件并运行。
Step4.在命令窗口中键入x ,输出最优解: x =
0.5000 3.0000
0.0000
Step5.在命令窗口中键入fval ,输出最优值为: fval =
-5.5000
第2章5(3)
3
,2,1,0 45 22 3 ..3 min 32121321321=≥≤++-≥+-≥++-+=i x x x x x x x x x t s x x x z i
Step1.将约束条件中的等式条件转化为小于等于,得到右端条件
===============>
3
,2,1,0 45 22 3 ..32121321=≥≤++--≤--≤---i x x x x x x x x x t s i
Step2.在matlab 中给lb b A cT ,,,赋值: c=[1;3;-1];
A=[-1 -1 -1;1 -2 0;-1 5 1];
b=[-3;-2;4];
lb = zeros(3,1);
[x,fval] = linprog(c,A,b,[],[],lb);
Step3.保存并运行。
Exiting: One or more of the residuals, duality gap, or total relative error
has stalled:
the primal appears to be infeasible (and the dual unbounded).
(The dual residual < TolFun=1.00e-008.)
输出无基本可行解。
第3章题1
求:2)2
=x
x
f
x
+
(
)(
1
)
(
min-
该问题为函数在无限区间的一维搜素问题。
Matlab中并没有书中给定的函数fmin。
搜索Matlab的帮助文档使用fminbnd。
Fminbnd:Find minimum of single-variable function on fixed interval是寻找合适区间上的一维函数的最小值。
本题要求无限区间,设置搜索区间为[-10000,10000]进行计算。
解:在命令行中输入以下命令:
>> f='(x(1)+1)*(x(1)-2)^2';
>> [x,fval] = fminbnd(f,-10000,10000) %搜索区间[-10000,10000]
输出:
x =
-1.0000e+004
fval =
-1.0003e+012
函数在+∞
x时函数值趋近于负无穷。
>
-
第三章题3
求:x
(
min-
=,搜索区间为[1,2]
f x5
)
e
x
该问题为函数在有限区间的一维搜素问题。
使用函数fminbnd。
解:使用fminbnd。
>> f='exp(x)-5*x';;
>> [x,fval]= fminbnd (f,1,2) %选定初始值为1
输出:
x =
1.6094
fval =
-3.0472
第三章题17
求:2122
12)1()(100)(min x x x x f -+-=
(1)使用fminunc 。
Fminunc :Find minimum of unconstrained multivariable function 查找多元函数在非限制条件下的最小值。
Fminunc 是用拟牛顿法求最小值,适合高阶连续的函数。
解:在命令行中输入以下命令:
>> f='100*(x(2)-x(1)^2)^2+(1-x(1))^2'; >> [x,fval]=fminunc(f,[0,0]) %选定初始值为(0,0) 输出: x =
1.0000 1.0000 fval =
1.9474e-011
(2)使用fminsearch 。
是用单纯形法求函数最小值,适合处理阶次低但断点多的函数 解:在命令行中输入以下命令: >> f='100*(x(2)-x(1)^2)^2+(1-x(1))^2'; >> [x,fval]=fminsearch(f,[0,0]) 输出: x =
1.0000 1.0000 fval =
3.6862e-010。