SymPy

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
SymPy
最新版 0.7.2 / 2012年10月16日(17か月前) (2012-10-16
プログラミング言語 Python
対応OS クロスプラットフォーム
種別 計算機代数
ライセンス New BSD license
公式サイト http://sympy.org/
テンプレートを表示

SymPy は、プログラミング言語Python記号計算を行うためののライブラリである。(Python用の離散事象シミュレーションライブラリであるSimPy (en) と混同しやすい名前であるが、別のものである。) プロジェクトの目的は、完全な機能を持つ計算機代数システム (CAS; Computer Algebra System) を完備すること、さらに、拡張性を損なわないようにソースコードを可能な限り簡素に保つこと、とされている。SymPyはすべてPythonで書かれており、他の第三者製ライブラリは、オプションとしてのプロット機能以外には、何も必要としない。

SymPyは、BSDライセンスを採用しているフリーソフトウェアである。Ondřej ČertíkとAaron Meurerを中心に開発が進められている。

特徴[編集]

最新のソースコードは 13000 行ほど(コメントと docstring (en) を含めて)であり、以下の機能を実装している。

コア機能[編集]

  • 基本演算 *, /, +, -, **
  • 式の簡約化 (a*b*b + 2*b*a*b3*a*b**2 など)
  • 式の展開 ((a+b)**2a**2 + 2*a*b + b**2 など)
  • 数学関数(三角法、双曲線、指数対数、根、絶対値、階乗、ガンマ関数、ゼータ関数、多項式、球面調和関数、特殊関数、など)
  • 複素数 (exp(I*x).expand(complex=True)cos(x)+I*sin(x) など)
  • 記号の置換 (xln(x), or sincosなど)
  • 任意桁数の整数有理数、任意精度の浮動小数点実数
  • 非可換な演算
  • パターンマッチング

多項式[編集]

微積分[編集]

方程式[編集]

  • 多項方程式
  • 代数方程式
  • 微分方程式
  • 差分方程式
  • 方程式系(連立方程式)

組み合わせ論[編集]

  • 順列
  • 組み合わせ
  • 集合の分割
  • 部分集合
  • 順列集合
  • グレイコード、Prufer sequence

離散数学[編集]

  • 二項係数
  • 総和
  • 総乗
  • 数論
  • 論理式

行列[編集]

  • 基本演算
  • 行列式
  • 固有値・固有ベクトル
  • 逆行列
  • 抽象演算

幾何[編集]

  • 点、線、光線、線分、円、楕円、ポリゴン、など
  • 交差判定
  • 傾き
  • 類似性

プロット[編集]

Pygletモジュールが必要。

  • 座標系
  • 幾何のプロット
  • 2Dおよび3Dのポート
  • 対話的インタフェース

物理学[編集]

統計学[編集]

出力[編集]

  • pritty-printing: ASCIIアートによる式の出力、LaTeX出力
  • コード生成: Python, C, FORTRAN


関連するプロジェクト[編集]

  • Sage: MathematicaMapleMATLABMagma をあわせた機能を持つ環境を構築することを目的として開発が進められている、オープンソースソフトウェア (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'

関連項目[編集]

外部リンク[編集]