我正在使用Python与Sympy。
我需要解下面的方程,找到四个根(是未知的):
deter= 0.6*omega**4*cos(omega*t)**2 - 229.0*omega**2*cos(omega*t)**2 + 5880.0*cos(omega*t)**2
我尝试使用solve:
eqcarr=solve(deter,omega,exclude=[t])
我得到这样的输出:
[-18.8143990830350, -5.26165884593044, 5.26165884593044, 18.8143990830350, 1.5707963267949/t, 4.71238898038469/t]
我只需要前4个值,不需要带t系数的值。我期望cos(*t)**2在解中被化简,但这没有发生
根据文档solve
将不求解任何在exclude
中传递的自由符号。
"排除=[](默认)"不要试图解出exclude中的任何自由符号;如果给出了表达式,其中的自由符号就会给出表达式自动提取
不是用来过滤溶液的
你可以这样解决你的问题:
In [10]: from sympy import *
In [11]: from sympy.abc import omega, t
In [12]: deter= 0.6*omega**4*cos(omega*t)**2 - 229.0*omega**2*cos(omega*t)**2 + 5880.0*cos(omega*t)**2
In [13]: eqcarr=solve(deter,omega,exclude=[t])
In [14]: filtered = [i for i in eqcarr if not i.has(t)]
In [15]: filtered
Out[15]: [-18.8143990830350, -5.26165884593044, 5.26165884593044, 18.8143990830350]