matlab算最大值用matlab计算y=x1+x1*x2+x3-x2*x3+x3*x4+134,其中x1到x4范围分别为(1到5),(2到7)(3-11),(4-10),当y最大时的x1,x2,x3,x4,请写出代码,
来源:学生作业帮助网 编辑:作业帮 时间:2024/12/01 19:12:39
matlab算最大值用matlab计算y=x1+x1*x2+x3-x2*x3+x3*x4+134,其中x1到x4范围分别为(1到5),(2到7)(3-11),(4-10),当y最大时的x1,x2,x3,x4,请写出代码,
matlab算最大值
用matlab计算y=x1+x1*x2+x3-x2*x3+x3*x4+134,其中x1到x4范围分别为(1到5),(2到7)(3-11),(4-10),当y最大时的x1,x2,x3,x4,请写出代码,
matlab算最大值用matlab计算y=x1+x1*x2+x3-x2*x3+x3*x4+134,其中x1到x4范围分别为(1到5),(2到7)(3-11),(4-10),当y最大时的x1,x2,x3,x4,请写出代码,
显然y>0;
用fmincon,求最小值
取y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
那么求出来的就是y的最大值
function y=OptimFun(x)
y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
%%%%%%%%%%%%%%%%%%%%%%
clc;clear;
[x,fval]=fmincon(@OptimFun,[1 2 3 4],[],[],[],[],[1 2 3 4],[5 7 11 10])
x =
5 2 11 10
fval =
-248
那么
y=-fval=248
%%%%%%%%%%%%%
可以用循环验证一下
clc;clear;
y=zeros(4*5*8*6+1);
y(1)=0;
for j=1:4*5*8*6;
for x1=1:1:5
for x2=2:1:7
for x3=3:1:11
for x4=4:1:10
y(j+1)=x1+x1*x2+x3-x2*x3+x3*x4+134;
if y(j+1)>y(j)
yy=y(j+1);
a=x1;b=x2;c=x3;d=x4;
j=j+1;
end
end
end
end
end
end
yy
yy =
248
显然y>0;
用fmincon,求最小值
取y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
那么求出来的就是y的最大值
function y=OptimFun(x)
y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
%%%%%%%%%%%...
全部展开
显然y>0;
用fmincon,求最小值
取y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
那么求出来的就是y的最大值
function y=OptimFun(x)
y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
%%%%%%%%%%%%%%%%%%%%%%
clc;clear;
[x,fval]=fmincon(@OptimFun,[1 2 3 4],[],[],[],[],[1 2 3 4],[5 7 11 10])
x =
5 2 11 10
fval =
-248
那么
y=-fval=248
%%%%%%%%%%%%%
可以用循环验证一下
clc;clear;
y=zeros(4*5*8*6+1);
y(1)=0;
for j=1:4*5*8*6;
for x1=1:1:5
for x2=2:1:7
for x3=3:1:11
for x4=4:1:10
y(j+1)=x1+x1*x2+x3-x2*x3+x3*x4+134;
if y(j+1)>y(j)
yy=y(j+1);
a=x1;b=x2;c=x3;d=x4;
j=j+1;
end
end
end
end
end
end
yy
yy =
248
收起