7
13

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 5 years have passed since last update.

SymPyでラプラス変換

Last updated at Posted at 2019-08-16

先駆者様

Qiitaでは

Python: ラプラス変換(数式通り実装してみた)

という記事がありました。しかしインターネット上を調べてみるとSymPyなる便利なモジュールがあるようなので、それでラプラス変換をしてみましょう。

ラプラス変換

SymPyのラプラス変換機能を用いるためにはlaplace_transform関数を用います。

>>> import sympy as sp
>>> s, t = sp.symbols('s, t')
>>> w = sp.symbols('w', real=True)
>>> sp.laplace_transform(sp.cos(w*t), t, s)
(s/(s**2 + w**2), 0, Eq(Abs(periodic_argument(polar_lift(w)**2, oo)), 0))

上述の最終行の先頭がラプラス変換結果です。ここでは$\cos (wt)$を変数$t$から変数$s$の関数に変換しています。

ラプラス逆変換

$\frac{s}{s^2+w^2}$が逆変換によって$\cos$関数に戻ることも確認してみましょう。そのためにはinverse_laplace_transform関数を用います。変数$s$から変数$t$への変換であることに留意しましょう。

>>> expression = sp.laplace_transform(sp.cos(w*t), t, s)
>>> print(expression)
(s/(s**2 + w**2), 0, Eq(Abs(periodic_argument(polar_lift(w)**2, oo)), 0))
>>> sp.inverse_laplace_transform(expression[0], s, t)
cos(t*w)*Heaviside(t)

となり、無事に$\cos$関数に戻ってくることができました。

結言

なんとなく我が家にラプラス変換の本が転がっていたので、「これをPythonで行うにはどうすればよいのか?」という暇つぶし程度に考えていましたが、結果SymPyの威力を思い知らされた、そんな記事の仕上がりになりました。

7
13
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
7
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?