Chapter 08

フーリエ解析入門 フーリエ変換編

📌 はじめに

前編の「フーリエ解析入門 フーリエ級数編」から大分時間が経ってしまいました.やっと続きを書く準備が出来たので続きを書こうと思います.今回の後編では,前回のフーリエ級数から,フーリエ変換,離散フーリエ変換,そして高速フーリエ変換について解説していきます.

📌 フーリエ級数

前回の最後にフーリエ級数展開の一般式を導きました.実数列 \{a_n\}_{n=0,1,2,\cdots}, \{b_n\}_{n=1,2,\cdots} に対応するフーリエ級数展開は次のようになっています:

\begin{gathered} f(x) = a_0 + a_1\cos x + a_2\cos 2x + a_3\cos 3x + \cdots + a_n\cos nx + \cdots \\ + b_1\sin x + b_2\sin 2x + a_3\sin 3x + \cdots + b_n\sin nx + \cdots \end{gathered}

これをまとめると,次のようになります:

f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty}(a_n\cos nx + b_n\sin nx)
a_n = \frac{1}{\pi}\int_{0}^{2\pi}f(x)\cos nxdx \qquad b_n = \frac{1}{\pi}\int_{0}^{2\pi}f(x)\sin nxdx

これは f(x)2\pi の周期でなければなりません.まずは,周期から1つずつ確認して進めていきたいと思います.

📌 周期関数

関数 f(x) が,すべての x に対して,

f(x+T) = f(x) \tag{1.1}

となるような正の定数 T をもつならば,この関数は周期的であり, f(x)周期関数T周期 といいます.式 (1.1) から,整数 n に対して,

f(x+nT) = f(x) \qquad (n=1,2,\cdots) \tag{1.2}

が成り立ちます.式 (1.1) を満たす T の最小値を特に 基本周期最小周期 と呼ぶことがあります.そして, f(x)g(x) が周期関数ならば,その1次結合 af(x)+bg(x) もまた周期関数という性質があります.また,三角関数 \sin x\cos x も周期関数であり,その周期は 2\pi です. n>0 のとき \sin nx の周期は T=\frac{2\pi}{n} であり,また n = \frac{2\pi}{T} です.

📌 関数の直交性

例えば,ベクトル \vec{v} は正規直交基底を使って

\vec{v} = a_x \vec{e}_x + a_y \vec{e}_y + a_z \vec{e}_z = a_x \left(\begin{matrix}1 \\ 0 \\0\end{matrix}\right) + a_y \left(\begin{matrix}0 \\ 1 \\0\end{matrix}\right) + a_z \left(\begin{matrix}0 \\ 0 \\1\end{matrix}\right)

と表すことができます.正規直交基底は

\vec{e}_x\cdot\vec{e}_y = \vec{e}_y\cdot\vec{e}_z = \vec{e}_x\cdot\vec{e}_z = 0

の関係になっています.ここでベクトル \vec{v} と正規直交ベクトルとの内積を求めると

\vec{v}\cdot \vec{e}_x = a_x\vec{e}_x\cdot\vec{e}_x + a_y\vec{e}_y\cdot\vec{e}_x + a_z\vec{e}_z\cdot\vec{e}_x = a_x

各成分が取り出せます.これは関数でも同じことが言えます.区間 a\leq x\leq b で定義された関数 f_1(x), f_2(x), f_3(x) が互いに直交関係のとき

\int_{a}^{b}f_1(x)\cdot f_2(x)dx = 0, \qquad \int_{a}^{b}f_2(x)\cdot f_3(x)dx = 0, \qquad \int_{a}^{b}f_1(x)\cdot f_3(x)dx = 0

の関係にあります.このような関数の集まりを 直交関数系 といいます.ここで次のような任意の関数 F(x) を定義します.

F(x) = a_1 f_1(x) + a_2 f_2(x) + a_3 f_3(x)

F(x)f_1(x) の内積を積分すると

\begin{aligned} \int_{a}^{b} F(x)\cdot f_1(x)dx &= a_1 \int_{a}^{b} f_1(x)\cdot f_1(x)dx + a_2 \int_{a}^{b} f_2(x)\cdot f_1(x)dx + a_3 \int_{a}^{b} f_3(x)\cdot f_1(x)dx \\ &= a_1 \int_{a}^{b} f_1(x)\cdot f_1(x)dx \\ &= a_1 \int_{a}^{b} f_1^2(x)dx \end{aligned}

となります.また,

\int_{a}^{b} f_1(x)\cdot f_1(x) dx = \int_{a}^{b} f_1^2(x) dx = 1

と正規化されていれば,ただちに係数 a_1 が求められます.

\begin{gathered} \int_{a}^{b} F(x)\cdot e_1(x)dx = a_1, \qquad \int_{a}^{b} F(x)\cdot e_2(x)dx = a_2, \\ \vdots, \\ \int_{a}^{b} F(x)\cdot e_n(x)dx = a_n \end{gathered}

もし正規化されていなければ関数のノルム

|f(x)| = \sqrt{(f,f)}

あるいは

|f(x)| = \left(\int_{a}^{b}f(x)\cdot f(x) dx\right)^{\frac{1}{2}}

を使って

\frac{1}{|f_1(x)|} = \frac{1}{\sqrt{(f_1,f_1)}} = \frac{1}{\sqrt{\int_{a}^{b}f_1^2(x)dx}}

とおくと

\begin{aligned} \int_{a}^{b} e_1(x)\cdot e_1(x) dx &= \int_{a}^{b}\frac{f_1(x)}{\sqrt{\int_{a}^{b}f_1^2(x)dx}}\frac{f_1(x)}{\sqrt{\int_{a}^{b}f_1^2(x)dx}}dx \\ &= \frac{1}{\int_{a}^{b}f_1^2(x)dx}\cdot \int_{a}^{b}f_1^2(x)dx = 1 \end{aligned}

となります.ここで正規直交関数系

e_1(x), e_2(x), e_3(x), \cdots, e_n(x), \cdots

において,次のような関数 G(x) を定義し

G(x) = a_1 e_1(x) + a_2 e_2(x) + a_3 e_3(x)

この関数 G(x) の内積を計算すると

\begin{aligned} (G,G) &= \int_{a}^{b}G(x)\cdot G(x)dx \\ &= \int_{a}^{b}\left(a_1 e_1(x)+a_2 e_2(x)+a_3 e_3(x)\right)^2 \\ &= \int_{a}^{b}\left(a_1 e_1(x)\right)^2 + \int_{a}^{b}\left(a_2 e_2(x)\right)^2 + \int_{a}^{b}\left(a_3 e_3(x)\right)^2 \\ &\quad + 2\int_{a}^{b}a_1 e_1(x) \cdot a_2 e_2(x) + 2\int_{a}^{b}a_2 e_2(x) \cdot a_3 e_3(x) + 2\int_{a}^{b}a_3 e_3(x) \cdot a_3 e_3(x) \\ &= a_1^2 \int_{a}^{b} e_1(x) dx + a_2^2 \int_{a}^{b} e_2(x) dx + a_3^2 \int_{a}^{b} e_3(x) dx \\ &\quad + 2 a_1 a_2 \int_{a}^{b} e_1(x) \cdot e_2(x)dx + 2 a_2 a_3 \int_{a}^{b} e_2(x) \cdot e_3(x)dx + 2 a_3 a_1 \int_{a}^{b} e_3(x) \cdot e_1(x)dx \\ &= a_1^2 + a_2^2 + a_3^2 \end{aligned}

