(Translated by https://www.hiragana.jp/)
SageMath - Wikipedia コンテンツにスキップ

SageMath

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
SageMath
Sage logo
初版しょはん 2005ねん2がつ14にち (19ねんまえ) (2005-02-14)
最新さいしんばん 10.3 - 2023ねん8がつ20日はつか (12かげつまえ) (2023-08-20)[1] [±]
最新さいしん評価ひょうかばん 10.2rc4 - 2023ねん11月17にち (9かげつまえ) (2023-11-17)[2] [±]
リポジトリ ウィキデータを編集
プログラミング
言語げんご
Python, Cython
対応たいおうOS Linux, macOS, Microsoft Windows, Solaris, Android, iOS
プラットフォーム
種別しゅべつ 計算けいさん代数だいすう
ライセンス GPLv3
公式こうしきサイト www.sagemath.org ウィキデータを編集
テンプレートを表示ひょうじ
ウィリアム・スタイン(2011ねん6がつ

SageMath(セイジ、以前いぜんはSage、SAGEとしるした)は数学すうがく幅広はばひろ処理しょりあつかソフトウェアである。あつか処理しょり計算けいさん代数だいすうわせ数値すうち計算けいさんなど多岐たきおよぶ。工学こうがくてき応用おうようくわ基礎きそ科学かがく研究けんきゅう対応たいおうしている。

SageMathは2005ねん2がつ24にちフリーソフトウェアとしてGNU General Public Licenseもと初版しょはん公開こうかいされた。その開発かいはつ目的もくてきMagmaMapleMathematica(いずれも計算けいさん代数だいすうソフトウェア)、MATLAB代替だいたいとなるフリーかつオープンソースなソフトウェアを提供ていきょうすることであった[3]開発かいはつは、べいワシントン大学だいがく数学すうがくじゅん教授きょうじゅのウィリアム・スタイン (William Stein) が主導しゅどうしてはじまった。

SageMathはPythonプログラミング言語げんご使用しようしており、手続てつづがた関数かんすうがたオブジェクト指向しこうによるプログラム記述きじゅつおこなうことができる。

特徴とくちょう

[編集へんしゅう]
Sageのドキュメント(ノートブック)を操作そうさするインターフェイスは、Firefox (および Mozilla)、OperaKonquerorSafari実行じっこうできる
Sageノートブックのウェブインターフェースを使つかっていた数式すうしきれい

SageMath のマニュアルに記載きさいされている機能きのうから、以下いか抜粋ばっすいする[4]

インタフェース
  • ノートブック形式けいしき対話たいわてき作業さぎょうおこなインタフェースつ。そのためそれまでの入力にゅうりょく確認かくにんしたりさい利用りようしたりすることが簡便かんべんである。文字もじ入出力にゅうしゅつりょく画像がぞう両方りょうほうあつかえ、おおくのウェブブラウザFirefoxOperaKonquerorSafariなど)から利用りようできる。状況じょうきょうおうじてHTTPS接続せつぞくおこなうこともでき、Sageのノートブックはネットワークしでも、ローカルでもあつかうことができる。
  • IPythonによるコマンドライン・インターフェイス
  • Pythonの導入どうにゅうによる、手続てつづがた関数かんすうがた、オブジェクト指向しこう両立りょうりつするプログラミング
  • MaximaSymPy使つかった計算けいさんのサポート
  • スライダーなどの直観ちょっかんてき操作そうさそなえたGUI[5]
  • ユーザインタフェース追加ついかするためのツールキット
  • データ、画像がぞう動画どうが音声おんせいCADきゃどGIS (地理ちり情報じょうほうシステム)、ワープロ文書ぶんしょ医用いようデータ形式けいしき入出力にゅうしゅつりょく
  • 数式すうしき表示ひょうじLaTeX 文書ぶんしょ[6]
  • Twisted によるネットワーク経由けいゆSQLJava.NET FrameworkC++FORTRAN利用りようツール (これによりHTTPNNTPIMAPSSHIRCFTP利用りよう可能かのうとなっている)
  • 外部がいぶソフトウェア(Mathematica、Magma、Mapleなど)をSageMathからし、処理しょり結果けっか実行じっこう速度そくど比較ひかくする機能きのうGNU TeXmacsのような、外部がいぶソフトウェアへのフロントエンドとしてSageMathを利用りようできる)
  • 情報じょうほう集約しゅうやくのためのWikiシステムとして MoinMoinそなえる
  • ユーザーから利用りようできる、テストの自動じどう実行じっこう環境かんきょう
  • FORTRAN、C、C++とCythonのコードの実行じっこう
演算えんざん
グラフ描画びょうが
  • データおよび関数かんすうの2Dおよび3Dプロット
  • グラフ(ノードとリンクからなる)の可視かし解析かいせき

