文档介绍:1 SymPy —符号运算库目录?从例子开始?欧拉恒等式?球体体积?数学表达式?符号?数值?运算符和函数?符号运算?表达式变换和化简?方程 2 目录?微分?微分方程?积分?其他功能 34 SymPy 是一个符号数学 Python 库。它的目标是成为一个全功能的计算机代数系统,同时保持代码的精简而易于理解和可扩展。 SymPy 完全由 Python 写成,不需要任何外部库。可用 SymPy 进行数学表达式的符号推导和演算。可使用 isympy 运行程序, isympy 在 IPython 的基础上添加了数学表达式的直观显示功能。启动时还会自动运行下面的程序: 这段程序首先将 Python 的除法操作符“/”从整数除法改为普通除法。然后从 SymPy 库载入所有符号,并且定义了四个通用的数学符号 x 、y、z、t,三个表示整数的符号 k、m、n, 以及三个表示数学函数的符号 f、g、h。 5 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) f, g, h = symbols('f,g,h', cls=Function) #init_printing() 从例子开始?欧拉恒等式此公式被称为欧拉恒等式,其中 e是自然常数, i是虚数单位,是圆周率。此公式被誉为数学中最奇妙的公式,它将 5个基本数学常数用加法、乘法和幂运算联系起来。从 SymPy 库载入的符号中, E表示自然常数, I表示虚数单位, pi表示圆周率,因此上面的公式可以直接如下计算: 6 >>>E ** (I* pi)+1 ?0 1 0 ie ?? ??从例子开始 SymPy 除了可以直接计算公式的值之外, 还可以帮助做数学公式的推导和证明。欧拉恒等式可以将代入下面的欧拉公式得到: 在 SymPy 中可以使用 expand() 将表达式展开,用它展幵试试看: 没有成功,只是换了一种写法而已。当 expand() plex 参数为 True 时,表达式将被分为实数和虚数两个部分: 7 ? cos sin ix e x i x ? ? ixe ?>>> expand( E ** (I* x)) exp(I * x)??从例子开始这次将表达式展开了,但是得到的结果相当复杂。显然, expand() 将x当做复数了。为了指定 x为实数,需要重新定义 x: 终于得到了需要的公式。可以用泰勒多项式对其进行展开: 8 >>> expand(exp(I * x), complex=True) I* exp(-im(x)) * sin(re(x)) + exp(-im(x)) * cos(re(x)) ?>>> x = Symbol("x", real=True) >>> expand(exp(I * x), complex=True) Isin(x)+cos(x) ?从例子开始 series() 对表达式进行泰勒级数展开。可以看到展开之后虚数项和实数项交替出现。根据欧拉公式,虚数项的和应该等于 sin(x) 的泰勒展开,而实数项的和应该等于 cos(x) 的泰勒展开。 9 >>>tmp = series(exp(I * x), x, 0, 10) >>> print tmp 1 + I * x - x ** 2/2 - I *x** 3/6 + x ** 4/24 + I*x** 5/120 - x ** 6/720 - I *x** 7/5040 + x** 8/40320 + I *x** 9/362880 + O(x ** 10) >>>tmp 从例子开始下面获得 tmp 的实部: 下面对 cos (x)进行泰勒展开, 可看到其中各项和上面的结果是一致的。 10 >>> re(tmp) x** 8/40320 - x ** 6/720 + x ** 4/24 - x ** 2/2 + re(O(x ** 10)) + 1 >>> series(cos(x), x, 0, 10) 1 - x ** 2/2 + x ** 4/24 - x ** 6/720 + x ** 8/40320 + O(x ** 10)