読者です 読者をやめる 読者になる 読者になる

ますはらの日記(?)

無線通信の勉強をしてる陸上部の学生のぼやき(?)

Pythonで数値解析〜代数計算も可能な環境にしてみた〜

Python 数値解析

どうも。
今日は行列計算やグラフを描くだけではなく、代数計算(微積分や極限など…)をできるようにsympyライブラリを導入してみました!


Q. sympyライブラリはどうやって導入するか?

やり方はとても簡単で自分の場合はある程度pythonに対する環境は整っていたので次の1行を実行するだけで終わりました(笑)

pip install sympy

これだけで済むようにする方法を僕から(僕は情弱なので…)詳しく説明することはできませんので、過去の記事で一通りのPythonで数値解析をする環境を整える手順などを紹介しているので、それを参照しながら同時に導入していただければいいのではないかと思います。

mathharachan.hatenablog.com


ただし、ここで注意が(僕が陥っただけのことですが…)
僕のPCではpythonは2系も3系も使える環境で、今回はpipでインストールしたので2系で扱えるようになっているだろうと勝手に思い、いざpythonと打ち込み、sympyの力を体感しようと思ったら扱えませんでした(笑)何故だろう?と思い、python3で実行してみたところ扱えました( ´ ▽ ` )

ここからはsympyを使って代数計算させてみようと思います( ^ω^ )
今回は方程式を解くのを例にやってみます。

・方程式を解く
ここでは方程式 {\displaystyle x^{4} - 1 = 0}の解を求めてみました。求める手順は次の通りです。

$python3
>>>from sympy import *
>>>x = Symbol('x') #xを変数として扱う
>>>solve(x**4 - 1, x)
[-1, 1, -I, I]

基本的に関数solveはsolve([解を求めたい式], [変数])として使われる。また解を求める際、解を求めたい式=0として処理される。
大学でmathematicaを実験で扱ったのですが、それを使えばいいじゃないかとも思ったのですが、次数の高い方程式の解を求めようとすると結構(いや、かなり)面倒臭いのでmathematicaは偉大だな、とか感じました。
次数の高い方程式の解(というより近似値かな?)を求める方法を調べたらこのページを見つけたので参考までに。
API docs for “sympy.simplify.rootof.RootOf”


今後は以下のものを参考にしながら面白いことができればと思います。
3.2. Sympy : Python での代数計算 — Scipy lecture notes

myenigma.hatenablog.com


それでは、また。