我的程序如下:
function A=myfun(m) 
m1=m(1);
m2=m(2);
m3=m(3);
%nonliner functions
u=[  10 20 30 40 50 60 ];
x=[ 33 34 35 36 37 38 ];
y=[  101 102 103 104 105 106 ];
z=[  1000 1500 1600 880 2200 980 ];
   for i=1:6
       r(i)=sqrt(x(i)^2+y(i)^2+z(i)^2) ;
       F(i)=cos(m2)*(x(i)*y(i)*cos(m1)^2+(y(i)^2-x(i)^2)*cos(m1)*sin(m1)-x(i)*y(i)*sin(m1)^2)+sin(m2)*(x(i)*z(i)*sin(m1)-y(i)*z(i)*cos(m1));
      P(i)=cos(m2)^2*(y(i)^2-x(i)^2)*cos(m1)^2-4*x(i)*y(i)*cos(m1)*sin(m1)-(y(i)^2-x(i)^2)*sin(m1)^2+cos(m1)*sin(m2)*(2*x(i)*z(i)*cos(m1)+2*y(i)*z(i)*sin(m1))+sin(m2)^2*(y(i)^2-x(i)^2)*cos(m1)^2-2*x(i)*y(i)*cos(m1)*sin(m1)+(x(i)^2-z(i)^2)*sin(m1)^2;
  end
  
  H=1/r(2)-(u(2)/u(1))*1/r(1);

   K=(u(2)/u(1))*((2/r(1)^3) *(cos(2*m3)*F(1)+(sin(2*m3)/2)*P(1)))-(2/r(2)^3)*(cos(2*m3)*F(2)+(sin(2*m3)/2)*P(2));
 w=(1/(1/r(2)-(u(2)/u(1))*1/r(1)))*((u(2)/u(1))*(2/r(1)^3)*(cos(2*m3)*F(1)+sin(2*m3)*P(1)*1/2)-(2/r(2)^3)*(cos(2*m3)*F(2)+(sin(2*m3)/2)*P(2)));
    for i=1:4
  s(i)=K*(1/r(i+2)-(u(i+2)/u(1))*1/r(1))-H*((u(i+2)/u(1))*(2/r(1)^3)*(cos(2*m3)*F(1)+sin(2*m3)*P(1)*1/2)-(2/r(i+2)^3)*(cos(2*m3)*F(i+2)+(sin(2*m3)/2)*P(i+2)));
end
  A=s(1)^2+s(2)^2+s(3)^2+s(4)^2;
//////////////////////////////////
clear
clc
m0=[-136.58;93.09;4.3];           % Make a starting guess at the solution
[m,favl,eixtflag]=fminsearch(@myfun,m0)
运行结果:
m =

 -139.6919
   97.6244
    4.1264


favl =

  3.1089e-020


eixtflag =

     1
我想知道,为什么结果老是和初值那么相似,进行其它赋初值也一样,是程序问题还是其它问题。多谢