MATLAB优化问题
例1:求解线性规划问题:maxf=2x1+5x2s.tx1<=4;x2<=3;x1+2*x2<=8;x1>=0;x2>=0________________________...
例1:求解线性规划问题:
max f=2x1+5x2
s.t x1<=4; x2<=3; x1+2*x2<=8; x1>=0; x2>=0
____________________________________________________________
程序:
f=[-2 -5];
A=[1 0;0 1;1 2];
b=[4;3;8];
[x,fval]=linprog(f,A,b)
f=fval*(-1)
结果: x = 2
3
fval = -19.0000
maxf = 19
_______________________________________________________
程序:
f=[-2 -5];
A=[1 0;0 1;1 2];
b=[4;3;8];
ub=[0;0]
[x,fval]=linprog(f,A,b,[],[],[],ub)
f=fval*(-1)
结果:
x =
1.0e-013 *
0
-0.2842
fval =
1.4211e-013
f =
-1.4211e-013
____________________________________________________
我感觉两个程序应该出一样的的结果,为什么会不一样呢,那个对啊,我是初学者,请大家指点一下
第二个约束条件是不是更充分啊 展开
max f=2x1+5x2
s.t x1<=4; x2<=3; x1+2*x2<=8; x1>=0; x2>=0
____________________________________________________________
程序:
f=[-2 -5];
A=[1 0;0 1;1 2];
b=[4;3;8];
[x,fval]=linprog(f,A,b)
f=fval*(-1)
结果: x = 2
3
fval = -19.0000
maxf = 19
_______________________________________________________
程序:
f=[-2 -5];
A=[1 0;0 1;1 2];
b=[4;3;8];
ub=[0;0]
[x,fval]=linprog(f,A,b,[],[],[],ub)
f=fval*(-1)
结果:
x =
1.0e-013 *
0
-0.2842
fval =
1.4211e-013
f =
-1.4211e-013
____________________________________________________
我感觉两个程序应该出一样的的结果,为什么会不一样呢,那个对啊,我是初学者,请大家指点一下
第二个约束条件是不是更充分啊 展开
3个回答
展开全部
MATLAB是一种解释性语言,从运行效率来说肯定远不如其他基本语言。但还是有些方法可以提高运行速度的:
1,MATLAB擅长于矩阵运算,但并不适用于循环,能不用循环的地方尽量用矩阵运算代替;
2,对于大维度的矩阵,要预先确定它的维度,比如用zeros(a,b,c)预先定义好,这样每次给矩阵赋值的时候就不用改变维度了,对运算速度的提高很明显,这点你可以用MATLAB自带的tic和toc命令测试。
3.对于多重循环的将长的循环放在内循环。还有对有相似功能的命令的选择也对速度有影响。
如果对于计算量特别大的程序,用MATLAB是不怎么合适的哦,你可以把计算部分用其他语言,比如FORTRAN来实现。
1,MATLAB擅长于矩阵运算,但并不适用于循环,能不用循环的地方尽量用矩阵运算代替;
2,对于大维度的矩阵,要预先确定它的维度,比如用zeros(a,b,c)预先定义好,这样每次给矩阵赋值的时候就不用改变维度了,对运算速度的提高很明显,这点你可以用MATLAB自带的tic和toc命令测试。
3.对于多重循环的将长的循环放在内循环。还有对有相似功能的命令的选择也对速度有影响。
如果对于计算量特别大的程序,用MATLAB是不怎么合适的哦,你可以把计算部分用其他语言,比如FORTRAN来实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询