A=[55.329061,25.037464,17.000000,0.543272,-0.639865,0.543533;
55.204829,25.357138,17.500000,0.546965,-0.636712,0.543533;
55.078750,25.676088,18.000000,0.550638,-0.633537,0.543533;
54.950829,25.994303,18.500000,0.554293,-0.630342,0.543533;
54.821068,26.311772,19.000000,0.557930,-0.627125,0.543533;
54.689474,26.628487,19.500000,0.561548,-0.623888,0.543533;
54.556050,25.944434,20.000000,0.565147,-0.620629,0.543533;
54.420801,27.259604,20.500000,0.568727,-0.617350,0.543533;
54.283732,27.573988,21.000000,0.572289,-0.614050,0.543533;
54.144845,27.887573,21.500000,0.575831,-0.610729,0.543533;
54.004148,28.200349,22.000000,0.579354,-0.607389,0.543533;
53.861643,28.512306,22.500000,0.582858,-0.604027,0.543533;
53.717337,28.823434,23.000000,0.586342,-0.600646,0.543533;
53.571233,29.133722,23.500000,0.589806,-0.597244,0.543533;
53.423338,29.443160,24.000000,0.593250,-0.593822,0.543533]
n=15
for i=1:n
syms v e u s l
f=45*pi/180;
g=20*pi/180;
h=20;
a=74;
w=1;
x=A(i,1)
y=A(i,2)
z=A(i,3)
o=A(i,4)
p=A(i,5)
q=A(i,6)
equ1=-q+cos(v)*sin(g)*sin(f)+cos(g)*cos(f);
equ2=-o*cos(e)-p*sin(e)-sin(v)*sin(g);
equ3=x*cos(e)+y*sin(e)+u*sin(v)-a;
equ4=u*cos(v)*sin(f)-(tan(g)*u+h)*cos(f)+s*sin(f)-z;
equ5=u*cos(v)*cos(f)+(tan(g)*u+h)*sin(f)+s*cos(f)+x*sin(e)-y*cos(e)-l;
[e,l,s,u,v]=solve(equ1,equ2,equ3,equ4,equ5,e,l,s,u,v)
e=vpa(e,4)
l=vpa(l,4)
s=vpa(s,4)
u=vpa(u,4)
v=vpa(v,4)
B=zeros(15,5)
B(i,1)=e
B(i,2)=l
B(i,3)=s
B(i,4)=u
B(i,5)=v
end
运行后发现,当i=1时,解得4组结果如下:
e =
-2.798
1.065
.3433
-2.079
l =
130.2
96.57
32.30
-63.93
s =
178.3
69.26
30.59
-78.40
u =
155.4
29.21
-15.57
-141.7
v =
2.095
2.095
-2.095
-2.095
导致无法正确存入B,我只要其中的特定一组解 1.065,96.57,69.26,29.21,2.095,即v,e都大于0的一组
故有此一问:解方程组时如何直接舍负或者另有别的高招
跪求高人指点!!!
谢谢!!!
[本帖最后由 jakejuncao 于 2008-12-16 21:33 编辑]