となって各係数の2乗の総和が得られます.

📌 三角関数から複素数へ

フーリエ級数展開

f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty}(a_n\cos nx + b_n\sin nx)

の無限級数の意味は

f(x) = \frac{a_0}{2} + \lim_{N\to\infty}\sum_{n=1}^{N}(a_n\cos nx + b_n\sin nx)

ということです.ここで, オイラーの公式

e^{ix} = \cos x + i\sin x

および, ド・モアブルの公式

(\cos x + i\sin x)^n = \cos nx + i\sin nx

から,

\cos nx + i\sin nx = (\cos x + i\sin x)^n = e^{inx}

という関係がわかります.また,

e^{-inx} = \cos nx - i\sin nx

という関係も成立します.そして,この和と差をとると

\cos nx = \frac{e^{inx}+e^{-inx}}{2} \qquad \sin nx = \frac{e^{inx}-e^{-inx}}{2i}

が得られます.これを無限級数の部分に代入すると

\begin{aligned} f(x) &= \frac{a_0}{2} + \lim_{n\to\infty}\sum_{n=1}^{N}\left(a_n \cos nx + b_n \sin nx\right) \\ &= \frac{a_0}{2} + \lim_{n\to\infty}\sum_{n=1}^{N}\left( a_n \frac{e^{inx}+e^{-inx}}{2} + b_n \frac{e^{inx}-e^{-inx}}{2i}\right) \\ &= \frac{a_0}{2} + \lim_{n\to\infty}\frac{1}{2}\sum_{n=1}^{N}\left\{ \left(a_n + \frac{b_n}{i}\right)e^{inx} + \left(a_n - \frac{b_n}{i}\right)e^{-inx}\right\} \\ &= \frac{a_0}{2} + \lim_{n\to\infty}\frac{1}{2}\sum_{n=1}^{N}\left\{ \left(a_n - b_n i\right)e^{inx} + \left(a_n + b_n i\right)e^{-inx}\right\} \end{aligned}

ここで,フーリエ係数を

c_0 = \frac{a_0}{2} \qquad c_n = \frac{1}{2}\left(a_n-b_n i\right) \qquad c_{-n} = \frac{1}{2}\left(a_n+b_n i\right)

とおくと,

\begin{aligned} f(x) &= c_0 + \lim_{n\to\infty}\sum_{n=1}^{N}\left( c_{n}e^{inx} + c_{-n}e^{-inx} \right) \\ &= c_0 + \lim_{n\to\infty}\left\{ \sum_{n=1}^{N}\left(c_{n}e^{inx}\right) + \sum_{n=-N}^{-1}\left(c_{n}e^{inx}\right) \right\} \end{aligned}

さらに, c_0 もまとめて

f(x) = \sum_{n=-\infty}^{\infty}c_{n}e^{inx} \tag{2.1}

とすることができます. c_{-n}

c_{-n} = \overline{c_n}

と複素共役の関係です. e^{inx} は複素平面において,半径 1 の単位円に対応し,実軸は \cos nx ,虚軸は \sin nx に対応しています.このフーリエ級数展開は関数 f(x)

\{1,e^{ix},e^{-ix},e^{i2x},e^{-i2x},\ldots,e^{inx},e^{-inx},\ldots\}

という基本周波数の整数倍の波の重ね合わせであり,三角関数と同様に直交関係にあります.直交関係になるかどうかは内積が 0 になるかどうかでわかります.複素数の内積は

z\cdot z = z\overline{z} = \overline{z}z = (x+yi)(x-yi) = x^2+y^2

です.複素関数 f(x) , g(x) の内積も同様に,

(f,g) = \int_{a}^{b} \overline{f(x)}g(x)dx

となります. e^{imx}e^{inx} の内積は

\int_{0}^{2\pi}\overline{e^{imx}}e^{inx}dx = \int_{0}^{2\pi}e^{-imx}e^{inx}dx = \int_{0}^{2\pi}e^{i(n-m)x}dx

となります.ここで m\neq n のとき

\int_{0}^{2\pi}e^{i(n-m)x}dx = \left[ \frac{1}{i(n-m)}e^{i(n-m)x} \right]_{0}^{2\pi} = \frac{1}{i(n-m)}(1-1) = 0

となって,この積分は 0 となり,直交関係であることがわかります.一方, m=n のとき

\int_{0}^{2\pi}e^{i(n-m)x}dx = \int_{0}^{2\pi}e^{0}dx = \int_{0}^{2\pi}1dx = \left[x\right]_{0}^{2\pi} = 2\pi

となります.よって,これらの関数のノルムはすべて \sqrt{2\pi} となります.次に複素数のフーリエ係数を求めます.式(2.1)を展開すると

f(x) = \ldots + c_{-n}e^{-inx} + \ldots + c_{-2}e^{-i2x} + c_{-1}e^{-ix} + c_0 + c_{1}e^{ix} + c_{2}e^{i2x} + \ldots + c_{n}e^{inx} + \ldots

となります. e^{inx} の項のみを取り出すには f(x)e^{-inx} をかけて積分します.

\begin{aligned} &\int_{0}^{2\pi}f(x)e^{-inx}dx = \\ &\qquad \ldots + c_{-n}\int_{0}^{2\pi}e^{-i2nx}dx + \ldots \\ &\qquad + c_{-1}\int_{0}^{2\pi}e^{-i(n+1)x}dx + c_0\int_{0}^{2\pi}e^{-inx}dx + c_1\int_{0}^{2\pi}e^{-i(n-1)x}dx + \ldots + c_{n}\int_{0}^{2\pi}1dx + \ldots \end{aligned}

となって, e^{inx}\cdot e^{-inx}=1 から,残る項は c_n e^{inx} となります.よって

c_n = \frac{1}{2\pi}\int_{0}^{2\pi}f(x)e^{-inx}dx

となります.まとめると

f(x) = \sum_{n=-\infty}^{\infty}c_{n}e^{inx} \qquad c_n = \frac{1}{2\pi}\int_{0}^{2\pi}f(x)e^{-inx}dx

となります.これが複素フーリエ級数展開の式です.

📌 周期 2L の複素フーリエ級数展開

