|
[求助]
MATLAB求约束极值,求得极值和极值点坐标后,将极值点坐标反代函数,函数值与极值相异已有1人参与
我求极值用的是MATLAB中fmincon函数,求得极值和极值点坐标后,将极值点坐标反带回函数,发现函数值与极值不一样。很奇怪,不不知道为什么,因为我的计算原理很简单,麻烦大佬帮忙看下(解决问题可发红包,有偿,我的QQ137905372)
以下是我的函数表达式,运算所得q的表达式就是我的函数表达式。下面的是约束条件(附件里是我的m文件,我将q的表达式复制粘贴到一个函数文件里)
clc
clear
syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
H=20;
h=10;
b=5;
r=20000;
c=10000;
f=22/180*pi;
a0=25/180*pi;
k=1;
v1=sin(x5-x4-a0-2*f)/cos(x2-x3-x4-2*f);
v01=sin(x3-x2+x5-a0-0.5*pi)/cos(x2-x3-x4-2*f);
v12=v1*sin(x1+x2-x3)/sin(x1+x2+2*f);
v2=v1*sin(x3+2*f)/sin(x1+x2+2*f);
v03=sin(x8-x7+x10+a0-0.5*pi)/cos(x7-x8-x9-2*f);
v3=sin(pi+x9-x10-a0+2*f)/cos(x7-x8-x9-2*f);
v34=v3*sin(x6+x7-x8)/sin(x6+x7+2*f);
v4=v3*sin(x8+2*f)/sin(x6+x7+2*f);
ce=h*sin(x2)/sin(x1+x2);
cd=h*sin(x1)/sin(x1+x2);
cn=(cd^2+b^2-2*cd*b*cos(1.5*pi-x2))^0.5;
n1=asin(b*sin(1.5*pi-x2)/cn);
n2=asin(cd*sin(1.5*pi-x2)/cn);
bc=cn*sin(x4-n2)/sin(x3+x4-n1-n2);
bn=cn*sin(x3-n1)/sin(x3+x4-n1-n2);
bf=(bn^2+H^2-2*bn*H*sin(x4))^0.5;
n3=asin(H*cos(x4)/bf);
n4=asin(bn*cos(x4)/bf);
af=bf*cos(x5-a0-n4)/sin(x5);
ab=bf*cos(a0+n4)/sin(x5);
s1=0.5*h*ce*sin(x1);
s2=0.5*cd*b*sin(1.5*pi-x2)+0.5*bc*cn*sin(x3-n1);
s3=0.5*af*ab*sin(x5)+0.5*bn*H*cos(x4);
ij=h*sin(x6)/sin(x6+x7);
hj=h*sin(x7)/sin(x6+x7);
nj=(b^2+ij^2-2*b*ij*cos(1.5*pi-x7))^0.5;
m1=asin(ij*sin(1.5*pi-x7)/nj);
m2=asin(b*sin(1.5*pi-x7)/nj);
kj=nj*sin(x9-m1)/sin(x9+x8-m1-m2);
nk=nj*sin(x8-m2)/sin(x8+x9-m1-m2);
fk=(nk^2+H^2-2*nk*H*sin(x9))^0.5;
m3=asin(H*cos(x9)/fk);
m4=asin(nk*cos(x9)/fk);
fm=fk*cos(a0-m4+x10)/sin(x10);
mk=fk*cos(a0-m4)/sin(x10);
s4=0.5*h*hj*sin(x6);
s5=0.5*b*ij*sin(1.5*pi-x7)+0.5*nj*kj*sin(x8-m2);
s6=0.5*H*nk*sin(0.5*pi-x9)+0.5*fm*mk*sin(x10);
pr=r*((s3+s6)*cos(x5-a0-f-0.5*pi)+s1*v2*cos(x1+f)+s2*v1*cos(x3-x2+f)+s4*v4*cos(x6+f)+s5*v3*cos(x8-x7+f));
pc=c*cos(f)*(ce*v2+cd*v12+bc*v1+bn*v01+ab+mk+nk*v03+kj*v3+ij*v34+hj*v4);
q=(pc-pr)/(b*v1*cos(x3-x2+f)+b*v3*cos(x8-x7+f)+k*h*v2*sin(x1+f)+k*h*v4*sin(x6+f))
下面是我的约束条件和fmincon的命令
clc
clear
t0 = [30/180*pi;110/180*pi;110/180*pi;40/180*pi;120/180*pi;30/180*pi;110/180*pi;110/180*pi;40/180*pi;96/180*pi];
A=[ 0 1 -1 0 -1 0 0 0 0 0 ;...
0 -1 1 1 0 0 0 0 0 0 ;...
0 0 0 -1 1 0 0 0 0 0 ;...
-1 -1 1 0 0 0 0 0 0 0 ;...
0 0 -1 0 0 0 0 0 0 0 ;...
1 1 0 0 0 0 0 0 0 0 ;...
0 0 0 0 0 0 1 -1 0 -1 ;...
0 0 0 0 0 0 0 0 -1 1 ;...
0 0 0 0 0 0 -1 1 1 0 ;...
0 0 0 0 0 -1 -1 1 0 0 ;...
0 0 0 0 0 1 1 0 0 0 ;...
0 0 0 0 0 0 0 -1 0 0 ;...
-1 0 0 0 0 0 0 0 0 0 ;...
0 -1 0 0 0 0 0 0 0 0 ;...
0 0 -1 0 0 0 0 0 0 0 ;...
0 0 0 -1 0 0 0 0 0 0 ;...
0 0 0 0 -1 0 0 0 0 0 ;...
0 0 0 0 0 -1 0 0 0 0 ;...
0 0 0 0 0 0 -1 0 0 0 ;...
0 0 0 0 0 0 0 -1 0 0 ;...
0 0 0 0 0 0 0 0 -1 0 ;...
0 0 0 0 0 0 0 0 0 -1 ];
b=[-115/180*pi;54/180*pi;241/180*pi;0/180*pi;36/180*pi;144/180*pi;-65/180*pi;191/180*pi;54/180*pi;0/180*pi;144/180*pi;36/180*pi;0;0;0;0;0;0;0;0;0;0];
Aeq=[ 0 0 0 0 1 0 0 0 0 1 ];
beq=[216/180*pi];
[t,fval]=fmincon('my41',t0,A,b,Aeq,beq) |
|