我找不到让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))
......任何提示?
答案 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'])