三角関数を使ったフーリエ級数展開と同様に,複素フーリエ級数展開も周期 2L に拡張することができます.前編と同じものになりますが,もう一度記載しておきます.

ある関数の周期が 2L とすると,周期 2\pix から周期 2Lt に変数変換します. t

t = \frac{Lx}{\pi} \qquad \therefore x = \frac{\pi t}{L}

となります. tx で微分すると

\frac{dt}{dx} = \frac{L}{\pi} \qquad \therefore dx = \frac{\pi}{L}dt

となります.これをフーリエ級数の一般式に代入すると

\begin{aligned} a_n &= \frac{1}{\pi} \int_{0}^{2\pi} f(x)\cos nx dx = \frac{1}{\pi} \int_{0}^{2L} f(t)\cos \left(\frac{n\pi t}{L}\right) \left(\frac{\pi}{L}\right)dt \\ &= \frac{1}{\pi} \frac{\pi}{L} \int_{0}^{2L} f(t)\cos \left(\frac{n\pi t}{L}\right) dt = \frac{1}{L} \int_{0}^{2L} f(t)\cos \left(\frac{n\pi t}{L}\right) dt \\ b_n &= \frac{1}{\pi} \int_{0}^{2\pi} f(x)\sin nx dx = \frac{1}{\pi} \int_{0}^{2L} f(t)\sin \left(\frac{n\pi t}{L}\right) \left(\frac{\pi}{L}\right)dt \\ &= \frac{1}{L} \int_{0}^{2L} f(t)\sin \left(\frac{n\pi t}{L}\right) dt \end{aligned}

よって,周期 2L に対応したフーリエ級数の一般式は

f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\left(a_n\cos \frac{n\pi t}{L} + b_n\sin \frac{n\pi t}{L}\right)
\begin{aligned} a_n &= \frac{1}{L} \int_{0}^{2L} f(t)\cos\frac{n\pi t}{L}dt \\ b_n &= \frac{1}{L} \int_{0}^{2L} f(t)\sin\frac{n\pi t}{L}dt \end{aligned}

となります.同じように,複素フーリエ級数展開も

f(t) = \sum_{n=-\infty}^{\infty}c_{n}e^{i\frac{n\pi t}{L}} \qquad c_n = \frac{1}{2L}\int_{-L}^{L}f(t)e^{-i\frac{n\pi t}{L}}dt

となります.

📌 フーリエ積分

これまでで,周期 2L のフーリエ級数展開が得られました.では,非周期関数に対してフーリエ級数展開するにはどうすれば良いでしょうか.周期的でないということは,全体を1つの周期とみなす,つまり,周期 2L を無限 \infty にみなすと考えることができます.
周期 2L をもつ周期関数 f_L(x) がフーリエ級数で表されているとします.

f_{L}(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\left( a_n\cos \frac{n\pi x}{L}+ b_n\sin \frac{n\pi x}{L} \right) \tag{3.1}

ここで

a_n = \frac{1}{L}\int_{-L}^{L}f_L(t)\cos\frac{n\pi t}{L}dt, \qquad b_n = \frac{1}{L}\int_{-L}^{L}f_L(t)\sin\frac{n\pi t}{L}dt \tag{3.2}

式 (3.2) を式 (3.1) に代入すると

\begin{aligned} f_{L}(x) &= \frac{1}{2L}\int_{-L}^{L}f_{L}(t)dt \\ &\qquad +\frac{1}{L}\sum_{n=1}^{\infty}\left[ \cos\frac{n\pi x}{L}\int_{-L}^{L}f_L(t)\cos\frac{n\pi t}{L}dt + \sin\frac{n\pi x}{L}\int_{-L}^{L}f_L(t)\sin\frac{n\pi t}{L}dt \right] \end{aligned}

ここで

\omega_n=\frac{n\pi}{L}, \qquad \Delta\omega = \omega_{n+1}-\omega_n=\frac{(n+1)\pi}{L}-\frac{n\pi}{L}=\frac{\pi}{L}

と置くと

\begin{aligned} f_{L}(x) &= \frac{1}{2L}\int_{-L}^{L}f_{L}(t)dt \\ &\qquad +\frac{1}{\pi}\sum_{n=1}^{\infty}\Delta\omega\left[ \cos\omega_n x\int_{-L}^{L}f_L(t)\cos\omega_n tdt + \sin\omega_n x\int_{-L}^{L}f_L(t)\sin\omega_n tdt \right] \end{aligned} \tag{3.3}

ここで, L\to\infty の極限を考えます

f(x) = \lim_{L\to\infty}f_L(x)

この f(x) は周期関数ではなくなります.また,この関数は 絶対可積分 であるとします(絶対可積分については付録Aを参照してください).式 (3.3) の第一項は L\to\infty とすると無限に小さくなって無視できるので 0 となります.

\lim_{L\to\infty}\frac{1}{2L}\int_{-L}^{L}f_{L}(t)dt = 0

よって,式 (3.3) は

\begin{aligned} f(x) &= \frac{1}{\pi}\sum_{n=1}^{\infty}\Delta\omega\left[ \cos\omega_n x\int_{-\infty}^{\infty}f(t)\cos\omega_n tdt + \sin\omega_n x\int_{-\infty}^{\infty}f(t)\sin\omega_n tdt \right] \end{aligned} \tag{3.4}

となります.さらに, L\to\infty では \omega_n は連続変数とみなせること, \Delta\omega\to 0 であることを考慮して和を積分に変えます.

\lim_{\Delta\omega\to 0}\sum_{n=1}^{\infty}X(\omega_n)\Delta\omega \to \int_{0}^{\infty}X(\omega)dw \tag{3.5}

これはリーマン積分の定義式と同じ表示になります.

\lim_{n\to\infty}\sum_{k=1}^{n}F(\xi_k)\Delta x_k = \int_{a}^{b}F(x)dx

式 (3.4) と式 (3.5) から

f(x)=\frac{1}{\pi}\left[ \int_{0}^{\infty}\cos\omega xd\omega \int_{-\infty}^{\infty}f(t)\cos\omega tdt +\int_{0}^{\infty}\sin\omega xd\omega \int_{-\infty}^{\infty}f(t)\sin\omega tdt \right]

が得られます.ここで,

A(\omega) = \int_{-\infty}^{\infty}f(t)\cos\omega tdt, \qquad B(\omega) = \int_{-\infty}^{\infty}f(t)\sin\omega tdt

と置くと

f(x) = \frac{1}{\pi}\int_{0}^{\infty}\left[ A(\omega)\cos\omega x+ B(\omega)\sin\omega x\right]d\omega

となります.これを フーリエ積分表示 と呼びます.また,三角関数の加法定理

\cos(A-B) = \cos A\cos B + \sin A\sin B

を使えば

\begin{aligned} f(x)&=\frac{1}{\pi}\left[ \int_{0}^{\infty}\cos\omega xd\omega \int_{-\infty}^{\infty}f(t)\cos\omega tdt +\int_{0}^{\infty}\sin\omega xd\omega \int_{-\infty}^{\infty}f(t)\sin\omega tdt \right] \\ &=\frac{1}{\pi} \int_{0}^{\infty}\left[ \int_{-\infty}^{\infty}f(t)\cos\omega tdt\cos\omega x +\int_{-\infty}^{\infty}f(t)\sin\omega tdt\sin\omega x \right]d\omega \\ &=\frac{1}{\pi}\int_{0}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)(\cos\omega x\cos\omega t + \sin\omega x \sin \omega t)dt \\ &=\frac{1}{\pi}\int_{0}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)\cos\omega (x-t)dt \end{aligned}

