You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SymPy中三角函数和角公式化简异常问题求助

问题解答

这不是SymPy的化简缺陷,是默认化简策略的覆盖范围限制,你可以通过以下几种方法实现预期的化简:

方法1:使用trigsimp的fu方法

SymPy的trigsimp默认策略可能未触发和角公式匹配,指定method='fu'(基于Fricas的化简规则)可以更精准地处理这类三角函数组合:

from sympy import symbols, cos, sin, trigsimp

q = symbols('q')
expr = cos(q)*cos(4*q) - sin(q)*sin(4*q)
simplified_expr = trigsimp(expr, method='fu')
print(simplified_expr)  # 输出 cos(5*q)

方法2:通过指数形式中转化简

将三角函数重写为指数形式后化简,再转回三角函数形式,也能得到结果:

from sympy import symbols, cos, sin, simplify, exp, I, rewrite

q = symbols('q')
expr = cos(q)*cos(4*q) - sin(q)*sin(4*q)
# 转指数形式
expr_exp = expr.rewrite(exp)
# 化简指数表达式
simplified_exp = simplify(expr_exp)
# 转回三角函数
simplified_expr = simplified_exp.rewrite(cos)
print(simplified_expr)  # 输出 cos(5*q)

方法3:验证等价性(若无需显式化简)

如果只是需要确认表达式等价于cos(5q),可以直接验证等式:

from sympy import symbols, cos, sin, Eq, simplify

q = symbols('q')
expr = cos(q)*cos(4*q) - sin(q)*sin(4*q)
print(simplify(Eq(expr, cos(5*q))))  # 输出 True,证明两者等价

补充说明

SymPy默认的trigsimp和simplify策略优先处理更通用的化简场景,对于这种特定的和角组合,需要调用针对性的规则集(如fu方法)才能触发和角公式的逆向化简。

内容的提问来源于stack exchange,提问作者Kosuke Ohgo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:42:43