如何确定Sympy变量是否复杂?

时间:2018-02-18 17:31:47

标签: python sympy complex-numbers

我正在编写一个涉及解决这个等式的代码

X = solve(Theta_Mod_Eqn*Ramp_Equation/(x+PT) - C, x)

我正在使用sympy库,现在这个等式有7个根,很少是复杂的,很少是真实的。我无法隔离它们,因为isinstance(i,complex)总是返回true

for i in X:
    if not isinstance(i,complex):
        if (i>-0.01 and i<maxSheaveDisp):
            A = i;

一例     i = -0.000581431210287302 - 0.2540334478167 * I

In:i == complex
Out[39]: False

如何确定变量是否复杂?

1 个答案:

答案 0 :(得分:2)

实数集是复数集的子集。所以,每个实数都是一个复数。例如,3是复数。

要问的正确问题是如何确定根是否真实。为此,如果我是SymPy符号,您可以使用i.is_real

for i in X:
    if i.is_real:
        if (i>-0.01 and i<maxSheaveDisp):
            A = i

还可以比较im(i) to 0im(i) == 0。这也适用于Python浮点数。