3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[備忘録] Sympy.rewrite()で指数関数⇆三角関数の表記書き換え

Last updated at Posted at 2019-12-25

タイトルにもある通り個人的な備忘録としての記事です。
明らかな誤りなどありましたらご指摘頂けると大変助かります。

Sympyについて

[SymPy 1.5 documentation] (https://docs.sympy.org/latest/index.html)

SympyはPython上で記号計算を行うことができるライブラリで、紙のノートとペンを使って式を変形して方程式の解を求めるような流れをプログラム上で行うことができます。
学術書や技術書等で解説される理論の導出過程を追って学習する際や、便宜上必要な数式を用意する必要がある際等に重宝するのではないかと思い注目しています。

Sympy.rewrite()

sympy.core.basic.Basic.rewrite
このメソッドは、指定した関数を別の形の関数に表現し直す際に使用します。
波動とか複素関数などの計算過程で指数関数⇆三角関数の式変形をよく行うと思いますが、式簡略化のsympy.simplify()等と組み合わせて使うと便利そうです。

例題

次式の複素関数wについて実部と虚部に分ける場面を考えます。(U, αは定数)
$$
w = U e^{-i \alpha } \tag{1}
$$
式(1)に対して、
$$ u = Re[w],  v = -Im[w] $$
とおき、式(1)を次式のように表現することにします。
$$
w = u - iv \tag{2}
$$
この式(2)のu, vを求めます。

式(1)に対して、次式のオイラーの公式(Euler's formula)を用いて、指数関数を実数項と虚数項の和として書き換えます。
$$
e^{i \theta } = \cos{\theta} + i\sin{\theta} \tag{3}
$$
式(3)を式(1)に適用して、
$$
w = U (\cos{\alpha} - i\sin{\alpha}) \tag{4}
$$
したがって、
$$
u = Re\left[w\right]=U\cos{\alpha},$$$$v = -Im\left[w\right]=U\sin{\alpha}
$$

Sympyで記述する

# ライブラリとモジュールのインポート
import sympy as sp
from sympy import * 

# 定数U, α用の記号を定義
U, alpha = symbols('U alpha')

# 関数wを定義
w = Function("w")
w = U*exp(-I*alpha)

表示

print(w)  # wを文字で表示
w         # wを数式の書体で表示

結果
スクリーンショット 2019-12-25 17.53.11.png
ここで三角関数(sin, cos)を用いて表現し直すために、rewrite()を用います。

w.rewrite(exp, sin, cos)

結果
スクリーンショット 2019-12-25 17.57.14.png
また、expand()を用いると、式を展開することができます。

expand(w.rewrite(exp, sin, cos))

結果
スクリーンショット 2019-12-25 17.59.54.png

更に、re()を用いると式の実部と虚部を明示してくれます。

re(expand(w.rewrite(exp, sin, cos)))

結果
スクリーンショット 2019-12-25 18.10.41.png

まとめ

私は手計算による計算ミスが多いので、それをPythonに代行させられないかと思ったのがきっかけでSympyと出会いました。(執筆時点でまだ出会って3日間ほどですが...)
計算過程の各部における検算や、例題の自炊などにも使えそうなので、学生時代に出会っておけば色々と捗っただろうなと染み染み思いました。
学習ノートも嵩張る紙のノートじゃなくてJupyter使って.ipynbに書いてGithubで管理すれば学習過程も記録できますし、こうして記事の草稿にも使いまわせるので便利ですね。
手書きノートアプリのNotability等も(どちらかというと講演会とかの図入りメモ取り用)あるのですが、結局計算ミスで詰まる課題があったので、Sympyのようなライブラリの存在は助かります。
今後もっと扱いに慣れていこうと思います。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?