SymPy - 函式類



Sympy 包含 Function 類,該類定義在 sympy.core.function 模組中。它是所有應用數學函式的基類,也是未定義函式類的建構函式。

以下函式類別繼承自 Function 類:

  • 複數函式
  • 三角函式
  • 整數函式
  • 組合函式
  • 其他雜項函式

複數函式

這組函式定義在 **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,如果表示式為正
  • 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

此函式返回複數的共軛。要找到複共軛,我們更改虛部的符號。

>>> conjugate(4+7*I)

執行以上程式碼片段後,您將獲得以下輸出:

4 - 7i

三角函式

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)

組合函式

組合學是數學的一個領域,涉及有限或離散系統中選擇、排列和運算的問題。

factorial

階乘在組合學中非常重要,它給出了 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]

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

特里波那契數是整數序列,由初始項 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

廣告