が得られます.これを フーリエ積分公式 といいます.

📌 フーリエ変換

フーリエ積分公式から

\begin{aligned} f(x)&=\frac{1}{\pi}\int_{0}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)\cos\omega (x-t)dt \\ &=\frac{1}{\pi}\int_{0}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)\frac{1}{2}\left( e^{i\omega(x-t)}+e^{-i\omega(x-t)} \right)dt\\ &=\frac{1}{2\pi}\int_{-\infty}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)e^{i\omega(x-t)}dt \\ &=\frac{1}{2\pi}\int_{-\infty}^{\infty}d\omega \int_{-\infty}^{\infty}f(t)e^{i\omega x}\cdot e^{-i\omega t}dt \\ &=\frac{1}{2\pi}\int_{-\infty}^{\infty}e^{i\omega x}d\omega \int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt \end{aligned}

が得られます.これはフーリエ積分公式の複素表示です.ここで

X(\omega) = \int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt

と置くと

f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega

となります. X(\omega)フーリエ変換 といい,この f(x)フーリエ逆変換(反転公式) ,そして,この2つの式の組み合わせを フーリエ変換対 といいます.ここで X(\omega)=2\pi u(\omega) という関数を2つの式に代入すると

\begin{aligned} u(\omega) &= \frac{X(\omega)}{2\pi} = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(x)e^{-i\omega x} \\ f(x) &= \frac{1}{2\pi}\int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega \\ &= \frac{1}{2\pi}\int_{-\infty}^{\infty}2\pi u(\omega)e^{i\omega x}d\omega \\ &= \int_{-\infty}^{\infty}u(\omega)e^{i\omega x}d\omega \end{aligned}

となります. u(\omega)X(\omega) として整理すると

X(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(x)e^{-i\omega x}, \qquad f(x) = \int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega

となって,係数 \frac{1}{2\pi} を移動することができます.このようにフーリエ変換対はいくつも種類があります.代表的なフーリエ変換対を以下に示します.

X(\omega) = \int_{-\infty}^{\infty}f(x)e^{-i\omega x}, \qquad f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega
X(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(x)e^{-i\omega x}, \qquad f(x) = \int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega
X(\omega) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}f(x)e^{-i\omega x}, \qquad f(x) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}X(\omega)e^{i\omega x}d\omega
X(\omega) = \int_{-\infty}^{\infty}f(x)e^{-2\pi i\omega x}, \qquad f(x) = \int_{-\infty}^{\infty}X(\omega)e^{2\pi i\omega x}d\omega

📌 離散へ

これまでのフーリエ変換は連続的な関数を対象としています.しかし,コンピュータグラフィックスなどコンピュータで扱うデータは離散(ディジタル)データです.そのため,離散データに対してもフーリエ変換出来るように対応する必要があります.

ここではフーリエ変換対に以下を使います.

X(\omega) = \int_{-\infty}^{\infty}x(t)e^{-2\pi i\omega t}, \qquad x(t) = \int_{-\infty}^{\infty}X(\omega)e^{2\pi i\omega t}d\omega

ある連続的な信号を表す関数を x(t) とします. t は時間だと思ってください.このとき,周波数 \omega の関数 X(\omega) を求めたいわけです.変域は

-\infty < \omega < \infty, \qquad -\infty < t < \infty

と考えます.ここで, \Delta t 時間を単位として x(t) を量子化します.つまり, n を整数として,標本点 n\cdot \Delta t における値, x(n\cdot\Delta t) を扱います.そして, \Delta t の逆数を

F=\frac{1}{\Delta t}

と定義します.また,

W_F = e^{-i2\pi/F}

を導入します.よって

\begin{aligned} x(n\cdot\Delta t) &= \int_{-\infty}^{\infty}X(\omega)e^{2\pi in\omega\Delta t}d\omega = \int_{-\infty}^{\infty}X(\omega)W_F^{-n\omega}d\omega \\ &= \sum_{k=-\infty}^{\infty}\int_{kF}^{(k+1)F}X(\omega)W_F^{-n\omega}d\omega \end{aligned}

n は整数なので,e^{2\pi in\omega/F} は周期 F の周期関数となります:

W_F^{-n(\omega+F)} = W_F^{-n\omega}

そして,積分を 0 から F に変換すると

\int_{kF}^{(k+1)F}X(\omega)W_F^{-n\omega}d\omega = \int_{0}^{F}X(\omega+kF)W_F^{-n\omega}d\omega

となって,

x(n\cdot\Delta t) = \int_{0}^{F}\left[ \sum_{k=-\infty}^{\infty}X(\omega+kF) \right]W_F^{-n\omega}d\omega =\int_{0}^{F}X_p(\omega)W_F^{-n\omega}d\omega

ここで

X_p(\omega) = \sum_{k=-\infty}^{\infty}X(\omega+kF)

となっています.この関数 X_p(\omega)X(\omega) を, n の整数倍ずつずらし,重ね合わせることによって作られる周期 F の周期関数です.よって,フーリエ級数展開できます.

X_p(\omega) = \sum_{n=-\infty}^{\infty}C_n W_F^{n\omega}, \qquad 0\leq\omega\lt F
C_n = \frac{1}{F}\int_{0}^{F}X_p(\omega)W_F^{-n\omega}d\omega.

ここで求めたフーリエ係数 C_nx(n\cdot \Delta t)1/F を掛けたものですから,

\begin{aligned} x(n\cdot \Delta t) &= \int_{0}^{F}X_p(\omega)W_F^{-n\omega}d\omega, \\ X_p(\omega) &= \frac{1}{F}\sum_{n=-\infty}^{\infty}x(n\cdot\Delta t)W_F^{n\omega} \end{aligned}

という関係が得られます.ここまでで, t に関しては離散的になりましたが,項数がまだ有限ではありません.そこで, x(t) に対して変数 t を量子化したように, X_p(\omega) に対しても変数 F を区間

\Delta \omega = \frac{F}{N} = \frac{1}{N\Delta t}

と量子化します.今度は

W_F^{nk\Delta\omega}=W_N^{nk}

が周期 N の周期関数となって

