1 function [c,ceq]=yueshufun(x)x1=x(1);x2=x(2);x3=x(3);c=[(x2^2+x3^2-(1-x1)^2)/2*x2*x3-sqrt(3)/2;sqrt(2)/2-(x2^2+x3^2-(1-x1)^2)/2*x2*x3];ceq=[]; %%非线性约束关系函数的输入是一个矩阵2 function H=goal_func(x)x1=x(1);x2=x(2);x3=x(3);x4=x(4);F=0;for i=1:20;%w表示输入角θ。输入角变化180度,分20次,每次变化9度。wi=1*pi*i./20;G=(atan(x1*sin(x4)/(1-x1*cos(x4)))+acos((x1^2-x2^2+x3^2+1-2*x1*cos(x4))... /(2*x3*sqrt(x1^2+1-2*x1*cos(x4))))-atan((x1*sin(x4+wi))/(1-x1*cos(x4+wi)))... -acos((x1^2-x2^2+x3^2+1-2* x1*cos(x4+wi))/(2*x3*sqrt(x1^2+1-2*x1*cos(x4+wi))))-6*sin(pi*wi/180)/pi)^2;F=F+G;end %运算之后是数学模型中的目标函数。H=F-r*(log(-x1-x2+x3+1)+log(-x1+x2-x3+1)+log(-x1+x2+x3-1)+log(x1-0.1)+log(-x1+0.5)... +log(x2-0.1)+log(-x2+1.4)+log(x3-0.1)+log(-x3+0.9)... +log(x2^2+x3^2-(1-x1)^2)/2*x2*x3-sqrt(3)/2+log(sqrt(2)/2-(x2^2+x3^2-(1-x1)^2)/2*x2*x3)); %%目标函数中r没有定义,在目标函数中定义r。3 A中,楼主要求的参数是3个,但是G中用到了x4,那你的x中就必须有四个值,而不是三个值;4 x0=[0.3;1;0.6;2*pi/3;];初始值x0应该是列向量5 options=optimset('Largescale','on','display','iter','tolx',1e-4); 是用来控制fmincon的各种参数,tolx是优化终止条件;LargeScale是采用的算法;display选择iter显示迭代次数;6 注意log(a)a不能为0,我测试了下,提示log运算中a出现0的情况;