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 * |
也就是
其他
未列全的项目有:
- 化简
请参阅官方文档。