sympy 是 symbolic python 的简称,也就是一个支持代数符号计算的python库。
它可以用来帮助我们解决从初中数学到高等数学的各类问题,包括但不限于:
⚫️ 表达式化简,因式分解,方程求解,不等式求解。
⚫️ 求极限,求导,求积分,级数展开,解微分方程,级数求和。
⚫️ 求概率,求期望,方差。
⚫️ 矩阵乘法,求行列式,矩阵求逆,矩阵分解。
本文将先演示sympy的基础使用范例,然后讲解sympy的原理。
公众号算法美食屋后台回复关键词:源码,获取本文notebook源代码~
〇,基本范例演示
一,符号和数字
1, 定义符号
可以从 sympy.abc直接导入单字母。
可以用sympy.symbols定义多个符号。
可以用sympy.var 声明符号。
支持希腊字母,支持下标符号。
2,定义数字
sympy里的定义的符号数字可以是任意精度的。可以用Integer,Float,Rational等类定义符号数字,也可以用S定义符号数字。
3, 获取数值结果
使用sympy.N或者表达式的n()方法,或者evalf()等方法可以将表达式转换成数值结果。
二,表达式和函数
1,定义表达式
符号的运算组合构成表达式,表达式是一种树形结构,由 func和args组成,表达式可以嵌套。
含有symbols符号的算式会自动对常见的四则运算和乘方等运算符进行重载。
使用sympy.sympify或者sympy.S可以将字符串转换成对应的表达式。
2,定义函数
函数是从一组参数符号到一个表达式的映射。可以用Function定义函数,也可以用sympy.Lambda定义匿名函数,后者通常简单一些。
3,表达式操控
下面介绍表达式的化简,因式分解,展开,合并同类项,替换 等操作
simplify, factor, expand, collect, apart,together, subs,xreplace, rewrite
三,方程和不等式
1,方程求解
方程求解有solve,solveset,linsolve等函数可以使用。
2,不等式求解
不等式求解可以使用reduce_inequalities或者solve或者solveset等方法
四, 函数可视化
1,plot范例
import sympy
from sympy import S,pi,exp,log,sin,cos,tan,cot,sqrt
import matplotlib
%matplotlib inline
sympy.plot(sin(x) + cos(x), (x, -pi, pi))
2,plot3d范例
import sympy
from sympy import S,pi,exp,log,sin,cos,tan,cot,sqrt
import matplotlib
%matplotlib inline
sympy.plotting.plot3d(x*exp(-x**2-y**2), (x, -3, 3), (y, -2, 2))
3,textplot范例
基于纯文本可视化,不需要matplotlib
import sympy
from sympy import sin
sympy.textplot(sin(t), 0, 15)