如何解决指数方程式?

15次观看(过去30天)
Syam女士
Syam女士 于2020年8月7日
我有一个订单(KX1)的传染媒介。该向量中的每个元素,Theta(k),需要等同于指数术语,并且需要找到相应的角度x,其中角度具有它在0到2pi之间的约束。。
等式:
theta(k)= exp(j * x)
约束:
我写了以下代码。
Syms.X
g = theta-exp(1j。* x)== 0
假设(x> = 0)
假设(x <= 2 * pi)
sol =解决(g,x);
如果k = 10,我在运行此代码时
Theta = [1.0000;1.0000;-55.1130;1.0000;1.0000;1.0000;1.0000;1.0000;1.0000;-16.2240;];
matlab给出结果
G =
- exp(x*1i) == 0 . exp(x*1i) = 0 . exp(x*1i) = 0 . exp(x*1i) = 0
562949107552839/562949953421312 - exp(x * 1i)== 0
- exp(x * 1i) - 1939115653123881/35184372088832 == 0
9007195107837447/9007199254740992 - exp(x * 1i)== 0
9007194646232807/9007199254740992 - exp(x * 1i)== 0
9007192947970379/9007190379/9007199254740992 - exp(x * 1i)== 0
- exp(x*1i) == 0
- exp(x*1i) == 0
9007190556467521/9007199254740992 - exp(x * 1i)== 0
- exp(x * 1i) - 4566663147494699/281474976710656 == 0
sol =
空信谊:0-by-1
但我觉得应该获得X的解决方案。如何纠正此错误?帮助要求。提前致谢。

答案(1)

沃尔特罗伯森
沃尔特罗伯森 于2020年8月7日
空的答案是正确的。
解决()时,您要询问变量的值,使所有方程式为true 同时 。但是您的等式都在单个变量x中,并且没有一个值x可以同时满足所有方程式,因此空答案是正确的。
您应该单独解决方程式:
sol = arrayfun(@solve,g,'制服',0)
结果的第3和第10条条目将为空。这样的原因不是没有满足方程的X的值,而是没有满足那些θ产生的约束的x的值 - 那些特别的θ需要复值x,这样作为pi - log(55113/1000)* 1i
2评论
沃尔特罗伯森
沃尔特罗伯森 20月8日
Theta = [1.0000;1.0000;-55.1130;1.0000;1.0000;1.0000;1.0000;1.0000;1.0000;-16.2240;];
Syms.X
g = theta-exp(1j。* x)== 0;
假设(x> = 0)
假设(x <= 2 * pi)
sol = arrayfun(@solve,g,'制服',0);
Celldisp(Sol)

登录评论。

类别

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!