Python3 - Sympy:展开三角函数的乘积 [英] Python3 - Sympy: expand products of trig functions
问题描述
我找不到一种方法让 SymPy 将像 cos(a)*cos(b)
这样的乘积扩展为角和的三角函数之和.
I cannot find a way to have SymPy expand products like cos(a)*cos(b)
into sum of trig functions of sum of angles.
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)
也没有给出任何替代形式.
Keeps the product intact. simplify(c)
or trigsimp(c)
also do not give any alternative form.
我希望将 cos(a)*cos(b)
扩展为 1/2*(cos(a+b) + cos(ab))
代码>...有什么提示吗?
I would like to have cos(a)*cos(b)
to be expanded to 1/2*(cos(a+b) + cos(a-b))
...any hints?
推荐答案
根据文档字符串,help(sympy.fu)
,
fu
将尝试最小化目标函数measure
.默认这个首先最小化触发项的数量,然后最小化总的数量操作.
fu
will try to minimize the objective functionmeasure
. By default this first minimizes the number of trig terms and then minimizes the number of total operations.
但是,如果你通过了
measure=lambda x: -x.count_ops()
然后 fu
将尝试最大化 操作次数.
then fu
will try to maximize the op count.
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()))
收益
cos(\omega_LO*t - \omega_RF*t)/2 + cos(\omega_LO*t + \omega_RF*t)/2
<小时>
或者,您可以直接调用 Fu 转换 TR8:
from sympy.simplify.fu import TR8
print(TR8(c))
产生相同的结果.文档字符串 help(sys.modules['sympy.simplify.fu'])
解释了可用的转换.这是摘要;检查文档字符串以获取更多信息:
yields the same result. The docstring, help(sys.modules['sympy.simplify.fu'])
explains the transformations available. Here is the summary; check the docstring for more information:
TR0 - simplify expression
TR1 - sec-csc to cos-sin
TR2 - tan-cot to sin-cos ratio
TR2i - sin-cos ratio to tan
TR3 - angle canonicalization
TR4 - functions at special angles
TR5 - powers of sin to powers of cos
TR6 - powers of cos to powers of sin
TR7 - reduce cos power (increase angle)
TR8 - expand products of sin-cos to sums
TR9 - contract sums of sin-cos to products
TR10 - separate sin-cos arguments
TR10i - collect sin-cos arguments
TR11 - reduce double angles
TR12 - separate tan arguments
TR12i - collect tan arguments
TR13 - expand product of tan-cot
TRmorrie - prod(cos(x*2**i), (i, 0, k - 1)) -> sin(2**k*x)/(2**k*sin(x))
TR14 - factored powers of sin or cos to cos or sin power
TR15 - negative powers of sin to cot power
TR16 - negative powers of cos to tan power
TR22 - tan-cot powers to negative powers of sec-csc functions
TR111 - negative sin-cos-tan powers to csc-sec-cot
这篇关于Python3 - Sympy:展开三角函数的乘积的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!