发布网友 发布时间:2022-04-24 17:40
共2个回答
热心网友 时间:2023-10-27 08:52
你看一下以下程序是不是你要的结果:
fun1='-x(1)*x(2)^2*x(3)';
x0=[0,1,1];
aeq=[2,3,1];beq=[4]; % 仅有线性等式约束.
lb=zeros(3,1);
[x,fval,exitflag]=fmincon(fun1,x0,[],[],aeq,beq,lb,[],[]);
e1=exitflag;x1=x;fv1=fval;
fun2='2*x(1)^2-4*x(1)*x(2)+4*x(2)^2-6*x(1)-3*x(2)';
a=[1,1;4,1];b=[3,9]; % 仅有线性不等式约束.
x0=[1,1];lb=zeros(2,1);
[x,fval,exitflag]=fmincon(fun2,x0,a,b,[],[],lb,[]);
e2=exitflag;x2=x;fv2=fval;
fun3='x(1)^2-x(1)*x(2)+2*x(2)^2-x(1)-x(2)';
a=[-1,1];b=[-3]; % 有线性不等式约束和线性等式约束.
aeq=[1,1];beq=[4];x0=[1,1];
[x,fval,exitflag]=fmincon(fun3,x0,a,b,aeq,beq,[],[],[]);
e3=exitflag;x3=x;fv3=fval;
e=[e1,e2,e3]
x=[x1,x2,x3]
fv=[fv1,fv2,fv3]
运行结果如下:
e =
5 1 1
x =
0.5001 0.66661 0.99997 1.95 1.05 3.5 0.5
fv =
-0.22222 -11.025 7
热心网友 时间:2023-10-27 08:53
fun1='-x(1)*x(2)^2*x(3)';%%%你的lb是1b,会报错!!!!,还有是符号比如;
x0=[0,1,1];
aeq=[2,3,1];beq=[4]; % 仅有线性等式约束.
lb=zeros(3,1);
[x,fval,exitflag]=fmincon(fun1,x0,[],[],aeq,beq,lb,[],[]);
e1=exitflag;x1=x;fv1=fval;
fun2='2*x(1)^2-4*x(1)*x(2)+4*x(2)^2-6*x(1)-3*x(2)';
a=[1,1;4,1];b=[3,9]; % 仅有线性不等式约束.
x0=[1,1];lb=zeros(2,1);%zeros 敲错了
[x,fval,exitflag]=fmincon(fun2,x0,a,b,[],[],lb,[]);
e2=exitflag;x2=x;fv2=fval;
fun3='x(1)^2-x(1)*x(2)+2*x(2)^2-x(1)-x(2)';
a=[-1,1];b=[-3]; % 有线性不等式约束和线性等式约束.
aeq=[1,1];beq=[4];x0=[1,1];
[x,fval,exitflag]=fmincon(fun3,x0,a,b,aeq,beq,[],[],[]);
e3=exitflag;x3=x;fv3=fval;
e=[e1,e2,e3]
x=[x1,x2,x3]
fv=[fv1,fv2,fv3]