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

How to find out if the Sympy variable is complex?

我正在写一个涉及求解这个方程的代码

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;

一个案例 我 = -0.000581431210287302 - 0.2540334478167*I

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

如何判断变量是否复数?

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

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

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

也可以比较im(i) to 0:如果im(i) == 0。这也适用于 Python 花车。