1 / 15
文档名称:

MatLab 数学建模-MatLab5.doc

格式:doc   大小:100KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MatLab 数学建模-MatLab5.doc

上传人:Q+1243595614 2017/10/20 文件大小:100 KB

下载得到文件列表

MatLab 数学建模-MatLab5.doc

文档介绍

文档介绍:MatLab & 数学建模
授课: 唐静波(九江学院理学院)

第五讲数值计算(二)
线性优化
用命令x=lp(C,A,b,vlb,vub)。
[例] 最小值线性优化
f(x)=-5x1-4x2-6x3
x1-x2+x3≦20
3x1+2x2+4x3≦42
3x1+2x2≦30
(0≦x1, 0≦x2,0≦x3)
First, enter the coefficients:
f = [-5; -4; -6]
A = [1 -1 1
3 2 4
3 2 0];
b = [20; 42; 30];
lb = [0,0,0]; % x的最小值[0,0,0]
ub = [inf,inf,inf];
Next, call a linear programming routine:
x= lp(f,A,b,lb,ub);
Entering x
x =



实际此命令改为:
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
对以上的问题可做如下的操作:
First, enter the coefficients:
f = [-5; -4; -6];
A = [1 -1 1
3 2 4
3 2 0];
b = [20; 42; 30];
lb = zeros(3,1);
Next, call a linear programming routine:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
x =



fval =
-
exitflag =
1
output =
iterations: 6
cgiterations: 0
algorithm: 'lipsol'
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
[例] 线性优化
Min -400x1-1000x2-300x3+200x4
-2x2 + x3 + x4=0
2x1 +3x2 <=16
3x1 +4x2 <=24
x1, x2, x3, x4>=0; x3<=5
c=[-400,-1000,-300,200]; %目标函数系数
A=[0 -2 1 1; 2 3 0 0; 3 4 0 0]; %约束条件系数
b=[0; 16; 24];
xLB=[0,0,0,0]; % x取值范围的最小值
xUB=[inf,inf,5,inf]; % x取值范围的最大值
x0=[0,0,0,0]; % x取迭代初始值
nEq=1; % 约束条件中只有一个= 号,其余为<=
x=lp(c,A,b,xLB,xUB,x0,nEq)
disp(['最优值为: ',num2str(c*x)])
结果:
x =




最优值为-5700
非线性优化
用命令x=constr('f ',x0)。
[例] 最小值非线性优化
Min f(x)=-x1x2x3,
-x1-2x2-2x3≤0,
x1+2x2+2x3≤72,
初值: x = [10; 10; 10]
第一步:编写M文件
function [f,g]=myfun(x)
f=-x(1)*x(2)*x(3);
g(1)=-x(1)-2*x(2)-2*x(3);
g(2)=x(1)+2*x(2)+2*x(3)-72;
第二步:求解
在MATLAB工作窗中键入
x0=[10,10,10];
x=constr('myfun',x0)即可.
x =

[例] 非线性优化
Min f(x)=-x1x2
(x1+ x2)x3<=0;
x1, x2>=0; x3>=2;
第一步:编写M文件
function [F,G]=fxxgh(x)
F=-x(1)*x(2);
G(1)=(x(1)+x(2))*x(3)-120;
第二步:求解
在MATLAB工作窗中键入
x=[1,1,1]; % x取迭代初始值
options(13)=0; % 约束条件中有0个= 号,其余为<=
XL=[0,0,2]; % x