Sympy:三角求和乘积恒等式

9

我有一个表达式:sin(x)+sin(y)

有一个著名的三角恒等式可以把它表示为sin和cos的乘积。

是否有一种方法让sympy应用这个恒等式?

simplifytrigsimp都无济于事。


有趣的是,trigsimp 似乎可以在另一个方向上工作,也就是说,trigsimp(2*sin( (x + y)/2 ) * cos ( (x - y)/2 )) 可以得到 sin(x) + sin(y)。也许 sympy 将 sin(x) + sin(y) 解释为“更简化”的形式。你知道在 sympy 中执行三角函数操作的其他方法吗? - Nick Meyer
expand_trig(sin(x) + sin(y)) 似乎什么也没做。 - Nick Meyer
2个回答

12

trigsimp,顾名思义,简化三角函数表达式。正如Aristocrates所指出的那样,sin(x) + sin(y)2*sin((x + y)/2)*cos((x - y)/2)更简单。

trigsimp 在内部使用了基于Fu等人的论文算法,对各种三角恒等式进行模式匹配。如果您查看源代码,所有恒等式都写在各自的函数中(函数的命名是按照Fu论文中的章节)。

浏览文件顶部的简化列表,你可能想要的是:

TR9 - contract sums of sin-cos to products

测试一下,看起来它可以工作

In [1]: from sympy.simplify.fu import TR9

In [2]: TR9(sin(x) + sin(y))
Out[2]:
     ⎛x   y⎞    ⎛x   y⎞
2⋅sin⎜─ + ─⎟⋅cos⎜─ - ─⎟
     ⎝2   2⎠    ⎝2   2

我们最终希望将这些因素分解成更加用户友好的函数,但是目前为止,尽管所有的函数名称都不是特别容易记忆,fu.py 文件已经被很好地记录了。


3
没问题,这就是我在寻找的东西。我不知道fu.py,我怀疑很多sympy用户也不知道它。 - GeorgeSalt
fu 函数还有一个更高级别的接口。您可以提供一个“度量”函数,它允许您重新定义哪些表达式是“更简单”的。 - asmeurer

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接