Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-01-08
年龄: 38
帖子: 3
声望力: 0 ![]() |
![]()
关于fmincon函数求极小值
function f =rod_obj(x) '目标函数 f=-pi*(Dw^2-x(1)^2)*(x(2)*cos((x(3)+x(4))*pi/(2*180))-m*x(5))*n*fi*cos((x(3)+x(4))*pi/(2*180)+bt*pi/180)/(4*cos(bt*pi/180)); function [C,Ceq]=rod_constr(x) '分线性约束 C=[0.3*m-x(2)*cos((x(3)+x(4))*pi/(2*180))]; Ceq=[pi*Dw*tan(x(3)*pi/180)-x(2);pi*x(1)*tan(x(4)*pi/180)-x(2)]; 主程序: Dw=0.4;bt=30;m=1;fi=0.4;n=60; A=[-m -2 0 0 0;2.2*m 1 0 0 0]; b=[-m*Dw 2.2*m*Dw]; Aeq=[];beq=[]; vlb=[0.3*Dw 0 8 25 0.012]; ulb=[0.4*Dw pi*Dw*tan(pi/4-bt*pi/180) 22 40 0.02]; x0=[0.13; 0.44 ;16.3 ;30; 0.016]; options=optimset('largescale','off'); [x,fval]=fmincon('rod_obj',x0,A,b,[],[],vlb,ulb,'rod_constr',options) 我运行出错如下: ??? Error using ==> fmincon at 397 FMINCON cannot continue because user supplied objective function failed with the following error: Undefined function or variable 'Dw'. Error in ==> main at 9 [x,fval]=fmincon('rod_obj',x0,A,b,[],[],vlb,ulb,'rod_constr',options) 恳请高手指教
__________________
:smile: |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21 ![]() |
![]()
从错误提示看,很明显
function f =rod_obj(x) '目标函数 f=-pi*(Dw^2-x(1)^2)*(x(2)*cos((x(3)+x(4))*pi/(2*180))-m*x(5))*n*fi*cos((x(3)+x(4))*pi/(2*180)+bt*pi/180)/(4*cos(bt*pi/180)); function [C,Ceq]=rod_constr(x) '分线性约束 C=[0.3*m-x(2)*cos((x(3)+x(4))*pi/(2*180))]; Ceq=[pi*Dw*tan(x(3)*pi/180)-x(2);pi*x(1)*tan(x(4)*pi/180)-x(2)]; 这两个函数中的DW没有传入,也就是需要你在函数的输入中加入一个新的参数,用来传递DW就可以了
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755 |
![]() |
![]() |