sympy 用降功率公式简化表达式

问题描述 投票:0回答:1

我有以下同情表达

>>> a

         ⎛2⋅π⋅(x - y)⎞
2 - 2⋅cos ───────────
         ⎝     P     ⎠

我想简化为


     2 ⎛π⋅(x - y)⎞
4⋅sin   ─────────
       ⎝    P    ⎠

使用维基百科中列出的第一个功率降低公式(逆)。

第二种形式仅涉及 6 个操作,而第一种形式涉及 7 个操作,但是当我使用

fu

 中的 
sympy.simplify
 函数试图最小化我得到的操作数量时:

>>> fu(a, measure=lambda x: x.count_ops()) ⎛2⋅π⋅(x - y)⎞ 2 - 2⋅cos ─────────── ⎝ P ⎠
或者最多

>>> fu(sympy.expand_trig(a), measure=lambda x: x.count_ops()) 2⎛π⋅(x - y)⎞ 4 - 4⋅cos ───────── ⎝ P ⎠
仍涉及7次操作。

有没有办法说服 sympy 输出

sin**2

 形式?

python sympy symbolic-math simplify
1个回答
0
投票
这可能不完全是您要寻找的,但如果您将内部替换为

2b

(其中 
b
 是一个符号),它会减少。

x, y, P, b = symbols("x y P b") a = 2 - 2*cos(2*b) new_a = fu(a, measure=lambda x: x.count_ops()).subs(b, 2*pi*(x-y)/P)
我认为优化器对根据其编写方式改变操作数量的术语感到困惑。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.