SymPy中的 simplify() 可以进行智能的化简

但是,simplify() 的输出有时候会和你的预想不同,因为并没有“最简”并没有一个严格的定义。

想要得到 (x+1)2(x+1)^2 应该使用 factor()

而且,simplify() 会调用多种化简函数,为了方便,一般在交互式界面里使用 simplify() 。如果在程序里使用,会造成运行效率低下。当你知道需要化简成什么形式时,应该使用对应的化简函数。这样不仅运行快,而且输出的格式是固定的。

以下是一些常用的化简函数

  1. expand()展开,如

(x+2)(x3)=x2x6(x + 2)*(x - 3) = x^2 - x - 6

  1. factor()因式分解,如

x2z+4xyz+4y2z=z(x+2y)2x^{2} z + 4 x y z + 4 y^{2} z = z \left(x + 2 y\right)^{2}

如果希望得到所有因子的列表,用factor_list()
3. collect(expr, x)将x作为主元整理expr。如

x3x2z+2x2+xy+x3=x3+x2(2z)+x(y+1)3x^{3} - x^{2} z + 2 x^{2} + x y + x - 3 = x^{3} + x^{2} \cdot \left(2 - z\right) + x \left(y + 1\right) - 3

  1. cancel()对分子分母自动消去共同因子,如

x2+2x+1x2+x=x+1x\frac{x^{2} + 2 x + 1}{x^{2} + x} = \frac{x + 1}{x}

  1. apart()会执行部分因式分解(Partial fraction decomposition)
  2. trigsimp()是三角函数版本的simplify()会智能地化简三角函数表达式。
  3. expand_trig()会使用和差角、二倍角等公式展开表达式,如

sin(x+y)+tan(2x)=sin(x)cos(y)+sin(y)cos(x)+2tan(x)1tan2(x)\sin{\left(x + y \right)} + \tan{\left(2 x \right)} = \sin{\left(x \right)} \cos{\left(y \right)} + \sin{\left(y \right)} \cos{\left(x \right)} + \frac{2 \tan{\left(x \right)}}{1 - \tan^{2}{\left(x \right)}}

  1. expr.rewrite(function)尝试用function表示expr,如

SymPy中的化简函数还有很多,这里只是一些常用的。