SymPyは、
Pythonで記号計算を行うためのオープンソースライブラリです。SimPyという類似名のライブラリがありますが、別物です。主な目的は、拡張性を維持しつつ、完全な計算機代数システム(CAS)を構築することです。SymPyは
Pythonで記述されており、プロット機能を除き、外部ライブラリへの依存を最小限に抑えています。
特徴
SymPyは
BSD[[ライセンス]]の自由ソフトウェアであり、Ondřej ČertíkとAaron Meurerを中心に開発が進められています。
コア機能
基本演算: `, /, +, -, *
`
式の簡約化: `a
bb + 2
ba
b → 3a
b2` のように式を簡潔にします。
式の展開: `(a+b)
2 → a2 + 2
ab + b*
2` のように式を展開します。
数学関数: 三角関数、双曲
線関数、指数関数、対数関数、根、絶対値、
階乗、ガンマ関数、ゼータ関数、多項式、球面調和関数、特殊関数などをサポートします。
複素数: `exp(Ix).expand(complex=True) → cos(x)+I
sin(x)` のように複素数を扱えます。
記号の置換: `x → ln(x)` や `sin → cos` のように記号を置換します。
任意桁数の整数・有理数、任意精度の浮動小数点実数を扱えます。
非可換な演算が可能です。
パターンマッチングが可能です。
多項式
基本演算: 除算、最大公約数などを実行できます。
因数分解が可能です。
無平方分解が可能です。
グレブナー基底を計算できます。
部分分数分解が可能です。
終結式を計算できます。
微積分
極限を計算できます。
微分を実行できます。
積分を実行できます(リッシュのアルゴリズムなどを使用)。
テイラー展開(ローラン展開)が可能です。
方程式
多項方程式を解けます。
代数方程式を解けます。
微分方程式を解けます。
差分方程式を解けます。
方程式系(連立方程式)を解けます。
組み合わせ論
順列、組み合わせを扱えます。
集合の分割を扱えます。
部分集合を扱えます。
順列集合を扱えます。
グレイコード、Prufer sequenceを扱えます。
離散数学
二項係数を計算できます。
総和を計算できます。
総乗・
階乗を計算できます。
論理式
行列
基本演算を実行できます。
行列式を計算できます。
固有値・固有ベクトルを計算できます。
逆行列を計算できます。
解を求めることができます。
抽象演算
幾何
点、
線、
光[[線]]、
線分、円、
楕円、
ポリゴンなどを扱えます。
交差判定が可能です。
傾きを計算できます。
類似性を判定できます。
プロット
Pygletモジュールが必要です。
座標系を使用します。
幾何図形をプロットできます。
2Dおよび3Dのポートをサポートします。
対話的インタフェースを提供します。
色を指定できます。
物理学
単位を扱えます。
力学、量子力学、ガウス光学、パウリ代数、ディラック代数をサポートします。
統計学
正規分布、
一様分布を扱えます。
確率を計算できます。
出力
pritty-printing: ASCIIアートによる式の出力、
LaTeX出力が可能です。
コード生成: Python, C, FORTRANのコードを生成できます。
関連プロジェクト
Sage:
Mathematica、
Maple、MATLAB、Magma の機能を統合することを目指すオープンソースソフトウェア (SymPyを利用)
mpmath: 任意精度の浮動小数点演算を行うPythonライブラリ (SymPyで使用)
SympyCore: 別の
PythonによるCAS実装
symbide: SymPy用GUI (PyGTKで記述)
SymFE:
有限要素法を記号計算で行うソフトウェア(
Python)
外部リンク
公式ウェブサイト
Planet SymPy
mpmath ホームページ
SympyCore ホームページ
Symbide ホームページ
SymFe ホームページ