Julia(SymPy)でラプラス変換、逆変換を求める方法

どうも、木村(@kimu3_slime)です。

今回は、Julia(SymPy)でラプラス変換、逆変換を求める方法を紹介します。

 

準備

SymPyを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

ラプラス変換、逆変換の求め方

まず、今回記号として使う変数を用意しましょう。

 

ラプラス変換の定義

\[ \begin{aligned}L(f)(s) := \int_0 ^\infty e^{-st}f(t)dt\end{aligned} \]

です。変数\(t\)から\(s\)へのラプラス変換は、「sympy.laplace_transform(関数 ,t,s)」によって求められます。試しに定数関数を変換してみましょう。

第1成分が変換後の関数\(1/s\)です。第2成分を\(a\)とすると、それは\(\mathrm{Re }(s)>a\)において収束することを意味しています。第3成分は追加で補助的な収束条件が表示されるようです。

変換結果だけ見るならば、

\[ \begin{aligned}\frac{1}{s^{2}}\end{aligned} \]

\[ \begin{aligned}\frac{2}{s^{3}}\end{aligned} \]

といったようにすれば良いです。

 

三角関数、指数関数のラプラス変換を求めてみましょう。

\[ \begin{aligned}\frac{s}{s^{2} + ω^{2}}\end{aligned} \]

\[ \begin{aligned}\frac{1}{s^{2} + ω^{2}}\end{aligned} \]

\[ \begin{aligned}\frac{1}{s – ω}\end{aligned} \]

 

変数\(s\)から\(t\)へのラプラス逆変換は、「sympy.inverse_laplace_transform(関数 ,s,t)」で求められます。

\[ \begin{aligned}1\end{aligned} \]

\[ \begin{aligned}\frac{\cos{\left(t \right)}}{3} – \frac{\cos{\left(2 t \right)}}{3}\end{aligned} \]

\[ \begin{aligned}- 2 e^{- 2 t}\end{aligned} \]

\[ \begin{aligned}t e^{- t}\end{aligned} \]

部分分数分解をしなくても、簡単に有理関数のラプラス逆変換が求められます。

 

\(\frac{e^{-s}}{s}\)を逆ラプラス変換してみましょう。

\[ \begin{aligned}\theta\left(t – 1\right)\end{aligned} \]

この\(\theta\)は、SymPyにおいてはヘビサイド関数(単位ステップ関数)を意味しています。

\[ \begin{aligned}\theta(x) = \begin{cases} 0 & \text{for}\; x < 0 \\ \frac{1}{2} &\text{for}\; x = 0 \\1 & \text{for}\; x > 0 \end{cases}\end{aligned} \]

参考:Heaviside – sympy.org

ヘビサイド関数は「Heaviside(t)」として記述できます。これをラプラス変換すれば、さきほどの関数が得られます。

\[ \begin{aligned}\frac{e^{- s}}{s}\end{aligned} \]

 

ディラックのデルタ関数も、「DiracDelta(t)」で扱えます。

\[ \begin{aligned}1\end{aligned} \]

変数\(t\)の仮定を非負と指定しました。\(t\)が正であると仮定すると、デルタ関数の値が常に0になり、ラプラス変換が\(0\)になって意味がなくなってしまいます。

変数を少しずらして変換したり、逆変換してもきちんと結果が得られます。

\[ \begin{aligned}e^{- s}\end{aligned} \]

\[ \begin{aligned}\delta\left(t – 1\right)\end{aligned} \]

 

以上、Julia(SymPy)でラプラス変換、逆変換を求める方法を紹介してきました。

ラプラス変換、逆変換の表や結果を見なくても、数式を打ち込めば的確な結果が表示されるので便利ですね。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

ラプラス変換とは:定義と微分方程式への応用

単位ステップ関数とは、ラプラス変換と微分方程式への応用

デルタ関数、超関数とは:ラプラス変換、微分方程式への応用