SymPy を使ってみる
by
菊地時夫
—
last modified
2008-07-18 16:44
大学(理系)でよく使われるソフト
無料のソフトもあります
SymPy
- 数式処理
- 有理数計算
- 式の展開・因数分解・代入・方程式
- 微分・積分
- 行列・行列式 ... and more
展開・因数分解
>>> from sympy import *
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> (x + y)**2
(x + y)**2
>>> expand( (x + y)**2 )
2*x*y + x**2 + y**2
>>> factor( 2*x*y + x**2 + y**2 )
(x + y)**2
方程式
>>> a, b, c = symbols('abc')
>>> s = a*x**2 + b*x + c
>>> s
c + b*x + a*x**2
>>> solve(s, x)
[(1/2)/a*(-b + (-4*a*c + b**2)**(1/2)), (1/2)/a*(-b - (-4*a*c + b**2)*(1/2))]
>>> pprint(solve(s, x))
_____________ _____________
/ 2 / 2
-b + \/ -4*a*c + b -b - \/ -4*a*c + b
[---------------------, ---------------------]
2*a 2*a
微分・積分
>>> diff(sin(x)*cos(x), x)
cos(x)**2 - sin(x)**2
>>> integrate(cos(x)**2, x)
(1/2)*x + (1/2)*cos(x)*sin(x)
>>> pprint(_)
x cos(x)*sin(x)
- + -------------
2 2
インストール
インストール(2)
試してみる
- メニューから Python2.5 -> IDLE を起動する
- >>> というのが出ているが、これが Python のプロンプト(入力を促す印)。
- まずは、
from sympy import *
を入力
- 続いて、
x, y, z = symbols("xyz")
- これで、x, y, z を「変数」とする式の操作ができる
solve(x**2 -1, x)
とか試してみる
記号について
- * (アスタリスク)1つは 掛け算 (3x はダメ、 3*x はヨシ)
- ** は べき乗 (x^3 という書き方ではない)
- / (スラッシュ)は割り算
- sqrt(x) は 2乗根, x**(Rational(1)/3) で 3乗根
あとは
IPython を使った環境
- メニューから IPython -> IPython を探して、右クリックで「コピー」
- デスクトップ(など)に「貼り付け」
- プロパティを開いて、リンク先の最後の IPython を isympy に変更する
- 名前も isympy に変更する
- これをダブルクリックすると、SymPy Wiki などと同じ IPython 環境で実行できる