Python3 - Sympy:展开三角函数的乘积 [英] Python3 - Sympy: expand products of trig functions

查看:40
本文介绍了Python3 - Sympy:展开三角函数的乘积的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找不到一种方法让 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 function measure. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