SageMath

維基百科,自由的百科全書
跳至導覽 跳至搜尋
SageMath
File:Sage-logo-2018.svg
首次釋出2005年2月24日,​21年前​(2005-02-24
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    程式語言PythonCython
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統跨平台
      平台Python
      檔案大小1.1 GBMS Windows
      類型計算機代數系統
      授權條款GNU通用公眾授權條款
      網站www.sagemath.org

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

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

      功能[編輯]

      File:Sage - plot.png
      Sage文件在Firefox(Mozilla),Opera,Konqueror和Safari的介面。
      File:SAGE equation solve.jpeg
      使用Sage Notebook介面的方程求解和排版。

      Sage的功能包括[2]

      • 一個用於回顧及重新使用以前的輸入和輸出及加入圖形和文字注釋的記事本文件介面,可在通用的網頁瀏覽器如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的開發由志願工作和贈款支援。 [3]

      效能[編輯]

      二進制包和原始碼都可以從Sage頁面下載。如果從原始碼構建,許多包含的庫如AtlasFLINTNTL和都會針對該電腦考慮到處理器數量,快取大小的,是否有硬體支援SSE指令等進行調整和最佳化。

      授權和可用性[編輯]

      Sage在GNU通用公眾授權條款2+下自由軟體條款下釋出 。Sage可通過多種方式獲得:

      • 原始碼可以直接從網上下載的下載頁面[4]。開發版本的Sage也可用,不建議終端使用者使用。
      • 可以下載用於LinuxOS XSolaris(x86和SPARC)及windows的可執行檔。
      • 一個包含可啟動Linux作業系統的live CD。允許不安裝Linux直接使用Sage。

      Sage包含的軟體套件[編輯]

      如上所述,SAGE的理念是利用現有的任何開放原始碼庫。因此,借用了許多專案。

      Sage中包含的數學軟體套件
      代數 GAP英語GAP (computer algebra system)MaximaSingular
      代數幾何 Singular
      任意精度計算 MPIRMPFRMPFINTL
      算術幾何 PARI/GPNTLmwrankecm
      微積分 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. ^ Stein, William. SAGE: A Computer System for Algebra and Geometry Experimentation. [30 March 2012]. (原始內容存檔於2012-02-10). 
      2. ^ Sage文档. [2010-11-26]. (原始內容存檔於2010-11-29). 
      3. ^ Sage - Acknowledgement. [2010-07-13]. (原始內容存檔於2010-06-12). 
      4. ^ 下載頁面頁面存檔備份,存於網際網路檔案館
      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). 

      外部連結[編輯]