SageMath
SageMath(曾叫做Sage或SAGE,為「System for Algebra and Geometry Experimentation」的首字母縮寫[2]),是一個覆蓋許多數學功能的應用軟件,包括代數、組合數學、圖論、計算數學、數論、微積分和統計。
首次釋出 | 2005年2月24日 |
---|---|
目前版本 | 10.4[1](2024年7月20日,3個月前) |
原始碼庫 | |
程式語言 | Python、Cython |
作業系統 | 跨平台 |
平台 | Python |
檔案大小 | 1.1 GB(MS Windows) |
類型 | 計算機代數系統 |
特許條款 | GNU通用公眾特許條款 |
網站 | www.sagemath.org |
SAGE的第一個版本在GNU特許條款下釋出於2005年2月24日,最初的目標是創造一個「Magma、Maple、Mathematica和MATLAB的開源替代品」。Sage的主導開發人員威廉·斯坦因是華盛頓大學的數學家。
功能
編輯Sage的功能包括[3]
- 一個用於回顧及重新使用以前的輸入和輸出及加入圖形和文字註釋的記事本文件介面,可在通用的網頁瀏覽器如Firefox、Opera、Konqueror和Safari中使用。在安全和保密要求高的情況下可通過HTTPS與記事本連接,Sage可同時在本地和遠端使用。
- 一個使用IPython的基於文字的命令列介面
- Python程式語言,支援函數化編程和物件導向的結構。
- 支援多核處理器,多處理器,及在平行計算。
- 使用Maxima和SymPy進行微積分計算。
- 使用GSL,SciPy和NumPy做線性代數數值計算。
- 基礎和特殊數學函式庫
- 函數和數據的二維和三維圖形顯示
- 矩陣和數據處理工具,支援稀疏陣列
- 使用R和SciPy的多元統計分析庫
- 一個在計算和應用上添加用戶介面的工具箱的
- 使用Pylab以及Python程式語言的圖像處理工具
- 圖論視覺化和分析工具
- 數論的函式庫
- 數據,圖像,影片,聲音,電腦輔助設計,地理資訊系統,文件和生物醫學格式的輸入輸出過濾器
- 適當支援在函數中進行複數, 任意精度及符號計算
- 包括公式編輯的文書處理技術,並可在Sage內嵌入LaTeX文件
- Twisted提供的連接到SQL、Java、.NET、C++和FORTRAN語言的網絡工具,支援包括HTTP、NNTP、IMAP、SSH、IRC、FTP等在內的大量協定
- 與Mathematica、Maxima及Maple等一些第三方軟件的介面 ,允許用戶組合軟件及比較輸出和效能。因此,它也是一個類似於GNU TeXmacs的其他數學工具的「前端」
- 使用MoinMoin作為知識管理的維基系統
- 使用Sphinx的文件管理
- 一個自動化測試套件,允許電腦終端用戶進行測試
雖然不是Sage直接提供的功能,但Sage可以從Mathematica內部呼叫。Mathematica的一個記事本可用於此。
設計理念
編輯威廉.斯坦在設計Sage時意識到了有不同的語言(包括有C 、C++、Fortran和Python)編寫的大量現成的大型開源數學軟件可用。
因此,Sage(用Python和Cython實現的)將所有專用的數學軟件整合到一個通用的介面而不是從頭開發。用戶只需要了解Python。
Sage由學生和專業人士開發。Sage的開發由志願工作和贈款支援。 [4]
效能
編輯二進制包和原始碼都可以從Sage頁面下載。如果從原始碼構建,許多包含的庫如Atlas、FLINT和NTL和都會針對該電腦考慮到處理器數量,快取大小的,是否有硬件支援SSE指令等進行調整和最佳化。
特許和可用性
編輯Sage在GNU通用公眾特許條款2+下自由軟件條款下釋出 。Sage可通過多種方式獲得:
- 原始碼可以直接從網上下載的 下載頁面(頁面存檔備份,存於互聯網檔案館) 。開發版本的Sage也可用,不建議終端使用者使用。
- 可以下載用於Linux、OS X、Solaris(x86和SPARC)及windows的可執行檔案。
- 一個包含可啟動Linux作業系統的live CD。允許不安裝Linux直接使用Sage。
- 用戶可以使用Sage的線上版本,地址是 sagenb.org 或 https://web.archive.org/web/20110720111745/http://t2nb.math.washington.edu:8080/,但限制用戶可用的主記憶體量。
Sage包含的軟件套件
編輯如上所述,SAGE的理念是利用現有的任何開放原始碼庫。因此,借用了許多專案。
代數 | GAP ,Maxima ,Singular |
代數幾何 | Singular |
任意精度計算 | MPIR,MPFR,MPFI,NTL |
算術幾何 | PARI/GP, NTL,mwrank,ecm |
微積分 | Maxima,SymPy,GiNaC |
組合數學 | Symmetrica,Sage-Combinat |
線性代數 | ATLAS,BLAS, LAPACK,NumPy,LinBox,IML,GSL |
圖論 | NetworkX |
群論 | GAP |
數值計算 | GSL,SciPy,NumPy,ATLAS |
數論 | PARI/GP,FLINT,NTL |
統計計算 | R, SciPy |
命令列 | IPython |
資料庫 | ZODB, Python Pickles,SQLite |
圖形介面 | Sage Notebook, jsmath |
圖像 | Matplotlib,Tachyon3d,GD, Jmol |
互動式程式語言 | Python |
網絡 | Twisted |
語言範例
編輯微積分
編輯x,a,b,c = var('x,a,b,c')
log(sqrt(a)).simplify_log() # returns log(a)/2
sin(a+b).simplify_trig() # returns cos(a)*sin(b) + sin(a)*cos(b)
cos(a+b).simplify_trig() # returns cos(a)*cos(b) - sin(a)*sin(b)
limit((xˆ2+1)/(2+x+3*xˆ2), x=infinity) # returns 1/3
limit(sin(x)/x, x=0) # returns 1
diff(acos(x),x) # returns -1/sqrt(1 - xˆ2)
f = exp(x)*log(x)
f.diff(x,3) # returns e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3
solve(a*x^2 + b*x + c, x) # returns [x == (-sqrt(b^2 - 4*a*c) - b)/(2*a),
# x == (sqrt(b^2 - 4*a*c) - b)/(2*a)]
微分方程
編輯t = var('t') # define a variable t
x = function('x',t) # define x to be a function of that variable
DE = lambda y: diff(y,t) + y - 1
desolve(DE(x(t)), [x,t]) # returns '%e^-t*(%e^t+%c)'
線性代數
編輯A = Matrix([[1,2,3],[3,2,1],[1,1,1]])
y = vector([0,-4,-1])
A.solve_right(y) # returns (-2, 1, 0)
A.eigenvalues() # returns [5, 0, -1]
B = Matrix([[1,2,3],[3,2,1],[1,2,1]])
B.inverse() # returns [ 0 1/2 -1/2]
# [-1/4 -1/4 1]
# [ 1/2 0 -1/2]
# Call numpy for the Moore-Penrose pseudo-inverse,
# since Sage does not support that yet.
import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # returns [0.1 0.2]
# [0.1 0.2]
數論
編輯prime_pi(1000000) # returns 78498, the number of primes less than one million
E = EllipticCurve('389a') # construct an elliptic curve from its Cremona label
P, Q = E.gens()
7*P + Q # returns (2869/676 : -171989/17576 : 1)
歷史
編輯只列出了主要釋出版本。Sage採用的「早釋出,常釋出」的理念,每兩至三個星期釋出一次。[5]
版本 | 釋出日期 | 說明 |
---|---|---|
0.1 | 2005年1月 | 包括 Pari,但不包含GAP和 Singular |
0.2 - 0.4 | 2005年5-7月 | Cremona的資料庫,多元多項式,大型有限域和更多的文件 |
0.5 - 0.7 | 2005年8-9月 | 向量空間,環,模組化符號和Windows使用 |
0.8 | 2005年10月 | 完整釋出的GAP,和Singular |
0.9 | 2005年11月 | 添加了Maxima和clisp |
1.0 | 2006年2月 | |
2.0 | 2007年1月 | |
3.0 | 2008年4月 | |
4.0 | 2009年5月 | |
5.0 | 2012年5月 | 5.0里程碑(頁面存檔備份,存於互聯網檔案館) |
6.0 | 2013年12月 |
2007年,Sage贏得自由軟件的國際競爭中科學軟件部分的Les Trophées du Libre首獎。 [6]
參見
編輯參考文獻
編輯- ^ 1.0 1.1 Release 10.4. 2024年7月20日 [2024年7月27日].
- ^ Stein, William. SAGE: A Computer System for Algebra and Geometry Experimentation. [30 March 2012]. (原始內容存檔於2012-02-10).
- ^ Sage文档. [2010-11-26]. (原始內容存檔於2010-11-29).
- ^ Sage - Acknowledgement. [2010-07-13]. (原始內容存檔於2010-06-12).
- ^ 存档副本. [2014-05-25]. (原始內容存檔於2014-05-27).
- ^ Free Software Brings Affordability, Transparency To Mathematics. Science Daily. December 7, 2007 [2008-07-20]. (原始內容存檔於2012-04-19).