function f=fun(x)
f=0;
global K M L;
for t=1*pi/180:1*pi/180:28*pi/180%x(1)是梯形臂长度 ;x(2)是横拉杆长度;x(3)是安装距离;x(4)是梯形底角
K=1274;M=624;L=2340;
if t<=10*pi/180
w0=1.5;
end
if t<=20*pi/180
w0=1;
else
w0=0.5;
end
x(2)=sqrt((K-M)/2-x(1).*cos(x(4))^2+(x(1).*sin(x(4)-x(3)))^2);
s=(K-M)/2-x(1)*cos(x(4)+t)-sqrt(x(2)^2-(x(1)*sin(x(4)+t)-x(3))^2);
sti=x(4)-acos((x(1)^2+((K-M)/2+s)^2+x(3)^2-x(2)^2)/(2*x(1)*sqrt(((K-M)/2+s)^2+x(3)^2)))-atan(2*x(3)/(K-M+2*s));
stit=acot(cot(t)-K/L);
f=w0*(sti-stit);
end
function[c,ceq]=mycon(x)
c=[x(1)-((K-M)/2-x(1)*cos(x(4)))*sin(10*pi/180)-x(3);(x(3)*sin(x(4)-28*pi/180)+((K-M)/2-x(1)*cos(x(4)))*sin(10*pi/180));42.12/cos(x(4))-x(1);x(1)-62.3/(cos(x(4))-cos(x(4)+28*pi/180));];
ceq=[acos(42.12/x(1))-x(4)];
>> x0=[128,276.54,113,98*pi/180];
lb=[111.8752,100,79,68*pi/180];
ub=[130.0634,300,150,100*pi/180];
[x,fval]=fmincon(@fun,x0,[],[],[],[],lb,ub,@mycon);
错误使用 feval
未定义与 'double' 类型的输入参数相对应的函数 'fun'。
出错 fmincon (line 564)
initVals.f = feval(funfcn{3},X,varargin{:});
原因:
Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.
???