無論您是大學生還是從事數據科學工作,都無法迴避數學。
有人甚至可能認為數據科學是應用數學/統計學的一種。 NumPy、SciPy、 Scikit學習和 TensorFlow 這只是一些定量處理數學的 Python 庫。
然而,只有一個競爭對手可以顯式處理數學符號:SymPy。
讓我們了解一下有關 SymPy 的一切。
什麼是 象徵?
SymPy 是一個 Python 符號數學庫。 它渴望成為一個功能齊全的計算機代數係統(CAS),同時保持代碼盡可能基本,以便於理解和易於擴展。
它完全是用 Python 編寫的。 它使用起來很簡單,因為它只依賴於 mpmath,一個用於任意浮點運算的純 Python 庫。
作為一個庫,它的創建非常重視可用性。 可擴展性在其應用程序接口(API)的設計中至關重要。
因此,它沒有嘗試增強 Python 語言。 目標是讓用戶能夠將其與其他產品一起使用 Python 庫 在他們的工作流程中,無論是在交互式環境中還是作為較大系統的編程組件。
SymPy 作為一個庫,缺乏內置的圖形 用戶界面 (圖形用戶界面)。 該圖書館是:
- 免費,無論是語音還是啤酒,因為它是根據 BSD 許可證獲得許可的。
- 基於Python:完全用Python開發,使用Python作為語言。
- 輕量級,因為它只依賴於 mpmath,一個純粹的 Python 庫 用於任意浮點運算,使其使用簡單。
- 除了用作交互工具之外,還可以合併到其他程序中並使用自定義功能進行修改。
為什麼使用 SymPy?
Sage 是一個計算機代數係統,也採用 Python 作為其編程語言。 另一方面,Sage 非常龐大,需要下載超過 XNUMX GB 的數據。 它的優點是重量輕。
除了緊湊之外,它除了 Python 之外沒有任何依賴項,因此幾乎可以在任何地方使用。
此外,Sage 和 SymPy 的目標並不相同。 Sage 渴望成為一個功能齊全的數學系統,它通過將所有主要的開源數學系統合併為一個來實現這一目標。
當您使用 Sage 函數(例如集成)時,它會調用它包含的開源包之一。 事實上,它內置於 Sage 中。 另一方面,SymPy 渴望成為一個獨立的系統,所有功能都在其自身中實現。
它作為圖書館的功能是一個重要特徵。 許多計算機代數係統旨在用於交互式環境,但它們難以自動化或擴展。
它可以在 Python 中交互使用,也可以導入到您自己的 Python 程序中。 它還具有 API,可以使用您自己的例程輕鬆擴展它。
安裝 SymPy
只需使用以下命令即可在您的環境中安裝。
符號符號
讓我們現在就開始吧! 它的基本對像是一個符號。 在 SymPy 中,您可以通過編寫以下命令來生成符號 x:
上面的代碼生成符號 x。 其中的符號旨在模擬表示未知值的數學符號。
結果,計算結果如下所示:
如上所示,符號 x 的功能與未知量類似。 如果你想製作多個符號,請按如下方式編寫:
在本例中,您同時創建了兩個符號 y 和 z。 現在可以根據需要對這些符號進行加、減、乘和除運算:
符號函數
1. symify()函數
sympify() 方法將任意表達式轉換為 SymPy 表達式。 它轉換標準 Python 對象,例如整數。
字符串被轉換為其表達式以及整數等。
2.evalf()函數
此函數以最多 100 位的浮點精度計算指定的數值表達式。
該函數還接受一個帶有符號數值的字典對像作為 subs 參數。 考慮以下短語:
默認情況下,浮點精度設置為 15 位。 但是,可以將其更改為 1 到 100 之間的任何數字。
以下方程的計算精度為 20 位數字。
3.lambdify()函數
Lambdify 是一個將其表達式轉換為 Python 函數的函數。 在評估大範圍值的表達式時,evalf() 方法效率低下。
Lambdify 的工作方式與 lambda 函數類似,不同之處在於它將 SymPy 名稱轉換為所提供的數字庫的名稱(通常是 NumPy)。
默認情況下,Lambdify 應用於數學標準庫實現。
功能
這裡列出了該庫的一些最重要的功能; 還有很多沒有包含在內,但是你可以查看一下 点击這裡.
1. 核心能力
- 基本算術:支持 +、-、*、/ 和 ** 運算符(冪)
- 多項式展開
- 任意精度的整數、有理數和浮點數
- 三角函數、雙曲函數和指數函數、根、對數、絕對值、球諧函數、階乘和伽馬函數、zeta 函數、多項式和特殊函數
- 不可交換的符號
- 匹配模式
2. 微積分
- 積分:該方法採用擴展的 Risch-Norman 啟發式
- 分化。
- 限制功能
- 洛朗·泰勒的系列
3.多項式
- 格羅伯納基金會
- 部分分數的分解
- 除法、gcd 結果是基本算術的示例。
4.組合學
- 排列
- 格雷碼和普魯弗碼
- 組合、劃分、子集
- 多面體、魔方、對稱和其他置換群
5.離散數學
- 總結
- 邏輯表達式
- 二項式係數
- 數論
應用
1. 建築計算器
2.計算機代數係統
與其他計算機代數係統不同,您必須使用 Symbol() 函數手動聲明其中的符號變量。
3. 微積分
符號計算系統以符號方式進行各種計算的能力是其主要優勢。
它可以像徵性地簡化語句、計算導數、積分和極限、求解方程、與矩陣交互等等。
為了吊起您的胃口,這裡有像徵力量的味道。
您還可以使用 SymPy 做什麼?
讓我為您提供一系列資源來幫助您提高技能,而不是深入討論其他問題:
- 矩陣和線性代數: 它可以處理矩陣並執行基本的線性代數運算。 該語言類似於 NumPy 的語法。 然而,也存在顯著差異。 首先,調查 矩陣 在圖書館。
- 表達: 它利用基於樹的結構的表達式樹來跟踪表達式。 看著 表達式樹 如果你想更多地了解他們的內部運作方式。
- 導數和積分: 它可以完成您在微積分入門課程中學到的大部分內容(減去思維)。 您可以從查看我們的函數開始 區別 在 SymPy 中。
- 與 NumPy 的關係: NumPy 和 SymPy 都是與數學相關的庫。 然而,它們本質上是不同的! NumPy 處理數字,而它處理符號表達式。
- 簡化: 它足夠智能,可以自動簡化表達式。 但是,如果您想要對此進行更細粒度的控制,請查看其 簡化.
結論
SymPy 是一個功能強大的符號數學庫。
您可以使用它來創建變量和函數,以及以符號方式擴展和簡化數學語句並求解方程、不等式,甚至方程/不等式系統。
您可以在腳本文本中和直接在終端中編寫函數(或 Jupyter筆記本) 以獲得快速評估和對已完成計算的更好的圖形描述。
您準備好探索更多 SymPy 了嗎? 讓我們在評論中知道。
發表評論