X_p(k\cdot\Delta\omega) = \frac{1}{F}\sum_{\ell=-\infty}^{\infty}\sum_{n=0}^{N-1} x((n+\ell N)\Delta t)W_N^{nk}= \frac{1}{F}\sum_{n=0}^{N-1}x_p(n\cdot \Delta t)W_N^{nk}
x_p(t)=\sum_{\ell=-\infty}^{\infty}x(t+\ell T), \qquad T = N\Delta t = \frac{N}{F} = \frac{1}{\Delta\omega}

が得られます.この x_p(t) は周期 T の周期関数です.よって

x_p(n\cdot\Delta t) = \frac{F}{N}\sum_{k=0}^{N-1}(k\cdot\Delta\omega)W_N^{-nk}

となります.ここで, F=N とすれば

\begin{aligned} X_p(k\cdot\Delta\omega) &= \frac{1}{N}\sum_{n=0}^{N-1}x_p(n\cdot\Delta t)W_N^{nk} \\ x_p(n\cdot\Delta t) &= \sum_{k=0}^{N-1}X_p(k\cdot\Delta\omega)W_N^{-nk} \end{aligned}

の関係が得られます.そして, \Delta\omega\Delta t,添字 p も省くと

\begin{aligned} X(k) &= \frac{1}{N}\sum_{n=0}^{N-1}x(n)W_N^{nk} \\ x(n) &= \sum_{k=0}^{N-1}X(k)W_N^{-nk} \end{aligned}

と書くことが出来ます. X(k)離散フーリエ変換(Discrete Fourier Transform: DFT)x(n)離散フーリエ逆変換(Inverse Discrete Fourier Transform: IDFT) です.離散フーリエ変換もフーリエ変換と同様に変換対が複数あります.

X(k) = \frac{1}{N}\sum_{n=0}^{N-1}x(n)W_N^{nk}, \qquad x(n) = \sum_{k=0}^{N-1}X(k)W_N^{-nk}
X(k) = \sum_{n=0}^{N-1}x(n)W_N^{nk}, \qquad x(n) = \frac{1}{N}\sum_{k=0}^{N-1}X(k)W_N^{-nk}

📌 高速フーリエ変換

周期 N の数列 \{x_n\} の離散フーリエ変換(以降,DFTとします)では,すべての X_{k} を求めるのに複素数の乗算が N^2 回必要です.処理の計算量を表すオーダーで表すと O(N^2) となります.これは N が増えると計算量も膨れ上がっていくことを表しています.そこで,DFTを高速に処理するアルゴリズムがいくつも見出され, 高速フーリエ変換(Fast Fourier Transform: FFT) と呼ばれます.ここでは, Cooley & Turky による手法の1つを解説します.

離散フーリエ変換対は次を使います:

X_k = \sum_{n=0}^{N-1}x_n W_N^{nk}, \qquad x_n = \frac{1}{N}\sum_{k=0}^{N-1}X_k W_N^{-nk}

まず,数列 \{x_n\} は周期が N=2^m とします.この長さ N の数列 \{x_n\} を次のように長さ N/2 の2つの数列に分けます.

\begin{rcases} x_n^{1)} &= x_{2n} \\ \\ x_n^{2)} &= x_{2n+1} \end{rcases} n = 0, 1, \cdots, \frac{N}{2}-1

これらの DFT はそれぞれ

\begin{rcases} X_k^{1)} &= \displaystyle\sum_{n=0}^{N/2-1}x_n^{1)}W_{N/2}^{nk} \\ \\ X_k^{2)} &= \displaystyle\sum_{n=0}^{N/2-1}x_n^{2)}W_{N/2}^{nk} \end{rcases} k = 0, 1, \cdots, \frac{N}{2}-1

と定義されます.これをもとに元の数列 \{x_n\} の DFT の定義を変形すると

\begin{aligned} X_k &= \sum_{n=0}^{N-1}x_n W_N^{nk} \\[4ex] &= \sum_{n=0}^{N/2-1}x_{2n} W_N^{2nk} + \sum_{n=0}^{N/2-1}x_{2n+1} W_N^{(2n+1)k} \\[4ex] &= \sum_{n=0}^{N/2-1}x_{2n} W_N^{2nk} + \sum_{n=0}^{N/2-1}x_{2n+1} W_N^{2nk}\cdot W_N^k \\[4ex] &= \sum_{n=0}^{N/2-1}x_n^{1)}W_{N/2}^{nk} + W_N^k \sum_{n=0}^{N/2-1}x_n^{2)}W_{N/2}^{nk} \\[4ex] &= X_k^{1)} + W_N^k X_k^{2)} \end{aligned}

となります. X_k^{1)} および X_k^{2)}N/2 周期であり,

W_N^{k+N/2} = -W_N^k

であることから(詳しくは付録B:回転子を参照してください)

X_k = \begin{cases} X_k^{1)} + W_N^k X_k^{2)} & 0 \leq k \leq \frac{N}{2}-1 \\ \\ X_{k-N/2}^{1)} - W_N^{k-N/2} X_{k-N/2}^{2)} & \frac{N}{2} \leq k \leq N-1 \end{cases} \tag{4.1}

と書くことができます.これで長さ N の数列の DFT が長さ N/2 の数列の DFT に分解出来ました.これで複素数の計算回数は

\left(\frac{N}{2}\right)^2+\left(\frac{N}{2}\right)^2+\frac{N}{2} = \frac{N(N+1)}{2}

となって,ほぼ半分になります.また,分割した数列 x_n^{1)}x_n^{2)} は同様の方法でさらに分解してそれぞれの DFT を計算することで計算回数がさらに半分になります.これを再帰的に繰り返すことで高速に処理することが出来ます.これを DIT法(Decimation-In-Time algorithm) といいます.

式 (4.1) をもう少し詳しく見てみましょう. X_k^{1)}X_k^{2)}N/2 周期になったということは,例えば N=8 の場合

\begin{aligned} X_0 &= X_0^{1)} + W_8^{0} X_0^{2)} \\ X_1 &= X_1^{1)} + W_8^{1} X_1^{2)} \\ X_2 &= X_2^{1)} + W_8^{2} X_2^{2)} \\ X_3 &= X_3^{1)} + W_8^{3} X_3^{2)} \\ X_4 &= X_{4-8/2}^{1)} - W_8^{4-8/2} X_{4-8/2}^{2)} = X_0^{1)} - W_8^{0} X_{0}^{2)} \\ X_5 &= X_{5-8/2}^{1)} - W_8^{5-8/2} X_{5-8/2}^{2)} = X_1^{1)} - W_8^{1} X_{1}^{2)} \\ X_6 &= X_{6-8/2}^{1)} - W_8^{6-8/2} X_{6-8/2}^{2)} = X_2^{1)} - W_8^{2} X_{2}^{2)} \\ X_7 &= X_{7-8/2}^{1)} - W_8^{7-8/2} X_{7-8/2}^{2)} = X_3^{1)} - W_8^{3} X_{3}^{2)} \end{aligned}