このほかに、SageMathが直接ちょくせつ提供ていきょうする機能きのうではないが、MathematicaからSageMathをして利用りようすることができる[7]。そのための Mathematicaノートブックが用意よういされている[8]

開発かいはつ方針ほうしん

[編集へんしゅう]

ウィリアム・スタインは設計せっけいにあたって、以下いか要素ようそんだ。

  • 現実げんじつてき意味いみのある、Magma、Maple、Mathematica、MATLABの対抗たいこうとなるソフトウェアをつくげること。これを最初さいしょからやろうとすると、膨大ぼうだい労力ろうりょくようするであろうとかんがえられた。
  • 当時とうじすでに、多数たすう実用じつようえる数学すうがく関連かんれんソフトウェアがオープンソースで提供ていきょうされていたが、それぞれことなるプログラミング言語げんご(C、C++、FORTRAN、Pythonなどがおおかった)で実装じっそうされていた。

そこで、目的もくてきとするソフトウェアをゼロからはじめることはせずに、SageMathはPythonとCython使つかって、さまざまな数学すうがく関連かんれんソフトウェアを統合とうごうしてひとつのインターフェイスで使つかえるようにすることを目指めざした。Pythonは非常ひじょうおおくのアプリケーションで利用りようされている言語げんごであり、SageMathの利用りようしゃPythonだけをっていればよいことになる。

これを実現じつげんするためのオープンソース実装じっそうはまだなかったことが、SageMathを開発かいはつする動機どうきとなった。SageMathはいわゆる車輪しゃりんさい発明はつめいとはことなる。たとえばMathematicaはおなじような開発かいはつ方針ほうしんつくられているが、商用しょうようのソフトウェアはソース開示かいじ義務ぎむづけられているソフトウェアを利用りようすることができない。Sageにはそういった制限せいげんはなく、それだけ幅広はばひろ分野ぶんやのソフトウェアを利用りようすることができる。

SageMathの開発かいはつには、学生がくせい職業しょくぎょう研究けんきゅうしゃかかわっている。またボランティアの開発かいはつ労力ろうりょくくわえ、助成じょせいきんによる援助えんじょけている[9]

成果せいか

[編集へんしゅう]
  • 2007ねん : SageMathは国際こくさいてきなフリーソフトウェアのコンクールであるトルフェ・ド・リブレ英語えいごばん科学かがく技術ぎじゅつソフトウェア部門ぶもん一等いっとうしょう受賞じゅしょうしている[10]
  • 2012ねん : Google Summer of Codeのプロジェクトのひとつにえらばれた。[11]
  • 2013ねん : ACM/SIGSAM Jenksしょう受賞じゅしょう[12]
  • SageMath はおおくの数学すうがく論文ろんぶんほん引用いんようされている。[13][14]

性能せいのう

[編集へんしゅう]

SageMathのソースコードバイナリともに開発元かいはつもとのウェブページからダウンロードできる。SageMathをソースからビルドすると、その環境かんきょうのプロセッサすう、キャッシュのサイズ、SSEサポートの有無うむなどによって、SageMathの内部ないぶ利用りようするATLASFLINTNTLなどの数値すうち演算えんざんライブラリのチューニングがおこなわれる。SageMathの開発かいはつしゃおおくは実効じっこう性能せいのう向上こうじょう注力ちゅうりょくしており、なかには世界せかい最速さいそく目指めざしているものもある。

利用りよう条件じょうけん

[編集へんしゅう]

SageMathはGNU General Public License version 2+にしたがった利用りよう配布はいふができるフリーソフトウェアである。入手にゅうしゅ方法ほうほう複数ふくすう用意よういされている。

  • ソースコードはダウンロード・ページからダウンロードできる。開発かいはつしゃようとして、開発かいはつ途中とちゅうのバージョンもダウンロードできる。
  • Linux、macOS、Solaris(x86およびSPARCの両方りょうほう)についてはバイナリが用意よういされている。Solarisばん試験しけんてき提供ていきょうである。
  • LinuxのブータブルCDとしても配布はいふされている。これを使つかえば、SageMathのインストール作業さぎょうおこなわずに使つかうことができる。
  • Sageのオンラインばんhttp://demo.sagenb.org提供ていきょうされている。しかし技術ぎじゅつてき理由りゆうからユーザーが利用りようできるメモリサイズに、またセキュリティめん制限せいげんがある。

Sage 8.0 以降いこうからWindowsネイティブばんがリリースされている.

SageMathにふくまれるソフトウェア・パッケージ

[編集へんしゅう]
数学すうがく機能きのうのパッケージ
計算けいさん代数だいすう GAP, Maxima, SINGULAR
代数だいすう幾何きかがく SINGULAR
多倍たばいちょう計算けいさん MPIR, MPFR, MPFI, NTL, mpmath
かずろん幾何きかがく 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
GUI Sage Notebook, jsmath
グラフィクス Matplotlib, Tachyon3d, GD Graphics Library, Jmol
対話たいわてきプログラミング環境かんきょう Python
ネットワーク Twisted

