Loading AI tools
ウィキペディアから
SageMath(セイジ、以前はSage、SAGEと記した)は数学の幅広い処理を扱うソフトウェアである。扱う処理は計算機代数、組み合わせ、数値計算など多岐に及ぶ。工学的応用に加え基礎科学の研究も対応している。
SageMathは2005年2月24日にフリーソフトウェアとしてGNU General Public Licenseの元で初版が公開された。その開発目的はMagma、Maple、Mathematica(いずれも計算機代数ソフトウェア)、MATLABの代替となるフリーかつオープンソースなソフトウェアを提供することであった[3]。開発は、米ワシントン大学の数学准教授のウィリアム・スタイン (William Stein) が主導して始まった。
SageMathはPythonプログラミング言語を使用しており、手続き型・関数型・オブジェクト指向によるプログラムの記述を行うことができる。
SageMath のマニュアルに記載されている機能から、以下に抜粋する[4]。
この他に、SageMathが直接提供する機能ではないが、MathematicaからSageMathを呼び出して利用することができる[7]。そのための Mathematicaノートブックが用意されている[8]。
ウィリアム・スタインは設計にあたって、以下の要素を取り込んだ。
そこで、目的とするソフトウェアをゼロから書き始めることはせずに、SageMathはPythonとCythonを使って、さまざまな数学関連ソフトウェアを統合して一つのインターフェイスで使えるようにすることを目指した。Pythonは非常に多くのアプリケーションで利用されている言語であり、SageMathの利用者はPythonだけを知っていればよいことになる。
これを実現するためのオープンソース実装はまだなかったことが、SageMathを開発する動機となった。SageMathはいわゆる車輪の再発明とは異なる。たとえばMathematicaは同じような開発方針で作られているが、商用のソフトウェアはソース開示を義務づけられているソフトウェアを利用することができない。Sageにはそういった制限はなく、それだけ幅広い分野のソフトウェアを利用することができる。
SageMathの開発には、学生も職業研究者も関わっている。またボランティアの開発労力に加え、助成金による援助も受けている[9]。
SageMathのソースコード、バイナリともに開発元のウェブページからダウンロードできる。SageMathをソースからビルドすると、その環境のプロセッサ数、キャッシュのサイズ、SSEサポートの有無などによって、SageMathの内部で利用するATLAS、FLINT、NTLなどの数値演算ライブラリのチューニングが行われる。SageMathの開発者の多くは実効性能の向上に注力しており、中には世界最速を目指しているものもある。
SageMathはGNU General Public License version 2+にしたがった利用、配布ができるフリーソフトウェアである。入手方法は複数用意されている。
計算機代数 | 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" であり、数週間または一ヶ月おきにリリースされている。
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月 |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.