線形代数 · 第25回 · 動画3 · インタラクティブ教材
| 公式 | 名称 | 説明 |
|---|---|---|
| 1 の原始 乗根 | の成分は のべき乗 | |
| 二乗の恒等式 | と を結びつける | |
| FFT の分解 | 3 つの因子への分解 | |
| FFT の計算量 | 素直な計算では |
乗根をそれぞれ二乗すると角度が 2 倍になり、 個の点が 乗根の上に重なります。
💡 つまり の中には が隠れています。同じ 個の根が再び現れ、それがちょうど小さいほうの変換になるのです。
変換の大きさ が増えるにつれて、 と はどう比べられるでしょうか。
💡 差は限りなく広がります。そのため、素直に計算すればとても手に負えない 100 万点の変換も、FFT ならリアルタイムで計算できます。
分割するたびにブロックの数は 2 倍、大きさは半分になるので、どの段の計算量も同じ です。
問1
を 1 の原始 64 乗根とします。 は何に等しいでしょうか。
✅ 正解です! 二乗すると角度が 2 倍になり、位数は半分になります。
❌ 惜しい! 思い出しましょう。 を二乗すると になります。 の形の角度を 2 倍にすると です。
解答:
指数関数を二乗すると角度が 2 倍になります。
これが FFT の要となる恒等式 です。 この恒等式によって、 の中に が隠れていることが保証されます。
問2
のとき、FFT の分解を1 回だけ使う(1 段だけ分割する)と、素直な の方法と比べて複素数の掛け算はどれだけ減るでしょうか。
ヒント:1 段の計算量は 回の掛け算です。
✅ 正解です! 1 回の分割で約 2 倍速くなります。劇的な高速化は、これを再帰的に使うことで生まれます。
❌ 惜しい! と を計算して比べましょう。比はおよそ です。
解答:
素直な計算の計算量:。
1 段だけの FFT の計算量:。
元の手間のほぼ半分です。分解を 1 回使っただけで約 2 倍速くなります。大きな高速化は、この分解を最下段まで再帰的に使うことで得られます。
問3
再帰を最後まで使った FFT では、 のとき複素数の掛け算は何回必要でしょうか。
✅ 正解です! .
❌ 惜しい! 公式 を として使いましょう。
解答:
FFT の計算量は です。
のとき
素直な計算の と比べると、約 205 倍の高速化です。
問4
正しいか誤りか:FFT は素直な行列とベクトルの積とは異なる(近似的な)変換を計算し、精度と引き換えに速さを得ている。
✅ 正解です! この分解は厳密な代数的恒等式です。同じ DFT を、より速く計算します。
❌ 惜しい! FFT は近似ではなく厳密なアルゴリズムです。まったく同じ DFT を計算します。
解答:
FFT は、素直な方法とまったく同じ離散フーリエ変換を計算します。同じ行列 、同じ出力、浮動小数点の丸め誤差を除けば同じ数値です。変わるのは道筋だけです。
分解 は近似ではなく、厳密な代数的恒等式です。置換 の掛け算は 0 回(ポインタの計算だけ)なので、浮動小数点の演算は回転因子の掛け算と、再帰的な小さい FFT の中にしかありません。
正解数:0 / 4