となって, X_{4}^{1)}, X_{5}^{1)}, X_{6}^{1)}, X_{7}^{1)} および X_{4}^{2)}, X_{5}^{2)}, X_{6}^{2)}, X_{7}^{2)} の計算が不要になっていることがわかります.また, W_N^{k+N/2} = -W_N^k によって,例えば +W_8^{4}X_4^{2)}X_{0} の第2項の符号を反転した -W_8^{0}X_0^{2)} であることもわかります.ここで, X_k の順番を次のように並び変えて,2個ずつ組み合わせてみると

\begin{cases} X_0 &= X_0^{1)} + W_8^{0} X_0^{2)} \\[2ex] X_4 &= X_0^{1)} - W_8^{0} X_{0}^{2)} \end{cases}
\begin{cases} X_2 &= X_2^{1)} + W_8^{2} X_2^{2)} \\[2ex] X_6 &= X_2^{1)} - W_8^{2} X_{2}^{2)} \end{cases}
\begin{cases} X_1 &= X_1^{1)} + W_8^{1} X_1^{2)} \\[2ex] X_5 &= X_1^{1)} - W_8^{1} X_{1}^{2)} \end{cases}
\begin{cases} X_3 &= X_3^{1)} + W_8^{3} X_3^{2)} \\[2ex] X_7 &= X_3^{1)} - W_8^{3} X_{3}^{2)} \end{cases}

となります.ここで次のような図を考えてみましょう.

fft_butterfly01
図1:バタフライ演算

これは2つの入力 ab から a+ba-b の出力を表しています.これは蝶の形に見えるため, バタフライ演算 と呼ばれています.

aX_0^{1)}bX_0^{2)} とおくと,このバタフライ演算は

\begin{cases} X_0 &= X_0^{1)} + W_8^{0} X_0^{2)} \\[2ex] X_4 &= X_0^{1)} - W_8^{0} X_{0}^{2)} \end{cases}

に近い形になります.しかし W_8^{0} がありません.そこでバタフライ演算の図に記号を追加します.

fft_butterfly02
図2:バタフライ演算

これで表現することができます.そして,FFT の構造を DFT およびバタフライ演算を使って図にしてみると

fft_ndft
図3:FFTの再帰的構造

と表すことができます.例として N=8 のときの FFT は次のようになります.

fft_8
図4:8点FFT

一番左の列に気づいた人もいると思います. X_{000}^{(0)} という記号です.この右下の 000 は2進数です. X_k の順番を並び替えることによって上の図のように綺麗に整理することができるのですが, k の並び替えには法則性があります.いま, n を2進数で

n = b_{m-1} \cdots b_1 b_0 = \sum_{i=0}^{m-1}b_i 2^i

で表すとき,その並びを逆転した数

\overline{n} = b_0 b_1 \cdots b_{m-1} = \sum_{i=0}^{m-1}b_i 2^{m-1-i}

n の逆転2進数と呼びます.この処理をビットリバースともいいます.例えば N=8 のとき,逆転2進数は次のようになります.

2進数 逆転 逆転後の値
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7

これで,FFT を実装する準備が整いました.まずはこの逆転2進数を求めるプログラム (python) は次のようになります.

def bit_reverse(bit, r):
    bitr = 0
    for i in range(r):
        bitr = bitr << 1
        bitr |= (bit & 1)
        bit = bit>>1
    return bitr

bit には変換する値を, r にはビット数を渡します.例えば N=8 の場合は r=3 になります.これは例えば

r = int(log2(N))

で求められます.次に FFT は次のようになります.

def fft(x):
    N = len(x)
    r = int(log2(N))
    X = [0+0j for i in range(N)]
    for i in range(N):
        bi = bit_reverse(i, r)
        X[bi] = x[i]+0j
    for i in range(r):
        k = 2**i # k=1,2,4,8,...
        for j in range(k):
            w = float(j)*pi/k # = 2.0*pi/(2.0*k)
            wr, wi = cos(w), -sin(w)
            n = j
            while n < N:
                xr = wr*X[n+k].real - wi*X[n+k].imag
                xi = wr*X[n+k].imag + wi*X[n+k].real
                X[n+k] = complex(X[n].real - xr, X[n].imag - xi)
                X[n  ] = complex(X[n].real + xr, X[n].imag + xi)
                n = n + k*2
    return X

そして,高速逆フーリエ変換 (IFFT) は次のようになります.

def ifft(x):
    N = len(x)
    r = int(log2(N))
    X = [0+0j for i in range(N)]
    for i in range(N):
        bi = bit_reverse(i, r)
        X[bi] = x[i]+0j
    for i in range(r):
        k = 2**i # k=1,2,4,8,...
        for j in range(k):
            w = float(j)*pi/k # = 2.0*pi/(2.0*k)
            wr, wi = cos(w), sin(w)
            n = j
            while n < N:
                xr = wr*X[n+k].real - wi*X[n+k].imag
                xi = wr*X[n+k].imag + wi*X[n+k].real
                X[n+k] = complex(X[n].real - xr, X[n].imag - xi)
                X[n  ] = complex(X[n].real + xr, X[n].imag + xi)
                n = n + k*2
    recip = 1.0 / N
    for i in range(N):
        X[i] = X[i] * recip
    return X

IFFT は W_N^k の符号と,最後に N で割る以外は FFT と同じなので1つの関数にまとめることも簡単にできるはずです.以下の部分

for i in range(r):

が図(4)の X^{(i)} に相当しています.

for j in range(k):

は, W_k^j に相当します.さらに内側の n は, 2k ずつ飛ばしながら k 離れたペアとバタフライ演算するイテレータです.

📌 さいごに

フーリエ級数から,高速フーリエ変換,そして実装まで一気に解説してみました.参考になれば幸いです.何か間違いなどあればご連絡してもらえると助かります.

📌 参考文献

  • 村上雅人「なるほどフーリエ解析」海鳴社,2002
  • 村上雅人「なるほど虚数」海鳴社,2010
  • 有本卓「数値解析(1)」コロナ社,1997
  • 涌井良幸・涌井貞美「道具としてのフーリエ解析」日本実業出版社, 2014
  • 和達三樹「物理のための数学」岩波出版,2019
  • 和達三樹「微分積分」岩波出版,2018
  • 伏見康治・赤井逸「復刊 直交関数系 増補版」共立出版株式会社,2011
  • 久保裕一郎「プログラマのための数学教室」「C Magazine」2002年1月号, ソフトバンク パブリッシング
  • 坂巻佳壽美「見てわかるディジタル信号処理」工業調査会,2007
  • 足立修一「信号・システム理論の基礎」コロナ社,2014
  • 竹内淳「高校数学でわかるフーリエ変換」講談社,2009
  • 熊原啓作「フーリエ級数とは」「数学セミナー」2018年3月号,日本評論社
  • 野村隆昭「駆け足で巡るフーリエ変換」「数学セミナー」2018年3月号,日本評論社

