主题:初值问题
我的程序如下:
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
我想知道,为什么结果老是和初值那么相似,进行其它赋初值也一样,是程序问题还是其它问题。多谢
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
我想知道,为什么结果老是和初值那么相似,进行其它赋初值也一样,是程序问题还是其它问题。多谢