我正在使用Sympy的Python。
我需要解决以下等式,找到4个根(欧米茄是我未知的):
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(omega * t)** 2在求解时简化,但这不会发生。
答案 0 :(得分: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]