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