高速フーリエ変換 (fast Fourier transform)

高速フーリエ変換
(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  ON の計算時間
4
2つのN-1次多項式
P(x)
Q(x)
評
価
乗算
2N-1次の多項式
R(x)=P(x)Q(x)
N2の計算時間
フーリエ変換
補
間
分割統治法を用いて
効率よくしたのが高速フーリエ変換
p(a1 ),, pa 2 N1 
q(a1 ),, qa 2 N1 
乗算
逆フーリエ変換
r ( x )  p ( x )q ( x )
r (a1 ),, r (a 2 N1 )
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