利用りようれい

[編集へんしゅう]

数式すうしき処理しょり

[編集へんしゅう]
x,a,b,c = var('x,a,b,c')

log(sqrt(a))                            # returns log(a)/2
log(a/b).simplify_log()                 # returns log(a) - log(b)
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)
(a+b)ˆ5                                 # returns (b + a)ˆ5
expand((a+b)ˆ5)                         # returns bˆ5 + 5*a*bˆ4 + 10*aˆ2*bˆ3 +
                                        #         10*aˆ3*bˆ2 + 5*aˆ4*b + aˆ5

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)]

f = xˆ2 + 432/x
solve(f.diff(x)==0,x)                   # returns [x == 3*sqrt(3)*I - 3,
                                        #          x == -3*sqrt(3)*I - 3, x == 6]

微分びぶん方程式ほうていしき

[編集へんしゅう]
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)

開発かいはつ経緯けいい

[編集へんしゅう]

メジャーバーションについてのみしるす。SageMath のリリース方針ほうしんは、"Release Early, Release Often" であり、すう週間しゅうかんまたはいちヶ月かげつおきにリリースされている。

Sage versions
Version Release Date Description
0.1 2005ねん1がつ PARI/GP に対応たいおう、しかし GAP と Singular は対応たいおう
0.2 - 0.4 2005ねん3がつ〜6がつ Cremona データベース、変数へんすう多項式たこうしきだい規模きぼ有限ゆうげんたい、ドキュメントの整備せいび
0.5 - 0.7 2005ねん8がつ〜9月 ベクトル、たまき、モジュラー
0.8 2005ねん10がつ GAP のフルサポート、Singular サポート
0.9 2005ねん11月 Maxima、clisp 追加ついか
1.0 2006ねん2がつ
2.0 2007ねん1がつ
3.0 2008ねん4がつ Interacts, Rインターフェース
4.0 2009ねん5がつ Solaris 10サポート, 64bit OSXサポート
5.0 2012ねん5がつ OSX Lionサポート
6.0 2013ねん12月 Sageの開発かいはつはGitへ移行いこう
7.0 2016ねん1がつ
8.0 2017ねん7がつ

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ Releases”. GitHub. 2024ねん3がつ19にち閲覧えつらん
  2. ^ Tags”. GitHub. 2023ねん11月21にち閲覧えつらん
  3. ^ Stein, William (2007ねん6がつ12にち). “SAGE Days 4”. 2007ねん8がつ2にち閲覧えつらん英語えいご
  4. ^ Sage documentation英語えいご
  5. ^ Sage Interact functionality”. 2008ねん4がつ11にち閲覧えつらん英語えいご
  6. ^ The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition (英語えいご)
  7. ^ http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/ Calling Sage from Mathematica(英語えいご
  8. ^ http://facstaff.unca.edu/mcmcclur/Mathematica/Sage/UsingSage.nb A Mathematica notebook to call Sage from Mathematica.(英語えいご
  9. ^ Explicit Approaches to Modular Forms and Modular Abelian Varieties”. National Science Foundation (2006ねん4がつ14にち). 2007ねん7がつ24にち閲覧えつらん英語えいご
  10. ^ Free Software Brings Affordability, Transparency To Mathematics”. Science Daily (December 7 2007). 2008ねん7がつ20日はつか閲覧えつらん英語えいご
  11. ^ Sage Mathematical Software System”. 9 June 2012閲覧えつらん
  12. ^ SIGSAM: Awards and prizes”. 2 Aug 2013閲覧えつらん
  13. ^ Publications Citing Sage”. 14 July 2011閲覧えつらん
  14. ^ Publications Citing Sage-Combinat”. 14 July 2011閲覧えつらん

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Zimmermann, P., Casamayou, A., Cohen, N., Connan, G., Dumont, T., Fousse, L., ... & Bray, E. (2018). Computational Mathematics with SageMath. SIAM.
  • Kim, D. S., Lee, S. G., & Markowsky, G. (2010). Mobile Sage-Math for Linear Algebra and its Application. Electronic Journal of Mathematics & Technology, 4(3).
  • Ko, R. Y., Kim, D. S., Bak, J. Y., & Lee, S. G. (2009). Development of Mobile Sage-math and its use in Linear Algebra. Communications of Mathematical Education, 23(4), 1023-1041.
  • Heuberger, C., Krenn, D., & Kropf, S. (2014). Automata in SageMath---Combinatorics meet Theoretical Computer Science. arXiv preprint arXiv:1404.7458.

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]