Sympy 简明教程

SymPy - Function class

Sympy 包具有 Function 类,该类在 sympy.core.function 模块中定义。它是一个基类,适用于所有应用的数学函数,也是未定义函数类的构造函数。

以下类别的函数从 Function 类继承 −

  1. Functions for complex number

  2. Trigonometric functions

  3. Functions for integer number

  4. Combinatorial functions

  5. Other miscellaneous functions

Functions for complex number

这组函数在 sympy.functions.elementary.complexes 模块中定义。

re

此函数返回表达式的实部 −

>>> from sympy import *
>>> re(5+3*I)

以上代码片段的输出如下所示 −

5

>>> re(I)

以上代码片段的输出为 −

0

Im

此函数返回表达式的虚部 −

>>> im(5+3*I)

以上代码片段的输出如下所示 −

3

>>> im(I)

以上代码片段的输出如下所示 −

1

sign

此函数返回表达式的复数标志。

对于实部表达式,标志将为 −

  1. 如果表达式为正,则为 1

  2. 如果表达式等于零,则为 0

  3. 如果表达式为负,则为 -1

如果表达式为虚部,返回的标志为 −

  1. 如果 im(expression) 为正,则为 I

  2. 如果 im(expression) 为负,则为 -I

>>> sign(1.55), sign(-1), sign(S.Zero)

以上代码片段的输出如下所示 −

(1, -1, 0)

>>> sign (-3*I), sign(I*2)

以上代码片段的输出如下所示 −

(-I, I)

Abs

此函数返回复数的绝对值。它定义为复平面中原点 (0,0) 和点 (a,b) 之间的距离。此函数是内置函数 abs() 的扩展,以接受符号值。

>>> Abs(2+3*I)

以上代码片段的输出如下所示 −

$\sqrt13$

conjugate

此函数返回复数的共轭。要找到复共轭,我们更改虚部的符号。

>>> conjugate(4+7*I)

执行以上代码片段后,可以获得以下输出:

4 - 7i

Trigonometric functions

SymPy 已定义所有三角比——sin cos、tan 等以及其逆如 asin、acos、atan 等。这些函数计算用弧度表示的给定角度的相应值。

>>> sin(pi/2), cos(pi/4), tan(pi/6)

以上代码片段的输出如下所示 −

(1, sqrt(2)/2, sqrt(3)/3)

>>> asin(1), acos(sqrt(2)/2), atan(sqrt(3)/3)

以上代码片段的输出如下所示 −

(pi/2, pi/4, pi/6)

Functions on Integer Number

这是一组在整数上执行各种操作的函数。

ceiling

这是一个单变量函数,它返回不小于其参数的最小整数值。对于复数,分别对实部和虚部取上整。

>>> ceiling(pi), ceiling(Rational(20,3)), ceiling(2.6+3.3*I)

以上代码片段的输出如下所示 −

(4, 7, 3 + 4*I)

floor

此函数返回不大小于其参数的最大整数值。对于复数,此函数也分别对实部和虚部取下整。

>>> floor(pi), floor(Rational(100,6)), floor(6.3-5.9*I)

以上代码片段的输出如下所示 −

(3, 16, 6 - 6*I)

frac

此函数表示 x 的小数部分。

>>> frac(3.99), frac(Rational(10,3)), frac(10)

以上代码片段的输出如下所示 −

(0.990000000000000, 1/3, 0)

Combinatorial functions

组合学是一个数学领域,涉及有限或离散系统中的选择、排列和运算问题。

factorial

阶乘在组合数学中非常重要,它提供了一种排列 n 个对象的排列方式的数目。它以符号形式表示为 x! 这个函数实现了非负整数的阶乘函数,负整数的阶乘是复无穷大。

>>> x=Symbol('x')
>>> factorial(x)

以上代码片段的输出如下所示 −

x!

>>> factorial(5)

以上代码片段的输出如下所示 −

120

>>> factorial(-1)

以上代码片段的输出如下所示 −

$\infty\backsim$

binomial

此函数给出了从 n 个元素的集合中选择 k 个元素的方式的数量。

>>> x,y=symbols('x y')
>>> binomial(x,y)

以上代码片段的输出如下所示 −

$(\frac{x}{y})$

>>> binomial(4,2)

以上代码片段的输出如下所示 −

6

帕斯卡三角形的行可以使用二项式函数生成。

>>> for i in range(5): print ([binomial(i,j) for j in range(i+1)])

执行以上代码片段后,可以获得以下输出:

[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

[1, 4, 6, 4, 1]

fibonacci

斐波那契数是由初始项 F0=0, F1=1 和二项递推关系 Fn=Fn−1+Fn−2 定义的整数序列。

>>> [fibonacci(x) for x in range(10)]

执行上面的代码片段后获得以下输出 −

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

tribonacci

Tribonacci 数列是由初始项 F0=0、F1=1、F2=1 和三项循环关系式 Fn=Fn-1+Fn-2+Fn-3 定义的整数序列。

>>> tribonacci(5, Symbol('x'))

上面的代码片段给出的输出等同于以下表达式 −

$x^8 + 3x^5 + 3x^2$

>>> [tribonacci(x) for x in range(10)]

执行上面的代码片段后获得以下输出 −

[0, 1, 1, 2, 4, 7, 13, 24, 44, 81]

Miscellaneous Functions

以下是一些常用函数的列表 −

Min − 返回列表的最小值。它命名为 Min 以避免与内置函数 min 冲突。

Max − 返回列表的最大值。它命名为 Max 以避免与内置函数 max 冲突。

root − 返回 x 的 n 次方根。

sqrt − 返回 x 的主平方根。

cbrt − 此函数计算 x 的主立方根(x++Rational(1,3) 的快捷方式)。

以下是以上杂项函数及其各自输出的示例 −

>>> Min(pi,E)

e

>>> Max(5, Rational(11,2))

$\frac{11}{2}$

>>> root(7,Rational(1,2))

49

>>> sqrt(2)

$\sqrt2$

>>> cbrt(1000)

10