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

Download Report

Transcript 高速フーリエ変換 (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 (a 1 ),  , 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
W  1となる.
4
8
また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 )  xp o ( 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 )  xp o ( 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 83p 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 ( w 14 )  w 18 p o ( w 14 ) を計算してみる.
p( w 85 )  p e ( w 14 )  w 18 p o ( w 14 )
 (p 0  p 2 w 14  p 4 w 24  p 6 w 34 )  w 18 (p1  p 3 w 14  p 5 w 24  p 7 w 34 )
 (p 0  p 4 w 24 )  w 14 (p 2  p 6 w 24 )  w 18{( p1  p 5 w 24 )  w 14 (p 3  p 7 w 24 )}
 (p 0  p 4 w 12 )  w 14 (p 2  p 6 w 12 )  w 18{( p1  p 5 w 12 )  w 14 (p 3  p 7 w 12 )}
ここで、
w 12  1だから
 (p 0  p 4 )  w 14 (p 2  p 6 )  w 18{( p1  p 5 )  w 14 (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