早教吧作业答案频道 -->数学-->
matlab 线性规划min z= -x(2)+2x(3)s.t.x(1)-2x(2)+x(3)=2x(2)-3x(3)+x(4)=1x(2)-x(3) +x(5)=2x(j)>=0 j=1,...5 x()括号中的表示下标用matlab 哥们,看来你是很懂matlab了,有三个等式约束,但是为什么你的st距阵要写成5*5
题目详情
matlab 线性规划
min z= -x(2)+2x(3)
s.t.x(1)-2x(2)+x(3)=2
x(2)-3x(3)+x(4)=1
x(2)-x(3) +x(5)=2
x(j)>=0 j=1,...5
x()括号中的表示下标
用matlab
哥们,看来你是很懂matlab了,
有三个等式约束,但是为什么你的st距阵要写成5*5的呢?还有我看help中写的是Aeq和Beq是等式约束的系数和右端向量,我的题中应该算是等式约束吧,为什么Aeq和Beq都要付成零?为什么要把等式约束的矩阵系数付到st中?(st不是表示了线性规划中不等式约束条件吗?)还有你只给了lb不用给ub吗?放心了,积分不会少了你的!
min z= -x(2)+2x(3)
s.t.x(1)-2x(2)+x(3)=2
x(2)-3x(3)+x(4)=1
x(2)-x(3) +x(5)=2
x(j)>=0 j=1,...5
x()括号中的表示下标
用matlab
哥们,看来你是很懂matlab了,
有三个等式约束,但是为什么你的st距阵要写成5*5的呢?还有我看help中写的是Aeq和Beq是等式约束的系数和右端向量,我的题中应该算是等式约束吧,为什么Aeq和Beq都要付成零?为什么要把等式约束的矩阵系数付到st中?(st不是表示了线性规划中不等式约束条件吗?)还有你只给了lb不用给ub吗?放心了,积分不会少了你的!
▼优质解答
答案和解析
上次的确错了,我又看了看《线性规划》.x(4)和x(5)是不是松弛变量啊?不是的话,就是以下程序.
clear;clc
fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1 0 0 %s.t.x(1)-2x(2)+x(3)=2
0 1 -3 1 0 %x(2)-3x(3)+x(4)=1
0 1 -1 0 1] %x(2)-x(3) +x(5)=2 ;
beq=[2;1;2];
st=[0 0 0 0 0];
b=[0];
lb=zeros(5,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
x =
6.5000
2.5000
0.5000
0.0000
0.0000
fval =
-1.5000
如果是松弛变量,则程序为:
clear;clc
fmin=[0;-1;2]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1]%s.t.x(1)-2x(2)+x(3)=2
st=[0 1 -3 %x(2)-3x(3)+x(4)=1
0 1 -1] %x(2)-x(3) +x(5)=2 ;
beq=[2];
b=[1;2];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
x =
6.5000
2.5000
0.5000
fval =
-1.5000
可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样.
原来那个是错的【注:以下程序是错的,放在这里以纪念自己的鲁莽】
clear;clc
fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3)
st=[1 -2 1 0 0 %s.t.x(1)-2x(2)+x(3)=2
0 1 -3 1 0 %x(2)-3x(3)+x(4)=1
0 1 -1 0 1 %x(2)-x(3) +x(5)=2
0 0 0 0 0
0 0 0 0 0];
b=[2;1;2;0;0]; Aeq=[0 0 0 0 0]; beq=[0];lb=zeros(5,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
Optimization terminated successfully.
x =
3.2500
2.5000
0.5000
0.0000
0.0000
fval = -1.5000
exitflag = 1
output =
iterations:7
cgiterations:0
algorithm:'lipsol'
lambda =
ineqlin:[5x1 double]
eqlin:0
upper:[5x1 double]
lower:[5x1 double]
clear;clc
fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1 0 0 %s.t.x(1)-2x(2)+x(3)=2
0 1 -3 1 0 %x(2)-3x(3)+x(4)=1
0 1 -1 0 1] %x(2)-x(3) +x(5)=2 ;
beq=[2;1;2];
st=[0 0 0 0 0];
b=[0];
lb=zeros(5,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
x =
6.5000
2.5000
0.5000
0.0000
0.0000
fval =
-1.5000
如果是松弛变量,则程序为:
clear;clc
fmin=[0;-1;2]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1]%s.t.x(1)-2x(2)+x(3)=2
st=[0 1 -3 %x(2)-3x(3)+x(4)=1
0 1 -1] %x(2)-x(3) +x(5)=2 ;
beq=[2];
b=[1;2];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
x =
6.5000
2.5000
0.5000
fval =
-1.5000
可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样.
原来那个是错的【注:以下程序是错的,放在这里以纪念自己的鲁莽】
clear;clc
fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3)
st=[1 -2 1 0 0 %s.t.x(1)-2x(2)+x(3)=2
0 1 -3 1 0 %x(2)-3x(3)+x(4)=1
0 1 -1 0 1 %x(2)-x(3) +x(5)=2
0 0 0 0 0
0 0 0 0 0];
b=[2;1;2;0;0]; Aeq=[0 0 0 0 0]; beq=[0];lb=zeros(5,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)
运行结果:
Optimization terminated successfully.
x =
3.2500
2.5000
0.5000
0.0000
0.0000
fval = -1.5000
exitflag = 1
output =
iterations:7
cgiterations:0
algorithm:'lipsol'
lambda =
ineqlin:[5x1 double]
eqlin:0
upper:[5x1 double]
lower:[5x1 double]
看了 matlab 线性规划min...的网友还看了以下:
已知向量a=(2,1),b=(x,y).(1)若x∈{-1,0,1,2},y∈{-1,0,1},求向 2020-03-30 …
已知集合A={x||x小于等于1},B={x||x大于等于a},且A并B=R 求a的取值范围要有过 2020-04-05 …
已知函数f(x)=alnx/(x+1)+b/x,曲线y=f(x)在点(1,f(1))处的切线方程为 2020-05-17 …
已知3x-4/(x-1)(x-2)=A/x-1+B/x-2,求A,B的值1等式左右变为:3x-4/ 2020-07-09 …
因式分解的题...2x-3/x^2-x=A/x-1+B/x,其中A,B为常数,则A+B的值为?已知 2020-07-20 …
设集合A={(x,y)│(y-3)/(x+2)=m+1},B={(x,y)│(m^2-1)x+(m 2020-07-30 …
交集,并集设集合A={X|X>-1},B={X|-2<X<2},则AUB={X|X>-2}这是为什 2020-07-30 …
A={(x,y)|y=x+1},B={(x,y)|y=x^2};求A与B的交并集为什么A并B={( 2020-07-30 …
设U=R,集合A={y|y=根号x-1,x=>1},B={x∈Z丨x^2-4=>0},则下列结论正 2020-07-30 …
设集合A={x|a«X«负1或x»1},B={x|a«X«b}.设集合A={x|a«X«负1或x» 2020-08-02 …