SymPy
提供: miniwiki
SymPy は、プログラミング言語Pythonで記号計算を行うためのライブラリである。(Python用の離散事象シミュレーションライブラリであるSimPy (en) と混同しやすい名前であるが、別のものである。) プロジェクトの目的は、完全な機能を持つ計算機代数システム (CAS; Computer Algebra System) を完備すること、さらに、拡張性を損なわないようにソースコードを可能な限り簡素に保つこと、とされている。SymPyはすべてPythonで書かれており、他の第三者製ライブラリは、オプションとしてのプロット機能以外には、何も必要としない。
SymPyは、BSDライセンスを採用しているフリーソフトウェアである。Ondřej ČertíkとAaron Meurerを中心に開発が進められている。
Contents
特徴
最新のソースコードは 13000 行ほど(コメントと docstring (en) を含めて)であり、以下の機能を実装している。
コア機能
- 基本演算 *, /, +, -, **
- 式の簡約化 (
a*b*b + 2*b*a*b
→3*a*b**2
など) - 式の展開 (
(a+b)**2
→a**2 + 2*a*b + b**2
など) - 数学関数(三角法、双曲線、指数対数、根、絶対値、階乗、ガンマ関数、ゼータ関数、多項式、球面調和関数、特殊関数、など)
- 複素数 (
exp(I*x).expand(complex=True)
→cos(x)+I*sin(x)
など) - 記号の置換 (
x
→ln(x)
, orsin
→cos
など) - 任意桁数の整数・有理数、任意精度の浮動小数点実数
- 非可換な演算
- パターンマッチング
多項式
微積分
- 極限
- 微分
- 積分(リッシュのアルゴリズム、etc.)
- テイラー展開(ローラン展開)
方程式
- 多項方程式
- 代数方程式
- 微分方程式
- 差分方程式
- 方程式系(連立方程式)
組み合わせ論
- 順列
- 組み合わせ
- 集合の分割
- 部分集合
- 順列集合
- グレイコード、Prufer sequence
離散数学
- 二項係数
- 総和
- 総乗
- 数論
- 論理式
行列
- 基本演算
- 行列式
- 固有値・固有ベクトル
- 逆行列
- 解
- 抽象演算
幾何
- 点、線、光線、線分、円、楕円、ポリゴン、など
- 交差判定
- 傾き
- 類似性
プロット
Pygletモジュールが必要。
- 座標系
- 幾何のプロット
- 2Dおよび3Dのポート
- 対話的インタフェース
- 色
物理学
統計学
出力
関連するプロジェクト
- Sage: Mathematica、Maple、MATLAB、Magma をあわせた機能を持つ環境を構築することを目的として開発が進められている、オープンソースソフトウェア (Sageの内部でSymPyが利用されている)
- mpmath: 任意精度の浮動小数点演算を行うためのPythonライブラリ (SymPy の内部で利用している)
- SympyCore: SymPyとは別の、PythonによるCASの実装
- symbide: SymPyが使っているGUIでPyGTKで書かれている
- SymFE: Pythonで書かれた、有限要素法を記号計算で行うソフトウェア
例
微分:
>>> from sympy import *
>>> x,y = symbols('x y')
>>> f = x**2 / y + 2 * x - ln(y)
>>> diff(f,x)
2 + 2*x/y
>>> diff(f,y)
-1/y - x**2*y**(-2)
>>> diff(diff(f,x),y)
-2*x*y**(-2)
プロット:
>>> from sympy import *
>>> Plot(cos(x*3)*cos(y*5)-y)
[0]: -y + cos(3*x)*cos(5*y), 'mode=cartesian'