簡體   English   中英

SymPy和Sage有什么區別?

[英]What is the difference between SymPy and Sage?

SymPySage aka SageMath有什么區別?

(完全披露:我是SymPy的首席開發人員)

你應該首先理解的是,SymPy和Sage並不完全相同。 SymPy是一個純粹的Python庫,可以完成計算機代數。 Sage是一個開源數學軟件的集合。 Sage試圖將所有主要的開源數學軟件聚集在一起,並將它們粘合在一起形成一個有用的系統。 事實上, Sage將SymPy作為其系統之一。

以下是每個(有偏見的)事實的簡短列表(我不會稱之為利弊,只是事實):

SymPy

  • SymPy是完全獨立的。 除了Python之外,它沒有依賴關系。
  • 盡管是獨立的,但它是一個全功能的計算機代數系統 如果你想做數字,我們鼓勵你在科學的Python生態系統中使用其他庫。
  • SymPy獲得BSD許可。 對於很多人來說,這沒關系,但是如果你想將SymPy包含在其他東西中,很高興知道你可以用代碼做任何你想做的事情。
  • SymPy不會嘗試更改Python。 SymPy采用Python做得很好的理念,所以它應該以Python的方式做事。 例如,對於冪運算符是** ,因為它是在Python,而不是^因為它在許多其他系統。
  • SymPy可以用作庫。 由於SymPy只是一個Python模塊,您只需導入它並在任何使用Python的地方使用它。 有很多非常酷的應用程序和庫在后台使用SymPy來做符號(在很多情況下,在你可能甚至沒有意識到使用符號的地方)。

智者

  • Sage包含了你可能想要做數學的開源世界的所有東西(包括SymPy)。 這包括許多對數字有用的庫,如八度音程。
  • Sage是GPL。 如果你喜歡整個FSF軟件的自由大肆宣傳,那么你的權力就更大了。 如果沒有在GPL下許可您的應用程序,您也不能在自己的應用程序中重用源代碼。
  • Sage很難用作圖書館。 另一方面,它有一個非常好的筆記本界面。 如果你想對SymPy做同樣的事情,推薦的方法是使用IPython筆記本並from sympy import init_session; init_session()運行from sympy import init_session; init_session() from sympy import init_session; init_session() (如果您只想打印而不是導入所有內容, init_printing替換為init_session )。
  • Sage在Python之上包含了一些DSL。 例如,您可以在不包裝整數文字的情況下鍵入1/2 ,它將返回一個有理數。 x^2給出x平方,而不是Xor(x, 2) 我不確定它是否默認為您自動定義變量。 這意味着您在交互式Sage會話中執行的操作可能無法直接轉換為Python腳本。 另一方面,這對於交互式使用非常有用(順便說isympy -I ,SymPy也有isympy -I做了類似的事情)。

也許這不是你想要的。 你可能想要一些實際的數學特征。 但正如我所說,Sage包含SymPy,因此根據定義,SymPy的每個功能都將成為Sage的一個功能。 在實踐中,情況不一定是這樣,因為Sage默認情況下並不總是使用SymPy(我不確定它的實際狀態是什么),因此如果你想使用它,你可能需要手動調用SymPy來自Sage內部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM