sympy学习笔记
计算机代数学的入门之课。
数字、符号、表达式
开启新世界的大门:导入包并且创建符号x、y、t,写出摆线公式,并且求出当$t=\frac{\pi}{2}$时参数方程对应的点坐标。
1 | from sympy import * |
符号
创建符号有两种方法:构造Symbol类、调用symbols()函数,对于x y z以及希腊符号,还可以直接使用abc里现成的符号。
在下面的代码中,我们从sympy.abc里引入了alpha,创建了x和y两个符号,最后单独创建了符号t
1 | from sympy import * |
当然了,还可以创建多字母的符号,就想内置的alpha那样。
1 | from sympy import * |
其他
sympy.abc下有_clash1和_clash2,分别包含了明明冲突的单字母和多字母符号。
表达式
符号的数学运算、函数传参就可以构造出表达式。简单。无需多言。
代入
对表达式或符号调用.subs(符号,值)即可。支持链式调用,比如:
1 | from sympy import * |
也可以代入符号:
1 | from sympy import * |
也就是$2t^2$
求导与积分

求导:
1 | from sympy import * |
这是表达式:
调用diff(f, *symbols, [...])可以按顺序对若干符号求若干阶导。
调用integrate(f, *符号或限制元组),可以求不定积分或定积分。限制元组的基本格式是(符号,下界,上界)
其他
可以使用 Integral 对象创建未评估的积分,可以通过调用 doit() 方法对其进行评估。以经典的不可积函数为例:
1 | from sympy import * |
输出结果含有常数项以及误差函数erf(),表明这个函数是个收敛的不可积函数。
doit()的具体细节没有去了解,我暂认为doit()与intergal()等价。
矩阵
learning…
其他
并非不重要。
简化
例如$cos^2(x) + sin^2(x) = 1$
1 | from sympy import * |
展开
expand(f),用于将所有因式展开为多项式表达式
因式
factor(f),该函数将多项式化为因式相乘的形式。
整理
collect(f, single_symbol),将多项式转化为同次幂与其他因式相乘的多项式(胡言乱语中),按符号的降幂排列。例如:
对x、y、z分别调用collect(),结果如下
1 | from sympy import * |
也就是
其他
未列全的项目有:
- 化简
请参阅官方文档。