📌 付録A:絶対可積分

次のフーリエ変換の定義式

X(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(x)e^{-i\omega x}

において, f(x)=x を考えると

X(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}xe^{-i\omega x}

となります.部分積分を使うと

X(\omega) = \frac{1}{2\pi}xe^{-i\omega x}dx = \frac{1}{2\pi}\left[x\frac{e^{-i\omega x}}{-i\omega}\right]_{-\infty}^{\infty} + \frac{1}{2\pi i\omega}\int_{-\infty}^{\infty}e^{-i\omega x}dx

ここで,第2項は, \omega=0 のとき分母に \omega があるので発散してしまいます. \omega\neq 0 のときは 0 になります.また,第1項は変形すると

\begin{aligned} \frac{1}{2\pi}\left[x\frac{e^{-i\omega x}}{-i\omega}\right]_{-\infty}^{\infty} &= \lim_{t\to\infty}\frac{1}{2\pi}\left[x\frac{e^{-i\omega x}}{-i\omega}\right]_{-t}^{t} \\[2ex] &= \frac{1}{2\pi}\left\{t\frac{e^{-i\omega t}}{-i\omega}-(-t)\frac{e^{i\omega t}}{-i\omega}\right\}\\[2ex] &= -\frac{t}{i\pi \omega}\frac{e^{i\omega t}+e^{-i\omega t}}{2} \\[2ex] &= \frac{t\cos\omega t}{i\pi\omega} \end{aligned}

よって, t\to\infty では無限大となってしまいます.つまり,フーリエ変換するときに,積分範囲が -\infty から \infty なので, f(x)x\to\pm\infty で, f(x)\to 0 とならない関数は積分値が発散します.よって,フーリエ変換の対象となる関数 f(x)

\int_{-\infty}^{\infty}|f(x)|dx \lt \infty

という条件があります.これを 絶対可積分 といいます.ここでは f(x)=x を使いましたが,これはデルタ関数を使うことでフーリエ変換が可能になります.

📌 付録B:回転子

オイラーの公式

e^{i\theta} = \cos \theta + i\sin \theta

は, r=1 の極形式です. \theta を変数とすると,複素平面における半径 1 の単位円に対応します.

i_007

このとき, \theta を足していけば,反時計回りに回転するということになります.例えば, \theta=0 から \theta=\pi/2 への変化は, 1i を掛けたものに相当します.これは

e^{i\frac{\pi}{2}} = e^{i\left(0+\frac{\pi}{2}\right)} = e^0 \cdot e^{i\frac{\pi}{2}} = 1\cdot i

ということです.さらに \pi/2 を増やせば i\cdot i=-1 となります.また,複素平面では,回転していることになります.よって, i回転演算子 とも呼ばれます.これは,複素平面の単位円上では,角度の足し算が指数関数の掛け算になっています.

次に z^3=1 の根を考えてみます.これは

z^3-1 = (z-1)(z^2+z+1) = 0

と因数分解できて, z=1z^2+z+1=0 の解となります.この2次方程式は虚数を使うと

z = \frac{-1\pm\sqrt{-3}}{2} = -\frac{1}{2}\pm\frac{\sqrt{3}}{2}i

が得られます.よって, z^3=1 の3乗根は

z = 1, \qquad z = -\frac{1}{2}\pm\frac{\sqrt{3}}{2}i

となります.これを踏まえて複素平面に戻ってみます. e^{2\pi i}=1 なので, z=e^{i\theta} の偏角に注目すると,指数関数の掛け算は角度の足し算だったので,3回足すと 2\pi になる角度 \theta を偏角とする e^{i\theta} が根となります.ということは, \theta=\frac{2\pi}{3} という解が得られます.

i_002

また, e^{4\pi i}=1 でもあるため, z=e^{\frac{4\pi i}{3}} も根です.同じように, 6\pi8\pi, ... と続きますが,

e^{\frac{6\pi}{3}} = e^{2\pi} = 1

のように繰り返しとなるので,結局

z = e^{\frac{2\pi}{3}}, \qquad z=e^{\frac{4\pi}{3}}, \qquad z=e^{\frac{6\pi}{3}}

となります.これらをオイラーの公式に代入すれば

\begin{aligned} z &= \cos\frac{2\pi}{3}+i\sin\frac{2\pi}{3} = -\frac{1}{2}+\frac{\sqrt{3}}{2}i \\[2ex] z &= \cos\frac{4\pi}{3}+i\sin\frac{4\pi}{3} = -\frac{1}{2}-\frac{\sqrt{3}}{2}i \\[2ex] z &= \cos\frac{6\pi}{3}+i\sin\frac{6\pi}{3} = \cos 2\pi = 1 \end{aligned}

と3乗根が得られます.それでは,これを n 乗根,つまり z^n=11n 乗根)に一般化します. z^n=1 の根として, 1e^{2\pi/n} が得られることがわかると思います.そして,それ以外の根も3乗根と同じように求めることができるので,

\sqrt[n]{1} = \cos\left(\frac{2k\pi}{n}\right) + i\sin\left(\frac{2k\pi}{n}\right) = e^{i\frac{2k\pi}{n}}

と与えられます.ここで,離散フーリエ変換,および高速フーリエ変換で出てくる記号

W_N^k = e^{-i2k\pi/N}

に注目してみます.右辺の指数部分は負(マイナス)になっているので, k が増えると,複素平面において時計回りの回転になることに注意してください.ここで, N=2,4,8 のときの図を見てみましょう.

i_008
N=2

i_009
N=4

i_010
N=8

W_N^k のそれぞれの位置は単位円上であり, W_N^{k}W_N^{k+N/2} は実軸と虚軸の両方で対称の位置にあることがわかります.よって,例えば W_8^{5}=-W_8^{1} という関係になります.これも N=2,4,8 のときの図で確認してみましょう.

i_011
N=2

i_012
N=4

i_013
N=8

また,次の関係もわかります.

i_006

この W_N のことを 回転子 と呼ぶことがあります.まとめると,

W_N^{k} = W_N^{k+nN}, \qquad W_N^{k+N/2} = -W_N^{k}

という関係が得られます.

📌 付録C:デルタ関数

次のような関数を考えてみます.

\begin{cases} f(x) = 1 \qquad & (-L \leq x \leq L) \\ \\ f(x) = 0 & (|L| \lt |x|) \end{cases}

delta001

これは単インパルス信号に対応した関数です.このフーリエ変換は

