matlab中的fmincon函数运行出错的最大问题是,k、p不能是变量,而是一个具体的数值。
建议这样来改代码
k=0.95717,p =0.48538
%syms k
A=[1 -1;k+2 -2;k -2*k];
b=[0;k-1;1-k];
Aeq=[];
beq=[];
lb=[0;0];
ub=[1;1];
x0=[0.5;0.5];
[x,fval,exitflag]=fmincon(@(x)myobj(k,x),x0,A,b,[],[],lb,ub,@(x)mycon(p,x))
function f=myobj(k,x)
f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));
end
function [c,ceq] = mycon(p,x)
c=[] ;
%syms p
ceq(1)=2*(2*x(2)-2*x(2)^2+2*x(1)*x(2)-x(1)-x(1)^2)-p; %=0
end