SymPy を使ってみる

by 菊地時夫 — last modified 2008-07-18 16:44

大学(理系)でよく使われるソフト

  • Word/Excel/PowerPoint は(まぁ)あたりまえすぎ
  • Mathematica
    • 数式処理(微分・積分・行列、、、)
  • Matlab
    • データ処理・シミュレーション
  • どれも有料です

無料のソフトもあります

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 環境で実行できる