離散Fourier変換
梅谷 武
作成:2000-08-14 更新:2005-04-20
離散Fourier変換の概念を可換環R上へ一般化し、複素数上や整数の剰余環上の離散Fourier変換の性質や高速算法の議論を統一的に行なえるようにすることを目的とする。最初に離散Fourier変換を可換環R上で定義し、その諸性質を整理する。その上で高速算法について論ずる。
IMS:20000814001; NDC:413.66; keywords:Fourier展開,Fourier変換,畳み込み,群環;
可換環R上で離散Fourier変換を定義するには次の条件が必要である。
上の条件の下で、ζによって生成される巡回群をG={1,ζ,…,ζn-1}とする。GからRへの関数全体の集合をC(G)={f:G→R}とすると、C(G)にはRから自然に加法と乗法が定義され、それによって可換環となる。さらにスカラー倍を自然に定義することによってR上の多元環となる。
上の定義でζ-i=ζn-iであることに注意せよ。これがR上の双線形形式になることは明らかなので証明は略す。次の定理は、C(G)がこの双線形形式について直交な基底をもつことを示す。
証明 ここで、条件3.を使うと
となり、
{ek:k=0,…,n-1}が互いに直交していることがわかる。
i=0n-1λiei=0と仮定すると、
k=0,…,n-1に対して
となるから、
{ek:k=0,…,n-1}は線形独立である。
f∈C(G),k=0,…,n-1について、
| | |
| | n-1 | n-1 Σ l=0 | f(ζl) | ( | n-1 Σ i=0 | ζi(k-l) | ) |
|
| | |
| | |
となることから証明が終了する。ここでも条件3.が使われている。
■
Fourier変換及び逆Fourier変換を定義する。
定義1.4 (Fourier変換・逆Fourier変換)
Fourier変換
F:C(G)→C(G)を次のように定義する。
F(f)(ζk) | = | n-1 Σ s=0 | f(ζs)ζsk | , | f∈C(G), | k=0,…,n-1 |
逆Fourier変換
F-1:C(G)→C(G)を次のように定義する。
F-1(f)(ζr) | = | n-1 | n-1 Σ t=0 | f(ζt)ζ-tr | , | f∈C(G), | r=0,…,n-1 |
証明 線形性は明らかである。条件3.を使うことによって以下のように同型性を示すことができる。
■
C(G)にはRから誘導される自然な積の他に、畳み込みと呼ばれる積を定義することができる。
定義1.6 (C(G)上の畳み込み)
f,g∈C(G)に対して、畳み込み
f*g∈C(G)を次のように定義する。
f*g(ζr) | = | n-1 Σ i=0 | f(ζr-i)g(ζi) | , | r=0,…,n-1 |
C(G)はこの畳み込みを積としても可換環となり、さらにR上の多元環となる。これをGのR上の群環と呼び、R[G]と書く。C(G)とR[G]はR-加群としては同じものであるが、積の違いを区別するために記号を使い分ける。
命題1.7
R[G]は
R上の可換な多元環である。
- δ∈R[G]:δ(1)=1, δ(ζi)=0, i=1,…,n-1 とすると
f*δ=f, f∈R[G]
- f*g=g*f, f,g∈R[G]
- f*(g*h)=(f*g)*h, f,g,h∈R[G]
- f*(g+h)=f*g+f*h, f,g,h∈R[G]
- (λf)*g=λ(f*g), λ∈R, f,g∈R[G]
証明 1.は直接計算する。
2.は
r-i=tと変数変換すればよい。
| | |
| | n-1 Σ i≡0(mod n) | f(ζr-i)g(ζi) |
|
| | |
| | |
3.は可換性を利用する。
| | |
| | n-1 Σ i=0 | ( | n-1 Σ j=0 | g(ζ(r-i)-j)h(ζj) | )f(ζi) |
|
|
| | n-1 Σ j=0 | ( | n-1 Σ i=0 | g(ζ(r-j)-i)f(ζi) | )h(ζj) |
|
|
| | |
| | |
4.と5.は明らかである。
■
定理1.8 (R-多元環としての同型性)
Fourier変換
F:R[G]→C(G)は
R-多元環としての同型写像を与え、逆Fourier変換
F-1はその逆写像である。すなわち、同値な性質
- F(f*g)=F(f)F(g), f,g∈R[G]
- F-1(fg)=F-1(f)*F-1(g), f,g∈C(G)
- F(fg)=F(f)*F(g), f,g∈C(G)
- F-1(f*g)=F-1(f)F-1(g), f,g∈R[G]
が成り立つ。
証明 1.のみを証明すればよい。
| | |
| | |
| | n-1 Σ s=0 | n-1 Σ t=0 | f(ζs-t)ζ(s-t)ig(ζt)ζti |
|
| | n-1 Σ t=0 | ( | n-1 Σ s=0 | f(ζs-t)ζ(s-t)i | )g(ζt)ζti |
|
|
| | |
| | |
■
定理1.9 (構造定理)
R上の多項式環
R[X]から
R[G]への
R-線形写像を
を線形拡張するように定義する。この核は
(Xn-1)であり、
R[X]/(Xn-1)と
R[G]は
R-加群として同型である。さらに、この同型写像は
R-多元環としての同型を与える。
証明 R-加群として同型であることは明らかである。
a(X),b(X)∈R[X]/(Xn-1)を
| | an-1Xn-1 | + | … | + | a1X | + | a0, | ai∈R, | i=0,…,n-1 |
|
| | bn-1Xn-1 | + | … | + | b1X | + | b0, | bi∈R, | i=0,…,n-1 |
|
とすると、同型写像は
というような対応により、
a,b∈R[G]を定める。
c(X)=a(X)b(X)∈R[X]/(Xn-1)とすると
となるが、この係数は同型写像により、
c(ζr) | = | n-1 Σ i=0 | a(ζr-i)b(ζi) |
に対応するが、これは
c=a*bを示している。
■
今後、上の対応によってR[X]/(Xn-1)とR[G]を同一視する場合がある。その場合、上の記号で多項式の係数ai∈Rの添え字はnを法として考える。もし、iが0,…,n-1以外の値をとるときは、暗黙のうちにi ← i%nという変換を施すことにする。
次節で高速Fourier変換について論ずるが、Fourier変換が高速に計算できることを利用してR[X]/(Xn-1)の乗算を高速に行なうことができる。
算法1.10 (多項式の高速乗算法)
a(X),b(X)∈R[X]/(Xn-1)を
| | an-1Xn-1 | + | … | + | a1X | + | a0, | ai∈R, | i=0,…,n-1 |
|
| | bn-1Xn-1 | + | … | + | b1X | + | b0, | bi∈R, | i=0,…,n-1 |
|
その積
c(X)=a(X)b(X)∈R[X]/(Xn-1)を
と表現する。この計算を次の手順で行なう。
Step 1.(a0,…,an-1),(b0,…,bn-1)に対して、そのFourier変換(a'0,…,a'n-1),(b'0,…,b'n-1)を計算する。
Step 2. 項毎に乗算して(c'0,…,c'n-1)=(a'0b'0,…,a'n-1b'n-1)とする。
Step 3.(c'0,…,c'n-1)に対して、その逆Fourier変換(c0,…,cn-1)を計算する。
証明 定理1.8と定理1.9はこの算法の正当性を示している。
■
補題2.1
可換環
Rが自然数
Nと
2Nについて、離散Fourier変換の必要条件を満たし、
GNを
1の原始
N乗根
ζNから生成される巡回群、
G2Nを
1の原始
2N乗根
ζ2Nから生成される巡回群であり、さらに
が成り立ち、
GN⊂G2Nとなっていると仮定する。このとき、
R[GN]の元に対するFourier変換が高々
M回の加算と乗算で計算できるとすれば、
R[ζ2N]の元に対するFourier変換は高々
2M+6N回の加算と乗算で計算できる。
証明 f∈R[ζ2N]に対して、
feven,fodd∈R[ζN]を
によって定める。
fのFourier変換について、次の式が成り立つ。
| | |
| | N-1 Σ u=0 | f(ζ2N2u)ζ2N2uk | + | N-1 Σ v=0 | f(ζ2N2v+1)ζ2N(2v+1)k |
|
| | N-1 Σ u=0 | feven(ζNu)ζNuk | + | N-1 Σ v=0 | fodd(ζNv)ζNvkζ2Nk |
|
| | F(feven)(ζNk) | + | F(fodd)(ζNk)ζ2Nk |
|
ζ2Nk, k=0,…,2N-1は高々
2N回の乗算で計算できる。また仮定より、
F(feven)と
F(fodd)は高々
2M回で計算できる。これらと上の式を利用すると
F(f)は高々
2M+6N回の加算と乗算で計算できることがわかる。
■
定理2.2 (Cooley-Tukey型高速算法)
可換環
Rが自然数
N=2nとそのすべての約数について、離散Fourier変換の必要条件を満たし、
K|Nならば
GK⊂GNとなっていると仮定する。このとき、
ζNが与えられたとすると、
R[GN]の元に対するFourier変換は高々
n2n+2=4Nlog2N回の加算と乗算で計算できる。
証明 M(n)で
N=2nの場合にFourier変換の計算に要する加算と乗算の回数を表わす。
nに関する帰納法で証明する。
n=1のとき、
| | f(ζ0)ζ0 | + | f(ζ1)ζ0 | = | f(ζ0) | + | f(ζ1) |
|
| | f(ζ0)ζ0 | + | f(ζ1)ζ1 | = | f(ζ0) | + | f(ζ1)ζ1 |
|
より、
M(1)=3≦1×21+2となる。
M(n)≦n2n+2であると仮定すると補題より、
M(n+1) | ≦ | 2M(n) | + | 6×2n | ≦ | 2M(n) | + | 8×2n | = | (n+1)2n+3 |
となり、帰納法により証明された。
■
Fourier解析
算法
[
S1] 野下浩平, 高岡忠雄, 町田元, 基本的算法, 岩波書店, 1983
ディジタル信号処理