作业帮 > 数学 > 作业

用MATLAB 求最小值

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/04/29 13:18:15
用MATLAB 求最小值
Y= -721.1+678.3*x3+...
2184.5*x1.^2-3005.6*x2.^2+44.8*x3.^2-...
1974.3*x1.^3+5157.4*x2.^3+...
7111.1*x1.*x2.^2+53*x1./x3+2432.6*x2.*x3+-122.9*x2./x3
其中X1+X2+X3=1 且都大于0 ,求Y最小值及对应X值.
但是我发现算出的Y值都小于0,这里Y应该大于0.
另外还应再加上一个成本优化目标是Y=21*X1+12*X2+0.003X3
还要求Y最小
用MATLAB 求最小值
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_l271266970(x)
x1=x(1);
x2=x(2);
x3=x(3);
y= -721.1+678.3*x3+...
2184.5*x1.^2-3005.6*x2.^2+44.8*x3.^2-...
1974.3*x1.^3+5157.4*x2.^3+...
7111.1*x1.*x2.^2+53*x1./x3+2432.6*x2.*x3+-122.9*x2./x3;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [y,yeq]=zhidao_l271266970_cond(x)
x1=x(1);
x2=x(2);
x3=x(3);
y=[];
yeq=[x1+x2+x3-1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
返回Matlab输入:
x0=0.5*ones(3,1);
xm=zeros(3,1);
xM=ones(3,1); %x1+x2+x3=1,且各自大于0,意味着它们最大值为1
A=[];
B=[];
Aeq=[];
Beq=[];
[x,ymin]=fmincon('zhidao_l271266970',x0,A,B,Aeq,Beq,xm,xM,'zhidao_l271266970_cond')
%你这个结果不是很理想,因为你的分母里面有变量,计算过程只要这个变量为0,就会有问题.我试过不同初值x0,计算结果差太多了.