倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

フーリエ変換に関してを少々数学を

前回の記事で扱ったフーリエ変換に関する数学をちょっとだけ。

直交性 : Orthogonality

フーリエ変換では、基底となる指数関数の直交関係が逆変換の存在を保証しています。 ここではこの直交関係を導いてみましょう。 { q = e^{2πi/N} } として、直交関係は以下のように表されます:

  { \displaystyle
\begin{align*}
    \sum_{n=0}^{N-1}q^{nk}q^{-nk'} = N\delta_{k,k'}
\end{align*}
}

ここで { \delta_{k,k'} }クロネッカー (Kronecker) のデルタです。

  { \displaystyle
\begin{align*}
    \delta_{k,k'} = \begin{cases}1 & (k = k') \\ 0 & (k \ne k')\end{cases}
\end{align*}
}

証明

  { \displaystyle
\begin{align*}
    \sum_{n=0}^{N-1}q^{nk}q^{-nk'} = \sum_{n=0}^{N-1}q^{n(k-k')}
\end{align*}
}

ここで k = k' の場合

  { \displaystyle
\begin{align*}
    \sum_{n=0}^{N-1}q^{n(k-k')} = \sum_{n=0}^{N-1}1 = N
\end{align*}
}

また { k \ne k' } の場合、{ \kappa = k - k' } とおいて、等比級数になっていることに着目すると

  { \displaystyle
\begin{align*}
    \sum_{n=0}^{N-1}q^{n\kappa}
        &= \sum_{n=0}^{N-1}\left(q^\kappa\right)^n \\
        &= \frac{1-q^{\kappa N}}{1-q^\kappa} \\
        &= \frac{1-1}{1-q^\kappa} & (\because q^N = 1) \\
        &= 0
\end{align*}
}

よって

  { \displaystyle
\begin{align*}
    \sum_{n=0}^{N-1}q^{nk}q^{-nk'} = N \delta_{k,k'}
\end{align*}
}

正規化 : Normalization

フーリエ変換・逆変換が以下の定義されているとしましょう:

  { \displaystyle
\begin{align*}
    \mathcal{F} : x_n \mapsto y_n = \mathcal{N}\sum_{k=0}^{N-1} x_k \, q^{-kn} \\
    \mathcal{F}^{-1} : y_n \mapsto x_n = \mathcal{N}'\sum_{k=0}^{N-1} y_k \, q^{kn}
\end{align*}
}

このとき、変換と逆変換を続けて行ったときに元に戻るためには、正規化にどのような条件が満たされているべきかを求めましょう。 逆変換の式の { y_n } に変換式の { y_n } を代入して計算し、上記の直交関係なども使うと

  { \displaystyle
\begin{align*}
    x_n
        &= \mathcal{N}'\sum_{k=0}^{N-1}y_k \, q^{kn} \\
        &= \mathcal{N}'\sum_{k=0}^{N-1}\left(\mathcal{N}\sum_{\ell=0}^{N-1} x_{\ell} \, q^{-\ell k}\right) \, q^{kn} \\
        &= \mathcal{N'N}\sum_{\ell=0}^{N-1}x_\ell \sum_{k=0}^{N-1}q^{k(n - \ell)} \\
        &= \mathcal{N'N}\sum_{\ell=0}^{N-1}x_\ell N\delta_{n,\ell} \\
        &= \mathcal{N'N} N x_n
\end{align*}
}

よって

  { \displaystyle
\begin{align*}
    \mathcal{N'N} = \frac{1}{N}
\end{align*}
}

を満たせばよいことが分かります。 FastFourierTransformer クラスの transform() / inversetransform() メソッドでは

  { \displaystyle
\begin{align*}
    \mathcal{N} = 1\qquad \mathcal{N}' = \frac{1}{N}
\end{align*}
}

ととってあり、一方、 transform2() / inversetransform2() メソッドでは

  { \displaystyle
\begin{align*}
    \mathcal{N} = \mathcal{N}' = \frac{1}{\sqrt{N}}
\end{align*}
}

ととってあります。

マンガでわかるフーリエ解析

マンガでわかるフーリエ解析

高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)

高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)