畳み込み計算
計算結果
畳み込みの結果
- 合計
- 90.000000
- 結果の項数
- 5
畳み込みとは、2つの数列を組み合わせて3つ目の数列を作る計算です。並び合った項どうしを掛け、その積をまとめて足し上げます。ここで行うのは有限な2つの数列の離散畳み込みで、ずらすという言い方はそのまま当てはまります。片方の数列がもう片方に対して1つずつ位置をずらし、通り道の各位置が結果の1項を生みます。最初の項は、片方の先頭ともう片方の先頭の積です。2番目の項はそこで重なった2つの積の和で、以降も同じように端まで続きます。3項の数列を2つ畳み込むと結果は5項になります。全畳み込みの長さは2つの長さの和から1を引いたものだからです。結果は順番に印字されるので位置がそのままインデックスになり、全項の合計がその隣に表示されます。この量は一目で検算でき、つねに2つの数列の和の積に等しくなります。小数や負の値も受け付け、1つの数だけの数列も許されます。その場合の畳み込みは単なる定数倍です。
既定の数列を、インデックスごとに1つずつ展開したもの
| インデックスk | 項 | 値 |
|---|---|---|
| 0 | 1 × 4 | 4 |
| 1 | 1 × 5 + 2 × 4 | 13 |
| 2 | 1 × 6 + 2 × 5 + 3 × 4 | 28 |
| 3 | 2 × 6 + 3 × 5 | 27 |
| 4 | 3 × 6 | 18 |
これはパネルの表示の裏にある展開で、各項にインデックスを書き添えたものです。パネルがインデックスを省くのは、カンマ区切りの列にはすでに順序があるからですが、位置とインデックスの対応こそがこの表の示しているものです。真ん中の列を上から読むと、すべり方が見えてきます。積の個数は真ん中に向かって増え、反対の端でまた減り、各行はそこで実際に重なっている項だけを使っています。値が整数なのは、既定の2つの数列がどちらも整数だからです。小数の項があれば小数の列になります。この表はセルを地域ごとに書き分けないので、小数点はどこまでもふつうのピリオドです。
公式
(a * b)[k] = Σᵢ a[i] × b[k − i] 長さ = m + n − 1
- a, b
- 2つの数列で、数をセミコロンで区切って入力します。順序は問いません。畳み込みは可換なので、2つの欄を入れ替えても結果は同じです。長さが揃っている必要もなく、どちらにも小数や負の値を入れてかまいません。1つの欄には200項まで入れられます。
- k
- 生成される項のインデックスで、0から結果の長さ−1まで動きます。各値の隣には印字されません。カンマで区切られた列にはすでに順序があり、最初の数がk = 0、2番目がk = 1だからです。下の参考表は既定の数列についてインデックスを1行ずつ書き出しており、位置そのものを確かめたいときはそこを見てください。
- a[i] × b[k − i]
- 和を構成する1つの積です。各kについて、インデックスiは両方の数列に項がある位置すべてを回ります。そのため足し合わされる積の個数は、両端では1つ、真ん中では短いほうの数列の長さまで増えます。重なりのパターンこそがこの演算のすべてで、片方の数列がもう片方をすべっていき、積が列ごとに集められます。
- Σᵢ
- それらの積の総和で、結果の1項になります。各項は小数6桁に丸められ、数列の隣に表示される合計は丸める前の項ではなく丸めた後の項を足したものです。ですからパネルに印字された数を手で足すと、印字された合計にちょうど一致します。
- m + n − 1
- 結果の長さで、これ自体も1つの読み値として表示されます。3項の数列を2つ組み合わせれば5項、1つの数を3項の数列と畳み込めば3項になります。2つのうち長いほうより余分に出る項があるおかげで、これが完全に重なる部分だけを残す種類ではなく全畳み込みになるのです。
2つの数列を1つの分布にまとめる必要があるときに使います。2つのサイコロの目の和が各値になる場合の数、移動平均の窓が系列に与える効果、2つの多項式の積の係数などです。数列そのものについて知りたいとき、つまり項・合計・並びの規則が知りたいときは数列の計算ツールが扱います。移動平均の窓の取り方を選んでいるのであれば、それを名指ししているのは平均の計算ツールのほうです。
計算例
1、2、3と4、5、6の場合
- k = 0:最初の項どうしだけが重なるので1 × 4 = 4
- k = 1:1 × 5 + 2 × 4 = 5 + 8 = 13
- k = 2:1 × 6 + 2 × 5 + 3 × 4 = 6 + 10 + 12 = 28
- k = 3:2 × 6 + 3 × 5 = 12 + 15 = 27
- k = 4:最後の項どうしだけが重なり3 × 6 = 18
- 結果は4, 13, 28, 27, 18で、合計は90。これは6 × 15でもある
最後の行がこのページを信用しやすくする検算です。畳み込みの合計はつねに2つの数列の和の積に等しく、ここでは1 + 2 + 3 = 6と4 + 5 + 6 = 15の積になります。これは代数から自然に出てきます。結果のどの項も2つの数列から1つずつ取った積の和で、そのような組はそれぞれちょうど1回だけ現れるからです。
2つのサイコロと、その和の分布
- サイコロは6つの面それぞれについて1通りの出方があるので、数列は1が6つ
- 畳み込むと各和になる組の数を数えることになる:k = 0は1 × 1 = 1通りで和は2
- k = 1は1 + 1 = 2通りで和は3、以降も数は増えていく
- 山は真ん中の項で6になり、それは和が7の場合
- 結果は1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1で、合計は36
中心極限定理を縮図にして見せた標準的な例です。平らな分布を2つ畳み込むと三角形になり、3つ目のサイコロをさらに畳み込むと釣鐘型に近づいていきます。合計の36も検算になっています。2つの和の積は6 × 6で、これは目の順序対すべての数、つまり1通りずつに対応します。
1つの数は数列全体を定数倍する
- 1項だけの数列には重なる相手がないので、結果の各項はその項ともう片方の各項の積になる
- k = 0:2 × 1 = 2
- k = 1:2 × 2 = 4
- k = 2:2 × 3 = 6
- 結果は2, 4, 6で、合計は12。これは2 × 6でもある
この退化したケースは一度動かしておく価値があります。すべらせる絵にも端があることが分かるからです。長さ1の数列が片方にあると足し合わせる積はつねに1つ以下で、畳み込みは掛け算に還元されます。長さの式m + n − 1が1 + 3 − 1 = 3となり、それ以上にならないのも同じ理由です。
適用限界
このページは全畳み込みだけを計算し、全畳み込みしか計算しません。結果の一部だけを残す2つの変種は用意していません。長いほうの入力と同じ長さを返すものと、完全に重なる位置だけを返すものです。どちらも偶数長の数列に対してはうまく定義できず、全畳み込みはその両方を含む結果です。短い変種は別の計算ではなく、この結果を切り出したものにすぎません。1つの数列に入れられるのは200項までで、各値は100万までに限られます。これは表示上の限界です。畳み込みは掛けてから足すので、大きな項は倍精度の限界よりずっと早く読める範囲を超えます。結果の各項は小数6桁に丸め、表示される合計は丸めた後の項を足したものなので、印字された数を手で足すとわずかに違う値ではなく印字された合計そのものが再現されます。結果はカンマ区切りの数の列で、地域ごとの書き分けはしません。小数点はどの言語で読んでもピリオドのままです。位置がインデックスを担っており、1つずつラベルは付けません。インデックスを明示しているのは参考表で、既定の数列について書いてあります。
よくある質問
- 2つの数列を手計算で畳み込むには
- 片方の数列をもう片方に対してすべらせ、各位置で積を足し上げます。1, 2, 3と4, 5, 6なら、最初の項は1 × 4 = 4、2番目は1 × 5 + 2 × 4 = 13、以降も同じように進み、端で3 × 6 = 18になります。結果は5項です。3項の数列を2つ畳み込むと長さは3 + 3 − 1になるからです。
- 畳み込みが正しいか確かめるには
- 結果を足し上げ、2つの数列の和の積と比べます。1, 2, 3と4, 5, 6なら90と6 × 15を比べることになり、両者は一致しなければなりません。理由は、結果のどの項も組み合わせの積の和であり、2つの数列から取れる組がそれぞれちょうど1つの項に現れるからです。
- 結果の項数がどちらの数列より多くなるのはなぜか
- 全畳み込みは、数列が部分的にしか重ならない位置も残すからです。1, 2, 3と4, 5, 6ならその位置は5つあり、両端に1組だけ重なる位置が1つずつ、真ん中に複数が重なる位置が3つあります。短いほうの2つの変種、つまり長いほうの入力と同じ長さを返すものと完全に重なる位置だけを残すものは、どちらもこの結果を切り出したものです。
- 2つのサイコロを畳み込むことが確率とどう関係するのか
- 出方の場合の数を数えていることになります。サイコロ1つは6つの面それぞれに1つずつ、1が6つ並んだ数列で、それを自分自身と畳み込むと各和になる順序対の数が出ます。和が2になるのが1通り、3が2通り、上がっていって7が6通りで、そこから減っていきます。結果の合計36は順序対の総数で、各項をこれで割れば確率になるのはそのためです。
- 移動平均は畳み込みなのか
- 畳み込みです。移動平均は等しい重みの窓、たとえば5日分をそれぞれ5分の1にして系列に沿ってすべらせるもので、これはその窓を2つの数列の片方にした畳み込みそのものです。平滑化やフィルタ、画像処理でこの演算が出てくるのはそのためで、すべらせる側が重みの並び、滑らかにされる側が数列になります。
参考文献
- Convolution — 定義、重なり合う積の和、そして結果の長さ — Wolfram MathWorld (United States)
- Cauchy Product — 同じ規則を2つの冪級数の係数に当てはめたもの。2つの多項式の係数列を畳み込むとこれになる — Wolfram MathWorld (United States)
- Convolution Theorem — 畳み込みの変換が変換の積になる理由と、この演算が信号処理で出会う場所 — Wolfram MathWorld (United States)