如何让SymPy对sin和cos相关项进行分组合并?
如何在SymPy中按sin(x)和cos(x)分组合并同类项?
直接使用SymPy的collect()函数即可实现按指定三角函数项分组并合并系数,这比通用的simplify()更针对性地满足你的需求:
- 先定义符号与目标表达式:
from sympy import symbols, cos, sin, collect # 定义符号:a、b、y、m为常数(可含复杂表达式),x为变量 a, b, y, m, x = symbols('a b y m x') expr = a*cos(x) + b*cos(x) + y*sin(x) + m*sin(x)
- 调用
collect()指定分组项:
grouped_expr = collect(expr, [cos(x), sin(x)]) print(grouped_expr)
执行后会输出:
(a + b)*cos(x) + (m + y)*sin(x)
说明
collect()函数的核心作用就是将表达式中指定项的同类系数合并,不管a、b、y、m是简单常数还是复杂表达式,只要它们不包含变量x,就能正确完成分组合并。通用的simplify()函数因优化方向更宽泛,不一定会优先处理这类分组操作。
内容的提问来源于stack exchange,提问作者wiz21
相关产品推荐
相关产品推荐

