畳み込み積分は、一方の関数をもう一方の上でずらしながら、2つの関数がどのように組み合わさるかを表します。連続時間では、次のように定義されます。

(fg)(t)=f(τ)g(tτ)dτ(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t-\tau)\,d\tau

直感的にはシンプルです。各 tt に対して一方の関数をスライドさせ、2つが重なる場所を見つけ、その重なりの上で値を掛け合わせて足し合わせます。両方の関数が因果的、つまり負の時間で 0 なら、しばしば

(fg)(t)=0tf(τ)g(tτ)dτ(f * g)(t) = \int_0^t f(\tau) g(t-\tau)\,d\tau

となります(t0t \ge 0 で、かつ [0,t][0,t] が重なり全体を含む場合)。実用上のポイントは、スライドする重なりを各 tt に対して1つの数に変えることです。

畳み込み積分の定義と直感

f(τ)f(\tau) は固定され、g(tτ)g(t-\tau)gg を反転して平行移動したものだと考えてください。tt が変わると重なり方も変わるので、積分値も変わります。

ここが点ごとの積との大きな違いです。2つの関数を同じ入力で比べているのではありません。ずらしたコピーが元の関数と重なる領域全体で、積を足し合わせているのです。

なぜ重なりが積分区間を決めるのか

畳み込みの問題で積分区間は、暗記した型から決まることはあまりありません。両方の因子がどこで 0 でないかを考えて決まります。

そのため、多くの畳み込みの答えは場合分けになります。tt が動くと重なり区間は広がったり、縮んだり、消えたりするので、それに応じて積分も変わります。

学生がよく見落とすのはここです。難しいのはたいてい積分そのものではなく、まず正しい重なり区間を見つけることです。

畳み込み積分の例:2つの単位パルス

次を考えます。

f(t)={1,0t10,otherwisef(t) = \begin{cases} 1, & 0 \le t \le 1 \\ 0, & \text{otherwise} \end{cases}

そして g(t)g(t) も同じ関数とします。求めたいのは (fg)(t)(f * g)(t) です。

この例がわかりやすいのは、被積分関数が 1100 のどちらかなので、畳み込みがそのまま重なり区間の長さになるからです。

定義を使うと、

(fg)(t)=f(τ)g(tτ)dτ(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t-\tau)\,d\tau

です。f(τ)=1f(\tau)=1 なのは [0,1][0,1] 上だけで、g(tτ)=1g(t-\tau)=1 なのは 0tτ10 \le t-\tau \le 1 のときだけなので、被積分関数が 11 になるのはこの2つの条件が同時に成り立つところに限られます。

2つ目の条件は

t1τtt-1 \le \tau \le t

を意味します。

したがって、重なり区間は

[0,1][t1,t][0,1] \cap [t-1,t]

です。

つまり (fg)(t)(f * g)(t) は、この重なりの長さになります。

場合 1: t<0t < 0

重なりはないので、

(fg)(t)=0(f * g)(t) = 0

です。

場合 2: 0t10 \le t \le 1

重なりは τ=0\tau=0 から τ=t\tau=t までなので、

(fg)(t)=0t1dτ=t(f * g)(t) = \int_0^t 1\,d\tau = t

となります。

場合 3: 1t21 \le t \le 2

重なりは τ=t1\tau=t-1 から τ=1\tau=1 までなので、

(fg)(t)=t111dτ=2t(f * g)(t) = \int_{t-1}^1 1\,d\tau = 2-t

となります。

場合 4: t>2t > 2

ここでも重なりはないので、

(fg)(t)=0(f * g)(t) = 0

です。

以上をまとめると、

(fg)(t)={0,t<0t,0t12t,1t20,t>2(f * g)(t) = \begin{cases} 0, & t < 0 \\ t, & 0 \le t \le 1 \\ 2-t, & 1 \le t \le 2 \\ 0, & t > 2 \end{cases}

となります。

結果は三角形になります。重なりが増える間は高さが増え、重なりが減ると高さも下がります。

畳み込み積分でよくあるミス

ずらした入力を忘れる

2つ目の因子は g(tτ)g(t-\tau) であって、g(τt)g(\tau-t) でも単なる g(τ)g(\tau) でもありません。ずらしこそが畳み込みの本質です。

積分区間を間違える

最も安全な方法は、両方の因子が 0 でない範囲を見つけることです。重なりが tt によって変わるなら、たいてい場合分けが必要になります。

畳み込みを点ごとの積だと思ってしまう

点ごとの積は同じ入力での値を使います。畳み込みは、区間全体にわたる積を累積します。

近道が使える条件を飛ばしてしまう

近道として

(fg)(t)=0tf(τ)g(tτ)dτ(f * g)(t) = \int_0^t f(\tau)g(t-\tau)\,d\tau

を使うことがあります。

これは因果的な設定ではよく成り立ちますが、どんな関数の組にも使えるわけではありません。その仮定が成り立つときだけ使ってください。

畳み込み積分はどこで使われるか

ある量が、別の量の近くの時間や空間への広がり方に依存するとき、畳み込みを使います。

線形時不変系では、入力とインパルス応答から出力を求めるのに畳み込みを使います。確率では、2つの独立な確率変数が密度関数をもつとき、その和の密度はそれらの密度の畳み込みになります。より広くは、平滑化、フィルタリング、拡散、そして近くの値どうしが組み合わさるあらゆる場面に現れます。

似た畳み込み問題を試してみよう

同じパルスの例で、2つ目のパルスの高さを2倍にしてみてください。

g(t)={2,0t10,otherwiseg(t) = \begin{cases} 2, & 0 \le t \le 1 \\ 0, & \text{otherwise} \end{cases}

重なり区間は同じままですが、その区間での被積分関数は2倍になります。積分する前に、それで三角形の結果がどう変わるか予想できれば、畳み込みの核心はつかめています。

問題の解き方でお困りですか?

問題をアップロードすると、検証済みのステップバイステップ解答が数秒で届きます。

GPAI Solver を開く →