Sympy不会用符号除以其平方根的平方根来简化表达式

谢尔盖

我有一个sympy简化问题请参见下面的代码。当我sqrt用某种东西代替表情时,它变得“牢不可破”。例如,在代码的最后一行中,我将表达式乘以f0并简化了结果。即使被声明为f0,分子和sqrt(f0**2)分母中的in也没有得到简化我做错了什么,如何在不产生这种影响的情况下替换表达式?f0nonnegative

代码(带有渲染方程式的漂亮版本):

>>> from __future__ import division
>>> from sympy import *
>>> from sympy.abc import pi

>>> init_printing(use_unicode=True)
>>> L0, Csum0, f0 = symbols("L0 C_{{\\Sigma}0} f0", nonnegative=True)
>>> equation = sqrt(L0)
>>> equation
  ____
╲╱ L₀

>>> substitute = solve(Eq(1/(2*pi*sqrt(L0)*sqrt(Csum0)), f0), L0, dict=1)[0]
>>> substitute
⎧              1           ⎫
⎪L₀: ──────────────────────⎪
⎨                      2  2⎬
⎪    4⋅C_{{\Sigma}0}⋅f₀ ⋅π ⎪
⎩                          ⎭

>>> equation = equation.subs(substitute)
>>> equation
     ______________________
    ╱          1
   ╱  ────────────────────
  ╱                   2  2
╲╱    C_{{\Sigma}0}⋅f₀ ⋅π
───────────────────────────
             2

>>> simplify(equation*f0)
        ______________________
       ╱          1
f₀⋅   ╱  ────────────────────
     ╱                   2  2
   ╲╱    C_{{\Sigma}0}⋅f₀ ⋅π
──────────────────────────────
               2
用户名

f0/sqrt(f0**2)当f0为0时取消是不合法的。为确保允许取消,请声明f0为正,而不仅仅是非负。

另外,pi从sympy.abc导入使pi成为通用符号,没有特定含义;特别是,它并不肯定。SymPy已经内置了pi(数学常数),并且知道它是一个正数。因此,从中删除导入sympy.abc可以简化。

from sympy import *
L0, Csum0, f0 = symbols("L0 C_{{\\Sigma}0} f0", positive=True)
equation = sqrt(L0)
substitute = solve(Eq(1/(2*pi*sqrt(L0)*sqrt(Csum0)), f0), L0, dict=1)[0]
equation = equation.subs(substitute)
simplify(equation*f0)

退货

1/(2*pi*sqrt(C_{{\Sigma}0}))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章