如何获得真正的数字?

时间:2018-01-31 16:54:01

标签: python numpy sympy

我在多项式上使用roots,我需要将根与0进行比较。当我使用根时代码断开invalid comparison method。我已查看cmath库但没有{ {1}}方法

real(myvariable)

1 个答案:

答案 0 :(得分:1)

通常,re(z)是你如何在SymPy中获取复数的真实部分。但这里还有其他问题。

  1. roots返回一个字典,其中值编码多重性。你的代码忽略了多重性,只需添加1.更好地使用这些值,或者使用multiple=True的{​​{1}}标志,这使得它返回一个列表,重复多个根。
  2. roots只会返回激进派中可表达的根。对于度数最多为4的多项式,这些都是它们,但是对于更高的度数,您可能会遗漏部分或全部根。 roots函数适用于这些情况:它将根的索引作为第二个参数。
  3. 因此,我举两个例子。首先,使用带有rootof标志的roots,因此它返回一个列表而不是一个字典:

    multiple

    可以将这些值与0进行比较。

    其次,更高次多项式:我们不再期望根在自由基中。

    z = symbols('z')
    p = Poly([3, 4, 5, 2], z)
    rts = roots(p, multiple=True)
    print([re(val) for val in rts])
    

    输出:

    z = symbols('z')
    p = Poly([3, 4, 5, 2, 7, 5, 9], z)
    for k in range(degree(p)):
        print(re(rootof(p, k).n()))
    

    这是有道理的,因为具有实系数的多项式的复根有共轭对。