Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2022-04-16, 10:32   #1
zhumengxin
初级会员
 
注册日期: 2022-04-16
帖子: 2
声望力: 0
zhumengxin 正向着好的方向发展
默认 关于fmincon函数中非线性约束函数定义的问题

对于x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)这个函数中的参数nonlcon,在给的例子里是如下的:
function [c,ceq] = circlecon(x)
c = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2;
ceq = [];
然后引用的时候@circlecon就好了。
这里的c给了一个表达式,但是我在应用的过程中想要用求解得到的一个参数表达式,我试了以下不可以,会显示:
函数或变量 'f2' 无法识别。

出错 fifth>noncon (第 64 行)
ceq=f2(xx(1),xx(2));

出错 fmincon (第 654 行)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});

出错 fifth (第 61 行)
xx=fmincon(objfun,xx0,A,b,Aeq,beq,lb,ub,@noncon)
请问这要怎么样解决呢?谢谢了!
zhumengxin 当前离线   回复时引用此帖
旧 2022-04-16, 10:34   #2
zhumengxin
初级会员
 
注册日期: 2022-04-16
帖子: 2
声望力: 0
zhumengxin 正向着好的方向发展
默认 回复: 关于fmincon函数中非线性约束函数定义的问题

我是这样写的:
xx=fmincon(objfun,xx0,A,b,Aeq,beq,lb,ub,@noncon)
function [c,ceq] = noncon(xx)
c = [];
ceq=f2(xx(1),xx(2));
end
其中f2是之前求解得到的参数表达式,通过matlabFunction转换后的形式。
zhumengxin 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 01:45


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.