matlab中的fmincon函数运行出错,老是显示最后一句话不对,求大神指导 5

functionf=myobj(x)f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));function[c,ceq]=mycon(x)c=... function f=myobj(x)
f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));
function [c,ceq] = mycon(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
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(@myobj,x0,A,b,[],[],lb,ub,@mycon);
展开
 我来答
lhmhz
高粉答主

2019-02-18 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

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



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式