微分方程式を解くとき、微分の操作が面倒に感じたことはありませんか。たとえば2階の定数係数線形常微分方程式 $y” + 3y’ + 2y = e^{-t}$ を特性方程式と未定係数法で解くのは、手順が煩雑です。もし、微分を「代数的な操作」に変換できたら、微分方程式が代数方程式になり、もっと簡単に解けるはずです。
この夢のような道具がラプラス変換(Laplace transform)です。ラプラス変換は、時間領域の関数 $f(t)$ を複素変数 $s$ の関数 $F(s)$ に変換し、微分を $s$ との乗算に置き換えます。微分方程式は代数方程式になり、その解を逆ラプラス変換で時間領域に戻すだけです。
日常の例でたとえると、外国語で書かれた難しい問題を、自分の母国語に翻訳してから解き、答えをまた外国語に戻す作業に似ています。「翻訳」にあたるのがラプラス変換、「母国語で解く」のが代数方程式の求解、「元に戻す」のが逆ラプラス変換です。翻訳の手間はかかりますが、問題そのものは格段に簡単になります。
ラプラス変換を理解すると、以下のような応用が開けます。
- 制御工学: 伝達関数 $G(s) = Y(s)/U(s)$ はラプラス変換で定義される。PID制御器の設計やボード線図の解析も $s$ 領域で行われます
- 回路解析: RLC回路の過渡応答をラプラス変換で解析する。キルヒホッフの法則を $s$ 領域で書くと、抵抗 $R$、インダクタンス $sL$、キャパシタンス $1/(sC)$ のインピーダンスで統一的に扱えます
- 信号処理: システムのインパルス応答とステップ応答。フィルタ設計では伝達関数の極と零点の配置が周波数特性を決定します
- 確率論: モーメント母関数 $M(t) = E[e^{tX}]$ はラプラス変換の特殊な場合であり、確率分布の性質を調べる強力な手段です
- 機械工学: 振動系の過渡応答解析や、梁のたわみ問題にもラプラス変換が活躍します
本記事の内容
- ラプラス変換の直感的な理解と定義
- 基本関数のラプラス変換表
- ラプラス変換の基本性質(線形性、微分、シフト、たたみ込み)
- 逆ラプラス変換の方法(部分分数分解)
- Pythonによる実装と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- テイラー展開の理論と応用 — 級数展開の基礎
- べき級数の収束半径と性質 — 収束の概念
ラプラス変換とは
直感的な理解
ラプラス変換を理解するために、まず「重み付き積分による変換」という考え方から始めましょう。
関数 $f(t)$($t \geq 0$)が与えられたとき、$e^{-st}$ という重み(減衰因子)を掛けて $0$ から $\infty$ まで積分します。$s$ が大きいほど重みが速く減衰し、$f(t)$ の初期の振る舞いが強調されます。$s$ が小さいと遠い将来の振る舞いも拾います。
つまり、ラプラス変換 $F(s)$ は「$f(t)$ の各時刻の情報を、$e^{-st}$ で重み付けして集約したもの」です。$s$ をパラメータとして動かすことで、$f(t)$ の異なる側面が見えてきます。
フーリエ変換との関係も重要です。$s = i\omega$(純虚数)とすると $e^{-st} = e^{-i\omega t}$ となり、フーリエ変換に帰着します。ラプラス変換は $s$ が複素数全体を動くため、フーリエ変換の一般化とも見なせます。減衰因子 $e^{-\sigma t}$($s = \sigma + i\omega$)があるおかげで、フーリエ変換が存在しない指数的に増大する関数も扱えます。
もう少し直感的に言えば、フーリエ変換は「信号にどんな周波数成分が含まれるか」を調べる道具ですが、ラプラス変換は「どんな周波数で、かつどれだけ減衰(または増大)するか」まで含めて調べる道具です。$s = \sigma + i\omega$ の実部 $\sigma$ が減衰率、虚部 $\omega$ が振動の角周波数に対応します。この2つの軸で信号を分析できるため、不安定なシステム(指数的に増大する出力を持つシステム)もラプラス変換なら取り扱えるのです。
数学的定義
関数 $f(t)$($t \geq 0$)のラプラス変換は
$$ \begin{equation} F(s) = \mathcal{L}\{f(t)\} = \int_0^{\infty} f(t) e^{-st} \, dt \end{equation} $$
ここで $s = \sigma + i\omega$ は複素数パラメータです。この積分が収束する $s$ の範囲を収束域(region of convergence, ROC)と呼びます。
$f(t)$ が指数位数(ある定数 $M, c$ が存在して $|f(t)| \leq Me^{ct}$)であれば、$\text{Re}(s) > c$ で積分が収束します。
収束域の考え方をもう少し掘り下げましょう。たとえば $f(t) = e^{3t}$ の場合、$|f(t)| = e^{3t}$ ですから $c = 3$ です。ラプラス変換の被積分関数は $e^{3t} \cdot e^{-st} = e^{-(s-3)t}$ となり、$\text{Re}(s) > 3$ でなければ $t \to \infty$ のとき発散してしまいます。逆に $\text{Re}(s) > 3$ であれば $e^{-(s-3)t} \to 0$($t \to \infty$)となるので積分は収束します。つまり、元の関数の「増大の速さ」が収束域の境界を決めるのです。
この定義を数学史的に見ると、ラプラス変換の名前はフランスの数学者ピエール=シモン・ラプラス(1749–1827)に由来しますが、実際にこの変換を体系的に用いたのは20世紀初頭のオリバー・ヘヴィサイド(1850–1925)で、彼は電信の回路解析にこの方法を導入しました。ヘヴィサイドは厳密な数学的正当化なしに演算子法(operational calculus)と呼ばれる手法を使い、同時代の数学者から批判を受けましたが、工学的には極めて有用でした。後にブロムウィッチやドエッチュらが数学的な基礎付けを行い、現在のラプラス変換の理論が確立されました。
直感的な理解を得たところで、具体的な関数のラプラス変換を計算してみましょう。
基本関数のラプラス変換
定数関数
最もシンプルな例として $f(t) = 1$($t \geq 0$ で常に1)のラプラス変換を定義に従って計算します。
$$ \mathcal{L}\{1\} = \int_0^{\infty} e^{-st} \, dt = \left[-\frac{e^{-st}}{s}\right]_0^{\infty} $$
$s > 0$ のとき $t \to \infty$ で $e^{-st} \to 0$ なので、上端の寄与は消えます。下端 $t = 0$ では $e^0 = 1$ ですから
$$ \mathcal{L}\{1\} = 0 – \left(-\frac{1}{s}\right) = \frac{1}{s} \quad (s > 0) $$
この結果は直感的にも理解できます。$1/s$ は $s$ が大きい(=急速に減衰する重みをかけている)ほど小さくなり、$s \to 0^+$ で発散します。重みが全く減衰しないと、定数関数の積分は無限大になってしまうからです。
指数関数
$f(t) = e^{at}$ のラプラス変換を求めます。指数関数同士の積は指数の足し算になるため、計算が見通しよく進みます。
$$ \mathcal{L}\{e^{at}\} = \int_0^{\infty} e^{at} e^{-st} \, dt = \int_0^{\infty} e^{-(s-a)t} \, dt = \frac{1}{s – a} \quad (s > a) $$
収束条件 $s > a$ に注意してください。元の関数が $e^{at}$ で増大するので、重み $e^{-st}$ による減衰がそれに勝つ($s > a$)必要があります。$a < 0$(減衰する指数関数)の場合、$s > a$ は $s > 0$ を含むどんな正の $s$ でも収束するため、扱いやすくなります。
$t$ のべき乗
$f(t) = t^n$($n$ は非負整数)のラプラス変換を求めましょう。$n = 1$ の場合を部分積分で計算すると
$$ \mathcal{L}\{t\} = \int_0^{\infty} t e^{-st} dt $$
$u = t$, $dv = e^{-st}dt$ とおくと $du = dt$, $v = -e^{-st}/s$ なので
$$ \mathcal{L}\{t\} = \left[-\frac{t e^{-st}}{s}\right]_0^{\infty} + \frac{1}{s}\int_0^{\infty} e^{-st}dt = 0 + \frac{1}{s} \cdot \frac{1}{s} = \frac{1}{s^2} $$
同様に部分積分を $n$ 回繰り返すと
$$ \mathcal{L}\{t^n\} = \frac{n!}{s^{n+1}} \quad (s > 0) $$
この公式はガンマ関数 $\Gamma(n+1) = n!$ との関係でも導出でき、$n$ が非負整数でない場合にも $n! \to \Gamma(n+1)$ と置き換えることで拡張できます。
三角関数
$\mathcal{L}\{\sin(\omega t)\}$ と $\mathcal{L}\{\cos(\omega t)\}$ は、部分積分を2回繰り返して求めることもできますが、オイラーの公式を使うとはるかにエレガントです。$e^{i\omega t} = \cos(\omega t) + i\sin(\omega t)$ より
$$ \mathcal{L}\{e^{i\omega t}\} = \frac{1}{s – i\omega} $$
右辺の分母と分子に $s + i\omega$ を掛けて有理化すると
$$ \frac{1}{s – i\omega} = \frac{s + i\omega}{(s – i\omega)(s + i\omega)} = \frac{s + i\omega}{s^2 + \omega^2} $$
実部と虚部を分けると
$$ \mathcal{L}\{\cos(\omega t)\} = \frac{s}{s^2 + \omega^2}, \quad \mathcal{L}\{\sin(\omega t)\} = \frac{\omega}{s^2 + \omega^2} $$
これらの結果の対称性は美しいです。$\cos$ の変換は分子に $s$($s$ 領域での「周波数」に対応)を持ち、$\sin$ の変換は分子に $\omega$(元の振動数)を持ちます。
ラプラス変換表
| $f(t)$($t \geq 0$) | $F(s) = \mathcal{L}\{f\}$ | 収束域 |
|---|---|---|
| $1$ | $\frac{1}{s}$ | $s > 0$ |
| $t^n$ | $\frac{n!}{s^{n+1}}$ | $s > 0$ |
| $e^{at}$ | $\frac{1}{s-a}$ | $s > a$ |
| $\sin(\omega t)$ | $\frac{\omega}{s^2 + \omega^2}$ | $s > 0$ |
| $\cos(\omega t)$ | $\frac{s}{s^2 + \omega^2}$ | $s > 0$ |
| $e^{at}\sin(\omega t)$ | $\frac{\omega}{(s-a)^2 + \omega^2}$ | $s > a$ |
| $e^{at}\cos(\omega t)$ | $\frac{s-a}{(s-a)^2 + \omega^2}$ | $s > a$ |
| $t e^{at}$ | $\frac{1}{(s-a)^2}$ | $s > a$ |
| $u(t-a)$(単位ステップ) | $\frac{e^{-as}}{s}$ | $s > 0$ |
| $\delta(t)$(デルタ関数) | $1$ | 全ての $s$ |
この表は実用上とても重要です。ラプラス変換を使って微分方程式を解くとき、毎回定義の積分を計算する必要はありません。変換表と次に紹介する性質(線形性やシフトなど)を組み合わせれば、ほとんどの変換はすぐに求まります。
基本関数のラプラス変換を手に入れたところで、次にラプラス変換の重要な性質を見ていきましょう。これらの性質が、ラプラス変換の真の威力を引き出す鍵です。
ラプラス変換の基本性質
線形性
ラプラス変換は線形変換です。すなわち、関数の定数倍や和に対して
$$ \mathcal{L}\{af(t) + bg(t)\} = aF(s) + bG(s) $$
が成り立ちます。これは積分の線形性(定数は積分の外に出せる、和の積分は積分の和)から直ちに従います。線形性のおかげで、複雑な関数をシンプルな関数の線形結合に分解し、それぞれのラプラス変換を変換表から求めて足し合わせることができます。
微分の変換(最重要)
$$ \begin{equation} \mathcal{L}\{f'(t)\} = sF(s) – f(0) \end{equation} $$
$$ \begin{equation} \mathcal{L}\{f”(t)\} = s^2 F(s) – sf(0) – f'(0) \end{equation} $$
一般に $\mathcal{L}\{f^{(n)}(t)\} = s^n F(s) – s^{n-1}f(0) – s^{n-2}f'(0) – \cdots – f^{(n-1)}(0)$
微分が $s$ の乗算に変わる — これがラプラス変換の核心です。微分方程式が代数方程式になる理由がここにあります。初期条件 $f(0), f'(0), \ldots$ が自動的に組み込まれることも大きな利点です。
この公式の証明は部分積分で得られます。$u = e^{-st}$, $dv = f'(t)dt$ とおくと $du = -se^{-st}dt$, $v = f(t)$ なので
$$ \mathcal{L}\{f’\} = \int_0^\infty f'(t)e^{-st}dt = [f(t)e^{-st}]_0^\infty + s\int_0^\infty f(t)e^{-st}dt $$
$t \to \infty$ で $f(t)e^{-st} \to 0$(指数位数の仮定より)なので
$$ \mathcal{L}\{f’\} = 0 – f(0) \cdot 1 + sF(s) = sF(s) – f(0) $$
2階微分の公式は、上の結果を $f’$ に繰り返し適用して得ます。$\mathcal{L}\{f”\} = \mathcal{L}\{(f’)’\} = s\mathcal{L}\{f’\} – f'(0) = s(sF(s) – f(0)) – f'(0) = s^2F(s) – sf(0) – f'(0)$ です。
この公式が「微分方程式を代数方程式に変換する」ことを、具体例で確認しましょう。$y” + 3y’ + 2y = 0$, $y(0) = 1$, $y'(0) = 0$ をラプラス変換すると
$$ s^2Y(s) – s \cdot 1 – 0 + 3(sY(s) – 1) + 2Y(s) = 0 $$
整理すると $(s^2 + 3s + 2)Y(s) = s + 3$ となり、$Y(s) = (s+3)/((s+1)(s+2))$ が得られます。微分方程式が $s$ についての代数方程式になりました。あとは逆ラプラス変換で $y(t)$ に戻すだけです。
$s$ 領域でのシフト
$$ \mathcal{L}\{e^{at}f(t)\} = F(s – a) $$
$s$ を $s – a$ に置き換えるだけです。これにより、$e^{at}\sin(\omega t)$ などの変換が即座に得られます。
証明は定義に立ち返ると自然です。
$$ \mathcal{L}\{e^{at}f(t)\} = \int_0^\infty e^{at}f(t)e^{-st}dt = \int_0^\infty f(t)e^{-(s-a)t}dt = F(s-a) $$
たとえば、$\mathcal{L}\{\sin(\omega t)\} = \omega/(s^2 + \omega^2)$ を知っていれば、$s$ を $s – a$ に置き換えるだけで $\mathcal{L}\{e^{at}\sin(\omega t)\} = \omega/((s-a)^2 + \omega^2)$ が得られます。わざわざ積分を計算し直す必要はありません。この性質は、制御工学で減衰振動の伝達関数を扱うときに頻繁に利用されます。
$t$ 領域でのシフト
$$ \mathcal{L}\{f(t-a)u(t-a)\} = e^{-as}F(s) \quad (a > 0) $$
$u(t-a)$ は単位ステップ関数($t < a$ で0、$t \geq a$ で1)です。
この性質は「遅延」のモデル化に直結します。たとえば、ある入力が時刻 $a$ だけ遅れて加わる場合、元の関数 $f(t)$ を $a$ だけ右にシフトした $f(t-a)u(t-a)$ として表現でき、そのラプラス変換は元の $F(s)$ に $e^{-as}$ を掛けるだけで得られます。通信工学での信号遅延や、制御工学でのむだ時間の解析で本質的に重要な性質です。
たたみ込み定理
$$ \begin{equation} \mathcal{L}\{(f * g)(t)\} = F(s) \cdot G(s) \end{equation} $$
ここで $(f * g)(t) = \int_0^t f(\tau)g(t – \tau) d\tau$ はたたみ込み(畳み込み)積分です。
たたみ込みのラプラス変換が積になるという性質は、線形時不変システムの解析で本質的に重要です。システムの入力 $u(t)$ とインパルス応答 $h(t)$ のたたみ込みが出力 $y(t) = (h * u)(t)$ であり、$s$ 領域では $Y(s) = H(s)U(s)$(伝達関数×入力のラプラス変換)となります。
積分の変換
$$ \mathcal{L}\left\{\int_0^t f(\tau) d\tau\right\} = \frac{F(s)}{s} $$
積分が $1/s$ の乗算に変わります。微分が $s$ の乗算に変わることと対を成す美しい結果です。微分と積分は逆演算なので、$s$ の乗算と $1/s$ の乗算(=$s$ での除算)も逆の関係にあるのは自然なことです。
$s$ 領域での微分
$$ \mathcal{L}\{t f(t)\} = -F'(s) $$
より一般に
$$ \mathcal{L}\{t^n f(t)\} = (-1)^n F^{(n)}(s) $$
$t$ を掛けることが $s$ での微分に対応します。この性質を使うと、たとえば $\mathcal{L}\{t e^{at}\}$ は $\mathcal{L}\{e^{at}\} = 1/(s-a)$ を $s$ で微分して符号を変えれば $1/(s-a)^2$ と直ちに求まります。
ラプラス変換の性質を理解したところで、逆変換の方法を学び、微分方程式の解法に応用してみましょう。
逆ラプラス変換
逆変換の考え方
厳密には、逆ラプラス変換はブロムウィッチ積分(Bromwich integral)と呼ばれる複素線積分で定義されます。
$$ f(t) = \mathcal{L}^{-1}\{F(s)\} = \frac{1}{2\pi i}\int_{c – i\infty}^{c + i\infty} F(s)e^{st}ds $$
ここで $c$ は $F(s)$ の全ての特異点の実部より大きい実数です。しかし、この複素線積分を毎回計算するのは大変です。実用上は、もっと簡単な方法があります。
部分分数分解
$F(s)$ から $f(t)$ を求める逆ラプラス変換 $f(t) = \mathcal{L}^{-1}\{F(s)\}$ の最も実用的な方法は、$F(s)$ を部分分数に分解してラプラス変換表を逆引きすることです。ラプラス変換の線形性により、$F(s) = F_1(s) + F_2(s) + \cdots$ と分解できれば、$f(t) = f_1(t) + f_2(t) + \cdots$ と各項を個別に逆変換すればよいのです。
例: $F(s) = \frac{3s + 5}{s^2 + 3s + 2}$ の逆変換を求めます。
分母を因数分解: $s^2 + 3s + 2 = (s+1)(s+2)$
部分分数分解:
$$ \frac{3s+5}{(s+1)(s+2)} = \frac{A}{s+1} + \frac{B}{s+2} $$
$s = -1$ を代入: $A = \frac{3(-1)+5}{(-1)+2} = 2$
$s = -2$ を代入: $B = \frac{3(-2)+5}{(-2)+1} = 1$
逆変換: $\frac{2}{s+1} + \frac{1}{s+2}$ → $f(t) = 2e^{-t} + e^{-2t}$
ここで $\frac{2}{s+1}$ は変換表の $\frac{1}{s-a}$ で $a = -1$ に対応するため $2e^{-t}$、同様に $\frac{1}{s+2}$ は $a = -2$ に対応するため $e^{-2t}$ と逆変換できました。部分分数分解の鍵は「$s$ に特定の値を代入して係数を求める」テクニック(ヘヴィサイドの展開定理、カバーアップ法とも呼ばれます)です。
重根の場合
分母に重根がある場合は、少し形が変わります。たとえば
$$ F(s) = \frac{2s + 3}{(s+1)^2} $$
の場合、部分分数分解の形は
$$ \frac{2s+3}{(s+1)^2} = \frac{A}{s+1} + \frac{B}{(s+1)^2} $$
通分すると $2s + 3 = A(s+1) + B$ です。$s = -1$ を代入すると $B = 1$、$s$ の係数を比較すると $A = 2$ です。したがって
$$ f(t) = 2e^{-t} + te^{-t} $$
ここで $\frac{1}{(s+1)^2}$ は変換表の $\frac{1}{(s-a)^2}$($a = -1$)に対応し、$te^{-t}$ に逆変換されます。
複素数の極の場合
$F(s) = \frac{s}{s^2 + 4s + 13}$ の逆変換を求めます。
分母を完全平方に: $s^2 + 4s + 13 = (s+2)^2 + 9 = (s+2)^2 + 3^2$
$$ \frac{s}{(s+2)^2 + 9} = \frac{(s+2) – 2}{(s+2)^2 + 9} = \frac{s+2}{(s+2)^2 + 9} – \frac{2}{(s+2)^2 + 9} $$
$s$ 領域シフトの公式を逆に使って
$$ f(t) = e^{-2t}\cos(3t) – \frac{2}{3}e^{-2t}\sin(3t) $$
複素数の極を持つ場合、逆変換の結果は必ず減衰振動($e^{-\sigma t}$ で減衰する $\sin$ や $\cos$)の形になります。極の実部 $\sigma = -2$ が減衰率、虚部 $\omega = 3$ が振動の角周波数を決めます。この対応は、制御工学で極の位置からシステムの応答特性を読み取る際に本質的に重要です。
ラプラス変換による微分方程式の解法手順
ここまでの知識をまとめると、ラプラス変換で微分方程式を解く手順は以下の通りです。
- 微分方程式の両辺にラプラス変換を施す — 微分の変換公式を用いて、$y(t)$ を $Y(s)$ に変換します
- 初期条件を代入する — $f(0), f'(0), \ldots$ の値が自動的に式に組み込まれます
- $Y(s)$ について代数的に解く — 微分方程式が代数方程式になっているので、通常の式変形で $Y(s)$ を求めます
- 逆ラプラス変換で $y(t)$ に戻す — 部分分数分解と変換表を使います
この手順の大きな利点は、初期条件の処理が自然に組み込まれることです。古典的な方法(特性方程式 + 未定係数法)では、一般解を求めた後に初期条件から定数を決定しますが、ラプラス変換では最初から初期条件が反映された特殊解が直接得られます。
理論を一通り学んだところで、Pythonで実装・可視化してみましょう。
Pythonでの実装と可視化
SymPyによるラプラス変換
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# ラプラス変換の数値的な検証
# f(t) = e^{-t}sin(2t) のラプラス変換
# F(s) = 2/((s+1)^2 + 4)
t = np.linspace(0, 10, 500)
f_t = np.exp(-t) * np.sin(2*t)
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (a) 時間領域の関数
ax = axes[0]
ax.plot(t, f_t, 'b-', linewidth=2)
ax.fill_between(t, 0, f_t, alpha=0.2, color='blue')
ax.set_xlabel('t', fontsize=12)
ax.set_ylabel('f(t)', fontsize=12)
ax.set_title(r'$f(t) = e^{-t}\sin(2t)$', fontsize=13)
ax.grid(True, alpha=0.3)
# (b) F(s) の大きさ(s = σ の実軸上)
ax = axes[1]
sigma = np.linspace(-0.5, 5, 500)
F_s = 2 / ((sigma + 1)**2 + 4)
ax.plot(sigma, F_s, 'r-', linewidth=2)
ax.fill_between(sigma, 0, F_s, alpha=0.2, color='red')
ax.set_xlabel(r'$\sigma$ (Re(s))', fontsize=12)
ax.set_ylabel(r'$F(\sigma)$', fontsize=12)
ax.set_title(r'$F(s) = 2/((s+1)^2+4)$ on real axis', fontsize=13)
ax.grid(True, alpha=0.3)
ax.axvline(-1, color='gray', linestyle='--', alpha=0.5, label='Pole Re=-1')
ax.legend(fontsize=10)
# (c) ラプラス変換の数値検証
ax = axes[2]
# 数値積分でF(σ)を計算し、理論値と比較
from scipy import integrate
sigma_test = np.linspace(0.1, 5, 30)
F_numerical = []
for s in sigma_test:
integrand = lambda t: np.exp(-t) * np.sin(2*t) * np.exp(-s*t)
val, _ = integrate.quad(integrand, 0, np.inf)
F_numerical.append(val)
F_theory = 2 / ((sigma_test + 1)**2 + 4)
ax.plot(sigma_test, F_numerical, 'bo', markersize=6, label='Numerical')
ax.plot(sigma_test, F_theory, 'r-', linewidth=2, label='Theory')
ax.set_xlabel(r'$\sigma$', fontsize=12)
ax.set_ylabel(r'$F(\sigma)$', fontsize=12)
ax.set_title('Numerical vs Analytical Laplace Transform', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('laplace_transform.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから、ラプラス変換の基本的な性質が確認できます。
-
左図(時間領域): $f(t) = e^{-t}\sin(2t)$ は減衰する振動関数です。$e^{-t}$ による減衰のため、$t$ が大きくなると急速にゼロに近づきます。
-
中央図($s$ 領域): ラプラス変換 $F(s) = 2/((s+1)^2 + 4)$ を実軸上にプロットしています。$s = -1$ のあたり(極の実部)でピークを持ちます。
-
右図(数値検証): 数値積分で計算したラプラス変換(青い丸)と解析的な結果(赤い実線)が完全に一致しています。
伝達関数とステップ応答
制御工学で重要な伝達関数とステップ応答を可視化します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 2次系の伝達関数: G(s) = wn^2 / (s^2 + 2*zeta*wn*s + wn^2)
wn = 2.0 # 固有振動数
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# (a) 様々な減衰比でのステップ応答
ax = axes[0]
zeta_values = [0.1, 0.3, 0.5, 0.7, 1.0, 2.0]
colors = plt.cm.viridis(np.linspace(0, 0.8, len(zeta_values)))
for zeta, color in zip(zeta_values, colors):
num = [wn**2]
den = [1, 2*zeta*wn, wn**2]
sys = signal.TransferFunction(num, den)
t, y = signal.step(sys, T=np.linspace(0, 10, 500))
ax.plot(t, y, color=color, linewidth=1.5, label=rf'$\zeta={zeta}$')
ax.axhline(1, color='gray', linestyle='--', alpha=0.5)
ax.set_xlabel('t', fontsize=12)
ax.set_ylabel('y(t)', fontsize=12)
ax.set_title('Step Response of 2nd Order System', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
# (b) インパルス応答
ax = axes[1]
for zeta, color in zip(zeta_values, colors):
num = [wn**2]
den = [1, 2*zeta*wn, wn**2]
sys = signal.TransferFunction(num, den)
t, y = signal.impulse(sys, T=np.linspace(0, 10, 500))
ax.plot(t, y, color=color, linewidth=1.5, label=rf'$\zeta={zeta}$')
ax.set_xlabel('t', fontsize=12)
ax.set_ylabel('h(t)', fontsize=12)
ax.set_title('Impulse Response of 2nd Order System', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('laplace_step_response.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから、ラプラス変換に基づく制御理論の基本概念が確認できます。
-
左図(ステップ応答): 減衰比 $\zeta$ が小さい($\zeta = 0.1$)と振動的な過渡応答になり、$\zeta = 1$(臨界減衰)以上では振動なく定常値に収束します。全てのケースで最終値は1に収束しますが、到達の仕方が大きく異なります。
-
右図(インパルス応答): デルタ関数入力に対する応答です。こちらも減衰比によって振動的か非振動的かが変わります。インパルス応答のラプラス変換がちょうど伝達関数 $G(s)$ に等しいことが、ラプラス変換の重要な性質です。
まとめ
本記事では、ラプラス変換の定義と基本性質について解説しました。
- ラプラス変換 $F(s) = \int_0^\infty f(t)e^{-st}dt$ は時間領域の関数を $s$ 領域に変換する
- 微分が乗算に変わる: $\mathcal{L}\{f’\} = sF(s) – f(0)$ — これが微分方程式を代数方程式に変換する鍵
- たたみ込み定理: $\mathcal{L}\{f*g\} = F(s)G(s)$ — 線形システムの解析の基盤
- 逆変換は部分分数分解とラプラス変換表の逆引きで行う
- 制御工学の伝達関数 $G(s)$ はラプラス変換に基づく概念
- 初期値定理 $\lim_{s \to \infty} sF(s) = f(0^+)$ と最終値定理 $\lim_{s \to 0} sF(s) = \lim_{t \to \infty} f(t)$ は、逆変換を行わずに時間領域の情報を得る便利な道具
ラプラス変換は、一見すると抽象的な積分変換に見えますが、その本質は「難しい微分の世界を、簡単な代数の世界に翻訳する」という極めて実用的なアイデアです。制御工学、回路理論、信号処理など、工学のあらゆる場面でラプラス変換は不可欠な道具として使われています。
次のステップとして、以下の記事も参考にしてください。
- ラプラス変換による微分方程式の解法 — 具体的な微分方程式への応用
- z変換の定義と離散時間システムへの応用 — ラプラス変換の離散版