方程根:参数没有简化

时间:2014-06-26 07:38:29

标签: python parameters equation sympy

我正在使用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在求解时简化,但这不会发生。

1 个答案:

答案 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]