\begin{aligned} F(\omega) &= \frac{1}{2\pi}\int_{-\infty}^{\infty} f(x)e^{-i\omega x}dx \\[2ex] &= \frac{1}{2\pi}\left\{ \int_{-\infty}^{-L}0\cdot e^{-i\omega x}dx + \int_{-L}^{L}1\cdot e^{-i\omega x}dx + \int_{L}^{\infty}0\cdot e^{-i\omega x}dx \right\} \\[2ex] &= -\frac{1}{i2\pi\omega}\left[e^{-i\omega x}\right]_{-L}^{L} \\[2ex] &= -\frac{1}{i2\pi\omega}\left(e^{i\omega L}-e^{-i\omega L}\right) \end{aligned}

となります.ここでオイラーの公式

\sin\omega = \frac{e^{i\omega}-e^{-i\omega}}{2i}

を使うと

F(\omega) = \frac{1}{i2\pi k}\left\{ e^{i\omega L}-e^{-i\omega L} \right\} = \frac{\sin \omega L}{\pi\omega}

が得られます.これを図に表すと次のようになります.

delta003
L=4

このパルス幅をどんどん大きくしていくと,中心部の高さが大きくなっていきます.

delta004
L=8

delta005
L=16

そして,パルス幅を無限大にした極限では, y=1 のグラフに近づいていき, x=0 での値が無限大になります.

delta002

これは何も振動しない波であることから,波数 \omega = 0 の成分しか持っていないことを表しています.ここで, L=1 として逆フーリエ変換すると

f(x) = \int_{-\infty}^{\infty}F(\omega)e^{-i\omega x}d\omega = \int_{-\infty}^{\infty}\frac{\sin\omega}{\pi\omega}e^{-i\omega x}d\omega

となって, x=0 と置くと

\int_{-\infty}^{\infty}\frac{\sin\omega}{\pi\omega}e^{-i\omega \cdot 0}d\omega = \int_{-\infty}^{\infty}\frac{\sin\omega}{\pi\omega}d\omega = \frac{1}{\pi}\int_{-\infty}^{\infty}\frac{\sin\omega}{\omega}d\omega = f(0) = 1

となって, x を移行すれば

\int_{-\infty}^{\infty}\frac{\sin\omega}{\omega}d\omega = \pi

が得られます.

次に,下図のような関数 \delta_n(x) を考えてみます.

delta006

原点をはさんで幅が n ,高さが 1/n の長方形であり,この面積は常に 1 になります.よって, \xi\gt n/2 とすれば

\int_{-\xi}^{\xi}\delta_n(x)dx = 1

と書けます.さらに \xi を無限に広げても

\int_{-\infty}^{\infty}\delta_n(x)dx = 1

となります.これは n\to 0 の極限を考えれば,長方形の幅が無限小になり,高さが無限大の関数となります.

delta007

このような関数を デルタ関数 (ディラックのデルタ関数) と呼んで, \delta(x) と表記します.そしてこれはさきほどの単インパルス信号のフーリエ変換 F(\omega) と同じものです.つまり, f(x)=1 のフーリエ変換はデルタ関数であるということです.次にいくつかのデルタ関数の性質を見ていきましょう.まずは次の積分

\int_{-\infty}^{\infty}f(x)\delta(x)dx

では,関数 f(x) にデルタ関数をかけて,無限区間で積分したものです.ここで,デルタ関数が値を持つのは x=0 のときで,この場合の積分値が 1 であることから

\int_{-\infty}^{\infty}f(x)\delta(x)dx = f(0)

となります.また,デルタ関数を

\delta(x-a)

と変形すると,デルタ関数において値を持つ点が x=a に移ることを意味するので

\int_{-\infty}^{\infty}f(x)\delta(x-a)dx = f(a)

となって,任意の点における関数の値を取り出せることになります.次に,ヘビサイドのステップ関数 u(x) を考えると

u(x) = \begin{cases} 1 & (x \geq 0) \\ 0 & (x \lt 0) \end{cases}

delta008

これは, x=0 の点において, 0 から 1 に変換する関数です.この関数の微分をとると, x=0 のときに無限大となり,それ以外では傾きが 0 なので

\delta(x) = \frac{du(x)}{dx}

の関係にあります.
最後に,デルタ関数をフーリエ変換すると

F(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}\delta(x)e^{-i\omega x}dx

となりますが,デルタ関数の性質

\int_{-\infty}^{\infty}f(x)\delta(x)dx = f(0)

から

F(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}\delta(x)e^{-i\omega x}dx = \frac{1}{2\pi}e^{-i\omega\cdot 0} = \frac{1}{2\pi}

となって,これをフーリエ逆変換すると

\delta(x) = \int_{-\infty}^{\infty}F(\omega)e^{i\omega x}d\omega = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{i\omega x}d\omega

が得られます.右辺の積分部分

\int_{-\infty}^{\infty}e^{i\omega x}d\omega

の積分値は x=0 のときに 2\pi となります.また, \omega が負の場合でも結果は変わりません.

\int_{-\infty}^{\infty}e^{i\omega x}d\omega = \int_{-\infty}^{\infty}e^{-i\omega x}d\omega

ここで,デルタ関数

\delta(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{-i\omega x}d\omega

x で微分すると

\begin{aligned} \frac{d\delta(x)}{dx} &= \frac{1}{2\pi} \frac{d\left[\int_{-\infty}^{\infty}e^{-i\omega x}d\omega\right]}{dx} \\[3ex] &= \frac{1}{2\pi}\int_{-\infty}^{\infty}\frac{d\left(e^{-i\omega x}\right)}{dx}d\omega \\[3ex] &= \frac{1}{2\pi}\int_{-\infty}^{\infty}(-i\omega)e^{-i\omega x}d\omega \\[3ex] &= (-i)\cdot\frac{1}{2\pi}\int_{-\infty}^{\infty}\omega\cdot e^{-i\omega x}dx \end{aligned}

となります.右辺に注目してみると,これは f(\omega)=\omega のフーリエ変換であることがわかります. 1/-i=(1\cdot i)/(-i\cdot i)=i なので,関数 f(x)=x のフーリエ変換は

F(\omega) = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(x)e^{-i\omega x}dx = \frac{1}{2\pi}x\cdot e^{-i\omega x}dx = i\frac{d\delta(x)}{dx}

となります.さらに

\frac{d\delta(x)}{dx} = (-i)\cdot\frac{1}{2\pi}\int_{-\infty}^{\infty}\omega\cdot e^{-i\omega x}dx

x に関して微分すれば

\frac{d^2\delta(x)}{dx^2} = (-i)\cdot(-i)\cdot\frac{1}{2\pi}\int_{-\infty}^{\infty}\omega^2\cdot e^{-i\omega x}dx = -\frac{1}{2\pi}\int_{-\infty}^{\infty}\omega^2\cdot e^{-i\omega x}dx

となって, f(x)=x^2 のフーリエ変換となります.同様の手順を繰り返せば,べき関数 (x^n) のフーリエ変換ができます.