つれづれなる備忘録

日々の発見をあるがままに綴る

Google Colabでpython5 ~ SymPyの紹介

 今回からGoogle ColabでプレインストールされているモジュールとしてSymPyの使い方を紹介していきたい。

1. SymPyとは

 通常の数値計算と異なり代数(文字)計算を実行するpythonモジュールで、機能としてはmathematicaやフリーウェアのmaximaに相当する。 SymPyのメリットとしてはPythonのモジュールを利用することができることの他に、SymPyに物理計算(力学、ベクトル、量子力学)に必要な関数などが用意されていることにある。 Anacondaを利用している場合は、SymPy自体はインストールされているのでimportすればすぐに使用することができる。

Installation — SymPy 1.9 documentation

2. SymPyの基本的な使い方

SymPyをロードするには、例えば

from sympy import *

通常aなどの文字は数値変数として認識されるので、シンボル(記号)として認識させる手続きが必要になる。例えばaをシンボルとして認識させるにはsynbols()を用いて

a=symbols('a')

例えば、

a**2
>a**2

となり文字計算が実行できていることが確認できる。複数のシンボルを定義するには

(x,y)=symbols('x,y')

シンボルか数値変数か確認するにはtype(変数名)を用いる。シンボルであれば

print(type(a))
><class 'sympy.core.symbol.Symbol'>

aがシンボルであることが表示される。数値であれば例えば

b=1
print(type(b))
><class 'int'>

bはint型であることが表示される。

3. 簡単な式の展開・因数分解

式を展開するにはexpand(式)を利用する。

expr=expand((x+1)**2)
expr
>x**2 + 2*x + 1

(x+1)**2が展開されてexprx**2 + 2*x + 1が格納される。

ここでxに何か数値を代入して計算させたい場合はsubs(変数,代入する変数)とする。 例えばxに1を代入するときはsubs(x,1)とする

expr.subs(x,1)
> 4

代入は数値だけでなくシンボルでもできる。

expr.subs(x,a)
>a**2 + 2*a + 1

展開とは逆に因数分解でまとめるにはfactor(式)を用いる

factor(expr)
>(x + 1)**2

展開した式がもとに戻っており因数分解されていることが確認できる。 なお因数分解できない場合は入力した式がそのまま出力される。

4. まとめ

 今回はpythonモジュールで代数計算を実行するSymPyの紹介と簡単な使用法について取り上げた。