如果条件使用 sympy 方程求解器/ sympy 非常慢

if condition using sympy equation solver/ sympy very slow

我想用以下参数求解这个方程:

gamma = 0.1
F = 0.5
w = 0
A = symbols('A')

a = 1 + w**4 -w**2 + 4*(gamma**2)*w**2
b = 1 - w**2

sol = solve(a*A**2 + (9/16)*A**6 + (3/2)*b*A**4 -F**2)

list_A = []
for i in range(len(sol)):
    if(type( solutions[i] )==float ):
        print(sol[i])
        list_A = sol[i]

但是,正如预期的那样,我得到了一些实数和复数,我想删除复数,只保留浮点数。但是我实现的这个条件是无效的,因为 sol[i] 的类型是 sympy.core.add.Add for complex 或 sympy.core.numbers.Float for floats。 我的问题是,如何修改我的条件以使其仅适用于获取浮点值? 另外,有什么办法可以加快速度吗?如果我将它放入一个循环中以获得许多 omega 值,它会非常慢。 这是我第一次使用 sympy

当它能够验证与符号假设相关的解决方案时,它会;因此,如果您告诉 SymPy A 是真实的,那么——如果它可以验证解决方案——它只会显示真实的解决方案:

>>> A = symbols('A',real=True)
>>> sol = solve(a*A**2 + (9/16)*A**6 + (3/2)*b*A**4 -F**2)
>>> sol
[-0.437286658108243, 0.437286658108243]