SymPy
![]() | |
初版 | 2007年 |
---|---|
最新版 |
1.13.3[1] ![]() |
リポジトリ | |
プログラミング 言語 | Python |
対応OS | クロスプラットフォーム |
種別 | 計算機代数 |
ライセンス | New BSD license |
公式サイト | www |
SymPy は、プログラミング言語Pythonで記号計算を行うためのオープンソースのライブラリである(Python用の離散事象シミュレーションライブラリ SimPyと混同しやすい名前だが別ものである)。プロジェクトの目的は、完全な機能を持つ計算機代数システム (CAS; Computer Algebra System) を完備すること、さらに、拡張性を損なわないようにソースコードを可能な限り簡素に保つこと、とされている。SymPyはすべてPythonで書かれており、オプション機能であるプロット機能以外では、他の第三者製ライブラリに依存しない。
SymPyは、BSDライセンスを採用している自由ソフトウェアである。Ondřej ČertíkとAaron Meurerを中心に開発が進められている。
特徴
コア機能
- 基本演算 *, /, +, -, **
- 式の簡約化 (
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.)
- テイラー展開(ローラン展開)
方程式
- 多項方程式
- 代数方程式
- 微分方程式
- 差分方程式
- 方程式系(連立方程式)
組み合わせ論
離散数学
行列
幾何
プロット
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'
脚注
- ^ "Release 1.13.3"; 閲覧日: 2024年9月26日; 出版日: 2024年9月18日.