高速フーリエ変換 (fast Fourier transform) 1月19日 第4回目発表 1 今回の目的 • 卒研発表日まであと約1ヶ月となったので, 今まで調べてきたことをまとめて20分で発 表できるように練習する. • 今までの事を全て説明すると20分では収 まらなくなる.だから高速フーリエ変換の概 要を簡単に述べて,分割統治法を用いた 高速フーリエ変換を詳しく説明していきた いと思う. 2 高速フーリエ変換の概要 前提 • 高速フーリエ変換を述べる為に,2つのN-1 次多項式の積の計算を考える. • 「N-1次の多項式はN個の異なる点におけ る関数値で完全に決まる」という事実を利 用して,多項式の積の計算を高速化する. 3 ◇高速フーリエ変換を用いた高速化した計算 の手順 評価:2つのN 1次多項式を 2 N 1個の異なる 点で計算する. 乗算:変換した値を掛け合わせる. 補間:評価と同じ計算手順により補間する. (補間とは多項式の N個の異なる点における値が 与えられた時,その多項式の係数を求めること) ◇2つのN 1次多項式の積を求める 時, ・普通に掛け合わせると, N の計算時間 2 ・高速フーリエ変換を 使うと 2 N lg N ON の計算時間 4 2つのN-1次多項式 P(x) Q(x) 評 価 乗算 2N-1次の多項式 R(x)=P(x)Q(x) N2の計算時間 フーリエ変換 補 間 分割統治法を用いて 効率よくしたのが高速フーリエ変換 p(a1 ),, pa 2 N1 q(a1 ),, qa 2 N1 乗算 逆フーリエ変換 r ( x ) p ( x )q ( x ) r (a1 ),, r (a 2 N1 ) 2NlgN+O(N)の計算時間 5 評価の計算 • 今回の発表では評価・乗算・補間の流れ の中で評価について述べたいと思います. • 評価の方法 評価する2N-1個の点は1の複素累乗根を用い る. 評価の計算は分割統治法を用いる. 6 1の複素累乗根 一般にその数を累乗して1となる複素数は 数多くあり,その複素 数を1の累乗根という . 実際,自然数Nに対して, Z 1となる複素数ZがN個ある. N これらの中の1つは「 1の原始N乗根」とよばれ, それをWNと表わすと,全ての根は k 0,1,2,, N 1に対して,WN をk乗してえられる. 7 例)1の8乗根 W80 , W81 , W82 , W83 , W84 , W85 , W86 , W87 W80 1で,W81が原始8乗根である . Nが偶数の時は WN 2 は 1であるから, N W84 1となる. また1のN 乗根を 2 乗すると, 1の N / 2 乗根 が得られる. よって, (W ) W , (W ) W . 1 2 8 1 4 1 2 4 1 2 8 分割統治法 • N-1次多項式の1のN乗根における値を 分割統治法を用いて求める. ① N個の係数があるから,まずN/2個の係数の 2つの多項式に分割する.その際に低次の 項から順に交互にとって2つに分ける. ② 次にN/2個の係数の多項式の値を求めてか らN個の係数のN-1次多項式の値を求める. (統合する) N/2個の係数の多項式の値が分からない時は, さらに2つに分けてN/4個の多項式にする. 9 例)N 8の時 p( x ) p 0 p1x p 2 x 2 p 3 x 3 p 4 x 4 p 5 x 5 p 6 x 6 p 7 x 7 (p 0 p 2 x 2 p 4 x 4 p 6 x 6 ) x (p1x p 3 x 2 p 5 x 4 p 7 x 6 ) p e ( x 2 ) xpo ( x 2 ) 上のように2つに分割する. ここで, 7次多項式 p( x ) を1の 8乗根で計算する. W8 : w 80 , w 18 , w 82 , w 83 , w 84 , w 85 , w 86 , w 87 まず,w 84 1だから W8 : w 80 , w 18 , w 82 , w 83 , w 80 , w 18 , w 82 , w 83 となる.次に各項を2 乗すると W82 : w 04 , w 14 , w 24 , w 34 , w 04 , w 14 , w 24 , w 34 になる. 10 p( x ) p e ( x ) xpo ( x ) 2 2 に注目すると以下のような次式が導かれる. p( w 80 ) p e ( w 04 ) w 80 p o ( w 04 ), p( w 18 ) p e ( w 14 ) w 18 p o ( w 14 ), p( w 82 ) p e ( w 24 ) w 82 p o ( w 24 ), p( w 83 ) p e ( w 34 ) w 83 p o ( w 34 ), p( w 84 ) p e ( w 04 ) w 80 p o ( w 04 ), p( w 85 ) p e ( w 14 ) w 18 p o ( w 14 ), p( w 86 ) p e ( w 24 ) w 82 p o ( w 24 ), p( w 87 ) p e ( w 34 ) w 83 p o ( w 34 ), 11 実際に p( w 85 ) p e ( w14 ) w18 p o ( w14 ) を計算してみる. p( w 85 ) p e ( w14 ) w18 p o ( w14 ) (p 0 p 2 w14 p 4 w 24 p 6 w 34 ) w18 (p1 p 3 w14 p 5 w 24 p 7 w 34 ) (p 0 p 4 w 24 ) w14 (p 2 p 6 w 24 ) w18{( p1 p 5 w 24 ) w 14 (p 3 p 7 w 24 )} (p 0 p 4 w12 ) w14 (p 2 p 6 w12 ) w18{( p1 p 5 w12 ) w 14 (p 3 p 7 w12 )} ここで、 w12 1だから (p 0 p 4 ) w14 (p 2 p 6 ) w18{( p1 p 5 ) w14 (p 3 p 7 )} またw ( w ) 1 w (w ) 1 1 4 1 8 1 2 1 4 2 2 (1) (i) 1 2 1 2 i, i だから (p 0 p 4 ) i(p 2 p 6 ) i{( p1 p 5 ) i(p 3 p 7 )} 12 一般的に 1のN乗根における p( x ) の計算方法 p e x とp o x を1の N / 2 乗根において再帰的に 計算する. (ただし,再帰的な計 算で N / 2, N / 4,となるので N は 2 のベキ乗であると仮定する.) 再帰は w 2x のようにN 2 の時に打ち切る. このときw 1, ( w ) 1 のどちらかだから 1 2 1 2 2 p 0 p1x は p 0 p1 か p 0 p1 を得る. あとは1つずつ上に統合して,全体の p( x ) を求める. 分割統治法を用いたこの再帰的な 計算が高速フーリエ変換である. 13 まとめ • 高速フーリエ変換を使った評価について述 べた.多項式の積の計算はまだ乗算と補間 を行わないといけないが,今回は時間が少 ないため省略した.高速フーリエ変換につい てさらに詳しいことは, http://tnt.math.metro-u.ac.jp/labo/grad/2004/akira/index.html に載せてある. 14
© Copyright 2024 ExpyDoc