SageMath(曾叫做SageSAGE,為「System for Algebra and Geometry Experimentation」的首字母縮寫[2]),是一個覆蓋許多數學功能的應用軟件,包括代數組合數學圖論計算數學數論微積分統計

SageMath
首次發布2005年2月24日,​19年前​(2005-02-24
當前版本10.4[1]在維基數據編輯(2024年7月20日,3個月前)
源代碼庫 編輯維基數據鏈接
編程語言PythonCython
操作系統跨平台
平台Python
文件大小1.1 GBMS Windows
類型計算機代數系統
許可協議GNU通用公共許可證
網站www.sagemath.org

SAGE的第一個版本在GNU許可證下發布於2005年2月24日,最初的目標是創造一個「MagmaMapleMathematicaMATLAB的開源替代品」。Sage的主導開發人員威廉·斯坦因是華盛頓大學數學家

功能

編輯
 
Sage文檔在Firefox(Mozilla),Opera,Konqueror和Safari的界面。
 
使用Sage Notebook接口的方程求解和排版。

Sage的功能包括[3]

  • 一個用於回顧及重新使用以前的輸入和輸出及加入圖形和文本注釋的記事本文檔接口,可在通用的網頁瀏覽器如FirefoxOperaKonquerorSafari中使用。在安全和保密要求高的情況下可通過HTTPS與記事本連接,Sage可同時在本地和遠程使用。
  • 一個使用IPython的基於文本的命令行界面
  • Python編程語言,支持函數化編程面向對象的結構。
  • 支持多核處理器,多處理器,及在並行計算
  • 使用MaximaSymPy進行微積分計算。
  • 使用GSLSciPyNumPy做線性代數數值計算。
  • 基礎特殊數學函數庫
  • 函數和數據的二維和三維圖形顯示
  • 矩陣和數據處理工具,支持稀疏數組
  • 使用RSciPy的多元統計分析
  • 一個在計算和應用上添加用戶界面的工具箱的
  • 使用Pylab以及Python編程語言的圖像處理工具
  • 圖論可視化和分析工具
  • 數論的函數庫
  • 數據,圖像,視頻,聲音,計算機輔助設計,地理信息系統,文檔和生物醫學格式的輸入輸出過濾器
  • 適當支持在函數中進行複數, 任意精度及符號計算
  • 包括公式編輯的文字處理技術,並可在Sage內嵌入LaTeX文檔
  • Twisted提供的連接到SQLJava.NETC++FORTRAN語言的網絡工具,支持包括HTTPNNTPIMAPSSHIRCFTP等在內的大量協議
  • MathematicaMaximaMaple等一些第三方軟件的接口 ,允許用戶組合軟件及比較輸出和性能。因此,它也是一個類似於GNU TeXmacs的其他數學工具的「前端」
  • 使用MoinMoin作為知識管理的維基系統
  • 使用Sphinx的文檔管理
  • 一個自動化測試套件,允許計算機終端用戶進行測試

雖然不是Sage直接提供的功能,但Sage可以從Mathematica內部調用。Mathematica的一個記事本可用於此。

設計理念

編輯

威廉.斯坦在設計Sage時意識到了有不同的語言(包括有CC++FortranPython)編寫的大量現成的大型開源數學軟件可用。

因此,Sage(用PythonCython實現的)將所有專用的數學軟件集成到一個通用的接口而不是從頭開發。用戶只需要了解Python

Sage由學生和專業人士開發。Sage的開發由志願工作和贈款支持。 [4]

性能

編輯

二進制包和源代碼都可以從Sage頁面下載。如果從源代碼構建,許多包含的庫如AtlasFLINTNTL和都會針對該計算機考慮到處理器數量,緩存大小的,是否有硬件支持SSE指令等進行調整和優化。

許可和可用性

編輯

Sage在GNU通用公共許可證2+下自由軟件條款下發布 。Sage可通過多種方式獲得:

Sage包含的軟件包

編輯

如上所述,SAGE的理念是利用現有的任何開放源碼庫。因此,借用了許多項目。

Sage中包含的數學軟件包
代數 GAP英語GAP (computer algebra system)MaximaSingular
代數幾何 Singular
任意精度計算 MPIRMPFRMPFINTL
算術幾何 PARI/GP, NTLmwrankecm
微積分 MaximaSymPyGiNaC
組合數學 Symmetrica,Sage-Combinat
線性代數 ATLASBLASLAPACKNumPyLinBoxIMLGSL
圖論 NetworkX
群論 GAP英語GAP (computer algebra system)
數值計算 GSLSciPyNumPyATLAS
數論 PARI/GPFLINTNTL
統計計算 R, SciPy
Sage中包含的其它包
命令行 IPython
數據庫 ZODBPython PicklesSQLite
圖形界面 Sage Notebook, jsmath
圖像 MatplotlibTachyon3dGD, 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]

Sage版本
版本 發布日期 說明
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. ^ 1.0 1.1 Release 10.4. 2024年7月20日 [2024年7月27日]. 
  2. ^ Stein, William. SAGE: A Computer System for Algebra and Geometry Experimentation. [30 March 2012]. (原始內容存檔於2012-02-10). 
  3. ^ Sage文档. [2010-11-26]. (原始內容存檔於2010-11-29). 
  4. ^ Sage - Acknowledgement. [2010-07-13]. (原始內容存檔於2010-06-12). 
  5. ^ 存档副本. [2014-05-25]. (原始內容存檔於2014-05-27). 
  6. ^ Free Software Brings Affordability, Transparency To Mathematics. Science Daily. December 7, 2007 [2008-07-20]. (原始內容存檔於2012-04-19). 

外部連結

編輯