登录论坛

查看完整版本 : [MATLAB毕业设计] 帮忙看一下一个程序是否又错?


梦奇林
2009-05-18, 22:06
M文件(lin.m):
function f=lin(x)
a=[0.0001:0.0349:0.5236];
for i=1:16
f(i)=abs(1-(asin((2*x(5)*x(4)*sin(x(2))+2*x(3)*x(5)*sin(x(1))-2*x(3)*x(4)*cos(x(2)+x(1))-2*x(5)*x(4)*sin(x(2)-(asin((2*x(5)*x(4)*sin(x(2))+2*x(3)*x(5)*sin(x(1))-2*x(3)*x(4)*cos(x(2)+x(1))-2*x(3)*x(5)*sin(x(1)-a(i)))/2/x(4)/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))+asin(x(3)*cos(x(1)-a(i))/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))-x(2))))/2/x(3)/sqrt(x(5)^2+x(4)^2+2*x(5)*x(4)*sin(x(2)-(asin((2*x(5)*x(4)*sin(x(2))+2*x(3)*x(5)*sin(x(1))-2*x(3)*x(4)*cos(x(2)+x(1))-2*x(3)*x(5)*sin(x(1)-a(i)))/2/x(4)/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))+asin(x(3)*cos(x(1)-a(i))/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))-x(2)))))+asin(x(4)*cos(x(2)-(asin((2*x(5)*x(4)*sin(x(2))+2*x(3)*x(5)*sin(x(1))-2*x(3)*x(4)*cos(x(2)+x(1))-2*x(3)*x(5)*sin(x(1)-a(i)))/2/x(4)/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))+asin(x(3)*cos(x(1)-a(i))/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))-x(2)))/sqrt(x(5)^2+x(4)^2+2*x(5)*x(4)*sin(x(2)-(asin((2*x(5)*x(4)*sin(x(2))+2*x(3)*x(5)*sin(x(1))-2*x(3)*x(4)*cos(x(2)+x(1))-2*x(3)*x(5)*sin(x(1)-a(i)))/2/x(4)/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))+asin(x(3)*cos(x(1)-a(i))/sqrt(x(3)^2+x(5)^2+2*x(3)*x(5)*sin(x(1)-a(i))))-x(2)))))-x(1))/acot(cot(a(i))-0.4865));
end
命令窗口:
x0=[0.0895;0.3932;145;256;645.52];
A=[0 0 -1 0 0;
0 0 0 -1 0;
0 0 0 0 -1];
b=[0 0 -632.5];
[x,fval]=fminimax(@lin,x0)

我是如上输入的!但不知道什么原因,优化结果老是随着x0的改变而改变,而且优化出来的x值中的x(3)、x(4)、x(5)跟初始值一样,只有x(1)、x(2)改变而已!希望高手帮忙看一下!我的QQ:591025352;时刻在线!