SymPy是Python版的开源计算机代数系统实现,是使用纯Python代码,没有第三方库。SymPy开发是Ondrej Certik从2006年8月开始的,此后不断有开发者加入项目,规模达到几百人。现在这个程序库包括26个模块,可以满足常用的计算需求,如符号计算、积分、代数、离散数学、量子物理、画图与打印等,计算结果输出为LaTeX或其他格式。
SymPy程序库分为一个核心模块和多个高级可选模块:
·Assumptions:假设引擎
·Concrete:符号积和符号总和
·Core basic class structure:基本的,及加、乘、指数等
·Functions:基本的函数和特殊的函数
·Galgebra:几何代数
·Geometry:几何实体
·Integrals:符号积分
·Interactive:交互会话
·Logic:布尔代数和定理证明
·Matrices:线性代数和矩阵
·mpmath:快速的任意精度的数值运算
·ntheory:数论函数
·Parsing:数学的和最大化的句法分析
·Physics:物理单位和量子相关
·Plotting:用Pyglet进行二维和三维画图
·Polys:多项式代数和因式分解
·Printing:漂亮的打印和代码生成
·Series:符号极限和截断的序列
·Simplify:用其他形式改写表达式
·Solvers:代数、循环和差分
·Statistics:标准概率分布
·Utilities:测试架构和兼容性相关的内容
SymPy包括很多功能,从基本符号算术到多项式、微积分、求解方程、离散数学、几何、统计和物理,主要处理整型数据、实数和有理数三种类型数据,整数是不带小数点的数字,实数是带小数点的数字,有理数包括分子和分母,用Ration类定义有理数,该类需要两个数字。SymPy的核心功能是基本的算术、扩展、简化、替换、模式匹配和各种函数。
这一部分,我们分19次课来完成讲解
今天先完成模块的安装。
因为我们之前已经完成了pip的安装,所以,不用下载sympy模块,直接使用pip进行安装。
安装完成后,重新在cmd模式下启动python
执行导入第三方模块的操作
from __future__ import division
from sympy import *
没有任何提示,成功!
1. 符号、表达式和基本运算:
1)符号的定义:
在SymPy中,在任何表达式中使用符号前,必须先定义该符号,定义符号只需要用Symbol类中的symbol来定义一个符号即可。示例:
from __future__ import division
from sympy import *
x,y,z,t = symbols('x y z t')
k,m,n = symbols('k m n', integer=True)
k,f,g = symbols('f g h', cls = Function)
这段程序首先将Python中的除法操作符“/”从整数除法改为普通除法,
然后从sympy库载入所有符号;
然后定义了4个普通符号,x,y,z,t
然后定义了3个整数的符号,k,m,n
然后定义了表示数学函数的符号,f,g,h
2)将SymPy对象的数值转换为近似浮点值:
可以用evalf()和n()来获得任何对象的浮点近似值,默认的精度是15位有效数字,而且可以通过调整参数改为任何想要的精度。示例:
from __future__ import division
from sympy import sin,pi
x=sin(50)
print(pi.evalf())
print(pi.evalf(50)) # 50位有效数字
print(x.n())
print(x.n(20)) # 20位有效数字
3)表达式的常用操作:
表达式可以使用collect、expand、factor、simplify和subs等操作。示例:
from sympy import collect,expand,factor,simplify
from sympy import Symbol,symbols
from sympy import sin,cos
x,y,a,b,c,d=symbols('x y a b c d')
expr=5*x**2+2*b*x**2+cos(x)+51*x**2
simplify(expr)
factor(x**2+x-30)
expand((x-5)*(x+6))
collect(x**3+a*x**2+b*x**2+c*x+d,x)
expr=sin(x)*sin(x)+cos(x)*cos(x)
print(expr)
print(expr.subs({x:5,y:25}))
print(expr.subs({x:5,y:25}).n())
最后我们计算欧拉恒等式