SymPy – 函数类
Sympy包中有一个Function类,它定义在sympy.core.function模块中。它是所有应用数学函数的基类,也是未定义函数类的构造器。
以下几类函数是由Function类继承的
- 复合数的函数
- 三角函数
- 用于整数的函数
- 组合函数
- 其他杂项函数
关于复数的函数
这一组函数定义在 sympy.function.elementary.complexes 模块中。
复数
这个函数返回一个表达式的实数部分 –
>>> from sympy import *
>>> re(5+3*I)
上述代码片断的输出结果如下
5
>>> re(I)
上述代码片断的输出是–
0
Im
这个函数返回一个表达式的虚数部分:
>>> im(5+3*I)
上述代码片断的输出结果如下
3
>>> im(I)
上述代码片断的输出结果如下
1
符号
这个函数返回一个表达式的复数符号。
对于实数表达式,符号将是-
- 1,如果表达式是正数
- 如果表达式等于零,则为 0
- 如果表达式为负数,则为-1
如果表达式是虚数,返回的符号是-。
- 如果im(expression)是正数,则为I
- 如果im(expression)是负的,则为-I
>>> sign(1.55), sign(-1), sign(S.Zero)
上述代码片断的输出如下 −
(1, -1, 0)
>>> sign (-3*I), sign(I*2)
上述代码片断的输出如下 −
(-I, I)
绝对值
这个函数返回一个复数的绝对值。它被定义为原点(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
二项式
这个函数是我们可以从一个有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