SymPy 简化
Sympy具有强大的能力来简化数学表达式。SymPy中有许多函数可以执行各种简化操作。有一个通用函数叫做simplify(),它试图得到表达式的最简形式。
simplify
这个函数在sympy.simplify模块中定义。simplify()尝试应用智能启发式算法使输入表达式变得“更简单”。下面的代码展示了对表达式的简化结果。
上面的代码片段给出了以下输出 –
1
expand
expand() 是SymPy中最常见的简化函数之一,用于展开多项式表达式。例如 –
以上的代码片段输出结果与下面的表达式等价−
$
上面的代码片段给出了与下面表达式等价的输出结果−
expand()函数使表达式变得更大,而不是更小。通常情况下是这样,但是在调用expand()函数后,表达式可能会变小。
以上代码片段的输出如下所示−
-2
factor
该函数接受一个多项式,并将其分解为有理数上的不可约因子。
上面的代码片段会生成与下面的表达式等效的输出 −
上面的代码片段输出结果等价于以下表达式 −
factor()函数是expand()的反函数。factor()函数返回的每个因子都保证是不可约的。factor_list()函数返回一个更结构化的输出。
以上代码片段的输出与下面的表达式等价 –
(1, [(z, 1), (x + 2*y, 2)])
collect
此函数根据具有有理数指数的表达式列表,收集表达式的可加术语。
上述代码片段的输出等效于下面的表达式:-
对该表达式使用collect()函数的结果如下:-
上面的代码片段的输出结果等同于以下表达式-
上面的代码片段产生的输出等同于下面的表达式 −
cancel
cancel() 函数将任何有理函数转化为标准规范形式 p/q,其中 p 和 q 是展开的多项式且没有公共因子。p 和 q 的首项系数没有分母,即它们是整数。
上面的代码片段输出的结果等同于下面的表达式:-
以上的代码片段生成的输出等价于以下表达式 −
以上代码片段的输出等同于下面的表达式 −
上述代码片段的输出与下面的表达式等价-
trigsimp
该函数用于简化三角函数的恒等式。值得注意的是,反三角函数的命名惯例是在函数名前面加上a。例如,反余弦函数被称为acos()。
2
trigsimp函数使用启发式方法应用最适合的三角恒等式。
powersimp
该函数通过结合具有相似底数和指数的幂来简化给定的表达式。
上面的代码片段给出了与下面表达式等效的输出 −
上面的代码片段生成的输出与下面的表达式等价−
通过更改combine=’base’或combine=’exp’,您可以使powsimp()仅组合基数或仅组合指数。默认情况下,combine=’all’,它同时进行两者。如果force为True,则在不检查假设的情况下合并基数。
上面的代码片段产生的输出等同于下面的表达式 −
combsimp
使用combsimp()函数可以简化涉及阶乘和二项式的组合表达式。SymPy提供了一个factorial()函数
上面的代码片段给出了与下面表达式等价的输出 –
为了简化上述组合表达式,我们使用combsimp()函数如下 –
上述代码片段输出结果等同于下面的表达式 −
binomial(x, y)是从x个不同的项中选择y个项的方式数量。它通常也被写为 xCy。
上面的代码片段输出结果与下面的表达式等价:
上面的代码段的输出等同于下面的表达式 –
logcombine
这个函数接受对数,并使用以下规则进行合并 –
log(x) + log(y) == log(x*y)
,如果两个对数都是正数a*log(x) == log(x**a)
,如果x是正数且a是实数
上面的代码片段会输出与下面的表达式等价的结果−
如果函数的force参数设置为True,那么如果已经存在对某个量的假设,在没有其他假设的情况下,将会假设上述条件为真。
上面的代码片段生成的输出等同于下面的表达式: