matlab求解这样一个二元方程组,如果不加限制条件的话,求出来会有三个解:
clc;
clear all;
syms y x
z=3;
x1=0.4;
y1=1;
eq1=-x1+(x/sqrt(x^2+y^2))*(sqrt(x^2+y^2+z^2)/(tand(acosd(sqrt((x^2+y^2)/(x^2+y^2+z^2))))));
eq2=-y1+(y/sqrt(x^2+y^2))*(sqrt(x^2+y^2+z^2)/(tand(acosd(sqrt((x^2+y^2)/(x^2+y^2+z^2))))));
[x,y]=solve(eq1,eq2,x,y);
x=double(x)
y=double(y)
如下所示,其中前两个都是伪解:
x =
0.0000 + 0.0000i
0.0000 + 1.1768i
0.3787 + 0.0000i
y =
0.0000 + 0.0000i
0.0000 + 2.9419i
0.9468 + 0.0000i
如果只想要第三个解的第一项,就是实数解,可以约束solve
[x,y]=solve(eq1,eq2,x,y,"real",true);
这样求出来的就是只有一个解了。
x =0.3787
y =0.9468