看了仁兄的帖子 深受启发 万分感谢
按照您的方法 我编写了如下程序 但出现了错误
第一个M文件
x0=[2.7;25.4;8.5;9.3;pi/3];%输入x(1) x(2) x(3) x(4) x(5)的初始值
[x,f]=fmincon(@objfun0,x0,[],[],[],[],[],[],@confun0)
第二个M文件 目标函数
function f=objfun0(x)
b=66.47*pi/180;
w=50/3;
m=4.3;
l=25;
e=sin(x(5))+m/x(1);
g=cos(x(5))+l/x(1);
h=(x(1)^2-x(2)^2+x(3)^2+l^2+m^2)/(2*x(1)*x(3))+(l*cos(x(5))+m*sin(x(5)))/x(3);
i=(2*atan((e-(e^2+g^2-h^2)^0.5)/(g+h)))*180/pi;
j=diff(i)
f1=(acos((l+x(1)*cos(x(5))-x(3)*cos(i))/x(2))+b-pi/2)^2
f2=-x(1)*sin(x(5))*w-x(4)/x(2)*((-x(1)*sin(x(5))*w+x(3)*sin(i)*j)*cos(b)-(x(1)*cos(x(5))*w-x(3)*cos(i)*j)*sin(b));
f=f1+f2
第三个M文件 约束条件
function [c,ceq]=confun0(x)
l1=2.5;
u1=2.9;
l2=23;
u2=26;
l3=8;
u3=9.5;
l4=8.4;
u4=10.2;
l5=64*pi/180;
u5=104*pi/180;
c=[l1-x(1);
x(1)-u1;
l2-x(2);
x(2)-u2;
l3-x(3);
x(3)-u3;
l4-x(4);
x(4)-u4;
l5-x(5);
x(5)-u5];
ceq=[];
运行第一个文件
出现如下错误 :
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In fmincon at 260
In jiangda at 2
j =
[]
f1 =
0.0228 - 0.3136i
f =
[]
??? Error using ==> optim\private\nlconst
FUN must return a non-empty objective function.
Error in ==> fmincon at 498
[X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in ==> jiangda at 2
[x,f]=fmincon(@objfun0,x0,[],[],[],[],[],[],@confun0)
到底哪里出了错? 还有 f= [] 是什么意思啊?
望不奢赐教 虚心向您学习