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

2024-09-19 23:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

代码(pretty version with rendered equations):

>>> 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

Tags: 代码fromimporttrue表达式pisqrtsigma
1条回答
网友
1楼 · 发布于 2024-09-19 23:35:56

当f0为0时,取消f0/sqrt(f0**2)无效。为了确保允许这种取消,声明f0为正,而不仅仅是非负。在

另外,从导入pi美国广播公司使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)

退货

^{pr2}$

相关问题 更多 >