如何让SymPy将指定三角表达式化简为sin²形式?
将余弦表达式转换为正弦平方形式
要把SymPy表达式 2 - 2⋅cos(2π(x-y)/P) 化简为 4⋅sin²(π(x-y)/P),可以通过以下两种方法实现:
方法1:指定三角恒等式规则调用fu函数
利用三角恒等式 1 - cos(2θ) = 2sin²θ(对应SymPy fu 工具集中的TR10规则逆用),先提取公因子再应用规则:
from sympy import symbols, cos, pi, fu x, y, P = symbols('x y P') a = 2 - 2*cos(2*pi*(x - y)/P) # 提取公因子后应用TR10规则 a_factored = a.factor() result = fu(a_factored, 'TR10') print(result)
输出结果即为:
4*sin(pi*(x - y)/P)**2
方法2:手动替换恒等式后化简
直接通过subs替换余弦的二倍角恒等式,再化简:
from sympy import symbols, cos, sin, pi, trigsimp x, y, P = symbols('x y P') a = 2 - 2*cos(2*pi*(x - y)/P) theta = 2*pi*(x - y)/P # 替换cos(theta)为1 - 2sin(theta/2)^2 a_sub = a.subs(cos(theta), 1 - 2*sin(theta/2)**2) simplified = trigsimp(a_sub) print(simplified)
同样会得到目标形式的表达式。
说明
之前使用默认fu或simplify未得到目标结果,是因为自动化简逻辑没有优先选择正弦平方形式。通过明确指定恒等式规则或手动替换,就能强制得到运算次数更少的sin²形式。
内容的提问来源于stack exchange,提问作者joaoFaria
相关产品推荐
相关产品推荐

