SymPy 库使用小记
Life is short,you need Python.—— Guido van Rossum
你离计算机代数只差一行 Python 代码:
1 |
|
微积分
求导
拿 \(\displaystyle\frac{d}{d x} 2^{\operatorname{arctan}{\frac{1 - x^{2}}{1 + x^{2}}}}\) 这个来说
1 |
|
然后我们就得到了
\[- 2^{\operatorname{arctan}{\frac{1 - x^{2}}{1 + x^{2}}}}\ln2\cdot\frac{2x}{x^{4} + 1}\]
求 \(\displaystyle e^{x^{2} + y^{2}} \sin{\left(x y \right)}\) 这个的偏导也可以:
1 |
|
然后就分别得到了 \[\begin{array}{c}2 x e^{x^{2} + y^{2}} \sin{\left(x y \right)} + y e^{x^{2} + y^{2}} \cos{\left(x y \right)}\\ e^{x^{2} + y^{2}} \cos{\left(x y \right)} + 2 y e^{x^{2} + y^{2}} \sin{\left(x y \right)}\\ \left(3 x y \sin{\left(x y \right)} + \left(2 x^{2} + 2 y^{2} + 1\right) \cos{\left(x y \right)}\right) e^{x^{2} + y^{2}}\end{array}\]
完美!
积分
1 |
|
比如说这个不定积分 \(\displaystyle\int \frac{\ln{\frac{1+x}{1-x}}}{1 - x^{2}}\, dx\):
1 |
|
最后输出(可以注意到默认都是不带任意常数 \(C\) 的): \[\frac{1}{4}{\left(\ln{\frac{x + 1}{1 - x}}\right)}^2\]
对这个不定积分 \(\displaystyle\int_{0}^{1} \frac{x^{3}}{\sqrt{x^{2} + 1}}\, dx\) 则是传入一个三元组:
1 |
|
极限
SymPy 使用 oo
来表示 \(\infty\)(没错就是两个
o
),类似于 \(\infty -
\infty\) 和 \(\dfrac\infty\infty\) 这种则返回
nan
(不是一个数,Not a Number)
Talk is cheap, show me the code.—— Linus Torvalds
求重要极限 \(\lim\limits_{x\to\infty}{\left(1+\dfrac{1}{x}\right)}^{x}\)
1 |
|
求单侧极限 \(\lim\limits_{x \to 0^+} \dfrac{1}{x}\) 和 \(\lim\limits_{x \to 0^-} \dfrac{1}{x}\)
1 |
|
打印
自动选择打印方式:
1 |
|
不同打印方式对应的代码:
打印方式 | 代码 |
---|---|
ASCII 字符 | pprint(expr, use_unicode = False) |
Unicode 字符 | pprint(expr, use_unicode = True) |
\(\LaTeX\) | print(latex(expr)) |
MathML | from sympy.printing.mathml import print_mathml print_mathml(expr) |
化简
函数 | 功能 |
---|---|
simplify(expr) |
最简单的化简函数,但是有可能会很慢 |
expand(poly) |
用来展开多项式 |
factor(poly) |
因式分解多项式 |
collect(expr, factor) |
从 expr 表达式中提出
factor |
cancel(rational) |
把分式化简并展开 |
apart(rational) |
对分式作部分分式分解 |
trigsimp(expr) |
化简三角函数表达式 |
expand_trig(expr) |
展开三角函数表达式 |
powsimp(expr) |
化简幂表达式 |
powdenest(expr) |
\({x}^{a^b}\) 化简成 \(x^{ab}\) |
expand_log(expr) |
展开对数表达式 |
logcombine(expr) |
\(\log{x}+\log{y}\) 合并成 \(\log{xy}\) |
combsimp(expr) |
对组合数化简 |