Python3 - Sympy:扩展trig函数的产品

时间:2015-06-28 20:54:31

标签: python sympy

我找不到让SymPy将像cos(a)*cos(b)这样的产品扩展为角度和的三角函数之和的方法。

from sympy import *
init_printing()
wrf,wlo,t = symbols('\omega_RF \omega_LO t')
c = cos(wrf*t)*cos(wlo*t)
expand_trig(c)

保持产品完好无损。 simplify(c)trigsimp(c)也不提供任何其他形式。

我希望将cos(a)*cos(b)扩展为1/2*(cos(a+b) + cos(a-b)) ......任何提示?

1 个答案:

答案 0 :(得分:8)

根据文档字符串,textView.textContainer.lineFragmentPadding = 0; textView.textContainerInset = UIEdgeInsetsZero;

  

help(sympy.fu)会尽量减少目标函数fu。默认情况下这个   首先最小化trig项的数量,然后最小化总数   操作

但是,如果你通过

measure

然后measure=lambda x: -x.count_ops() will try to maximize the op count

fu

产量

import sympy as sy
sy.init_printing()
wrf, wlo, t = sy.symbols('\omega_RF \omega_LO t')
c = sy.cos(wrf*t)*sy.cos(wlo*t)
print(sy.fu(c, measure=lambda x: -x.count_ops()))

或者,你可以call the Fu transformation TR8 directly

cos(\omega_LO*t - \omega_RF*t)/2 + cos(\omega_LO*t + \omega_RF*t)/2

产生相同的结果。 docstring,from sympy.simplify.fu import TR8 print(TR8(c)) 解释了可用的转换。这是摘要;检查docstring以获取更多信息:

help(sys.modules['sympy.simplify.fu'])