matlab求解多元函数仅保留实数解

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.0000i0.0000 + 1.1768i0.3787 + 0.0000iy =0.0000 + 0.0000i0.0000 + 2.9419i0.9468 + 0.0000i

如果只想要第三个解的第一项,就是实数解,可以约束solve

[x,y]=solve(eq1,eq2,x,y,"real",true);

这样求出来的就是只有一个解了。

x =0.3787
y =0.9468


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部