【发布时间】:2021-05-02 04:38:42
【问题描述】:
我想用以下参数求解这个方程:
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 用于复杂,要么是 sympy.core.numbers.Float 用于浮点数。
我的问题是,我怎样才能修改我的条件,使其仅适用于获取浮点值?
另外,有没有办法加快速度?如果我将它放在一个循环中以获得许多欧米茄值,它会非常慢。
这是我第一次使用sympy
【问题讨论】: