matlab里用fmincon函数遇到问题求解答!

我在用fmincon的时候遇到参数不足的错误,但是不知道哪里出问题了,求老师们帮忙

这是我的代码:

function [va,lamda] = optxestimatecon(wv,wa,g)
coder.extrinsic('myfmincon' )

x0=[1;1];
y=myfmincon(x0,wv,wa,g);
va=y(1);
lamda=y(2);
end

function y=myfmincon(x0,wv,wa,g)
f=@(x)myfuncon(x,wv,wa,g);
A = [];b = [];
Aeq = []; beq = [];
x=[0;0];
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);

y=x;

end

function F = myfuncon(x,wv,wa,g)


F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));
end

然后是报错的:

输入参数的数目不足。

出错 myfmincon>myfuncon (line 17)
F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));

出错 fmincon (line 552)
      initVals.f = feval(funfcn{3},X,varargin{:});

出错 myfmincon (line 6)
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);

出错 optxestimatecon (line 5)
y=myfmincon(x0,wv,wa,g);

原因:
    Failure in initial objective function evaluation. FMINCON cannot continue.

function F = myfuncon(x,wv,wa,g)
global wv wa g;
F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));
end

function y=myfmincon(wv,wa,g)
global wv wa g;
A = [];b = [];
Aeq = []; beq = [];
x0=[0;0];
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);
y=x;
end
end

function [va,lamda] = optxestimatecon(wv,wa,g)
global wv wa g;
coder.extrinsic('myfmincon' )
x0=[1;1];
y=myfmincon(wv,wa,g);
va=y(1);
lamda=y(2);
end

把变量变成全局变量

这里我输入了wv=[1;1;1] wa=[1;1;1]g=9.8

第24行你是不是括号匹配的不对,改成

F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y