SymPy 函数类


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

Function类继承了以下几类函数:

  • 复数函数
  • 三角函数
  • 整数函数
  • 组合函数
  • 其他杂项功能

复数函数


这组函数定义在 sympy.functions.elementary.complexes module.

re

该函数返回表达式的实部:

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

上述代码段的输出如下:

5

>>> re(I)

上述代码段的输出为:

0

Im

该函数返回表达式的虚部:

>>> im(5+3*I)

上述代码段的输出如下:

3

>>> im(I)

上述代码段的输出如下:

1

sign

此函数返回表达式的复数符号。

为真实表达,符号为:

  • 1 如果表达式为正
  • 0 如果表达式等于 0
  • -1 如果表达式为负

如果表达式是虚数,则返回的符号是:

  • I 如果 im(表达式) 为正
  • -I 如果 im(表达式) 为负
>>> 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(4+7*I)

执行上述代码段后,你会得到以下输出:

4 - 7 i

三角函数


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)

整数函数


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

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)

组合函数


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

阶乘

阶乘在组合数学中非常重要,它给出了 n 个对象可以置换的方式的数量。它象征性地表示为?!该函数是对非负整数的阶乘函数的实现,负整数的阶乘是复无穷大。

>>> 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]

斐波那契

斐波那契数是由初始项 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 数是由初始项 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]

杂项功能


以下是一些常用功能的列表:

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