2 最良近似としてのフーリエ級数

2.1 最小二乗法

最小二乗法というのは,データをある関数で最良近似する方法である.例えば,

$\displaystyle (1.2,\,2.2)\quad(2.1,\,3.8)\quad(3.3,\,5.6)\quad(4.1,\,7.1)\quad(5,8.8)$ (1)

$ (x,y)$の実験データがあるとする.これを直線で近似$ y=ax+b$したい.どうすればよ いか?--という問題である.誤差の2乗が最小になる直線が最良近似とすることができる. これを最小二乗法(least squares method)と言う.式で表すと,誤差の二乗の和$ E(a,b)$は,

$\displaystyle E(a,b)=\sum_{i=1}^n (y_i-ax_i-b)^2$ (2)

となる. $ (x_i,\,y_i)$は,$ i$番目のデータで,$ n$はデータの個数である.この誤差が 最小になる$ a$$ b$を捜す.式(2)は$ a$にも$ b$にも2次式でその係 数は正の値なので最小値がある.誤差$ E$の最小値は,それぞれ偏微分した値がゼロとな るときに得ることができる.

  $\displaystyle \if 11 \frac{\partial E}{\partial a} \else \frac{\partial^{1} E}{\partial a^{1}}\fi =-\sum_{i=1}^n 2(y_i-ax_i-b)x_i=0$   $\displaystyle \if 11 \frac{\partial E}{\partial b} \else \frac{\partial^{1} E}{\partial b^{1}}\fi =-\sum_{i=1}^n 2(y_i-ax_i-b)=0$   (3)

これは,$ a$$ b$の連立方程式である.すなわち,

\begin{equation*}\left\{\quad \begin{aligned}a\sum_{i=1}^nx_i^2+b\sum_{i=1}^n x_...
...y_i\\ a\sum_{i=1}^nx_i+nb&=\sum_{i=1}^n y_i \end{aligned} \right.\end{equation*}

である.これを解くと

  $\displaystyle a=\cfrac {n\sum_{i=1}^n x_iy_i-\sum_{i=1}^nx_i\sum_{i=1}^ny_i} {n\sum_{i=1}^nx_i^2-(\sum_{i=1}^nx_i)^2}$   $\displaystyle b=\cfrac {\sum_{i=1}^nx_i\sum_{i=1}^ny_i-\sum_{i=1}^nx_iy_i\sum_{i=1}^nx_i} {n\sum_{i=1}^nx_i^2-(\sum_{i=1}^nx_i)^2}$   (5)

となる.

最初に示したのデータについて計算してみると, $ a=1.452119,\,b=0.708006$となる.ゆ えに,最小二乗法による1次関数は

$\displaystyle y=1.452119 x + 0.708006$ (6)

となる.データをこの間数をプロットすると,図1のようになる.

グラフ作成ソフトウェアーは,最小二乗法によるデータのフィッティングをサポートして いるものが多い.EXCELでも可能なはずである.実験データの整理に使うと良い.

図 1: データを最小二乗法でフィット
\includegraphics[keepaspectratio, scale=1.0]{figure/lsm.eps}

ここでは,偏微分により最小二乗法の式を導いたが,線形代数の部分空間への射影を考え る方が簡単である.これについては,参考文献 [2]に詳しく書い てある.これは良い教科書なので,一読を勧める.

2.2 フーリエ級数の最小二乗法

2.2.1 誤差の積分

ここでは,フーリエ級数で関数をフィッティングした場合の誤差を考える.

区間 $ [-\pi,\,\pi]$で定義された関数$ f(x)$は,

$\displaystyle f(x)$ $\displaystyle =\frac{a_0}{2}+a_1\cos x+a_2\cos 2x+a_3\cos 3x+\cdots+ b_1\sin x+b_2\sin 2x+b_3\sin 3x+\cdots$    
  $\displaystyle =\frac{a_0}{2}+\sum_{k=1}^\infty(a_k\cos kx+b_k\sin kx)$ (7)

のようにフーリエ級数で表すことができる.例えば, $ [\pi,\,\pi]$で定義された関数 $ f(x)=x$は,

$\displaystyle f(x)=2\left[\sin x-\frac{\sin 2x}{2}+\frac{\sin 3x}{3}- \dots+(-1)^{n+1}\frac{\sin nx}{n}+\cdots\right]$ (8)

と表すことができる.ここで,区間 $ [-\pi,\,\pi]$での元の関数$ x$と,式 (8)の右辺の誤差の2乗$ E$を考える.一次関数でデータをフィッ ティングしたときは,誤差の2乗の和であったが,ここでは関数をフィッティングするの で誤差の二乗の積分になる.

$\displaystyle E=\frac{1}{2\pi}\int_{-\pi}^\pi\left\{x-2\left[\sin x-\frac{\sin ...
... 3x}{3}- \dots+(-1)^{n+1}\frac{\sin nx}{n}+\cdots\right]\right\}^2\,\mathrm{d}x$ (9)

積分の前に$ 1/2\pi$は気にする必要は無い.教科書に合わせているだけで,トータルの誤 差ではなく平均誤差を表している.証明はしていないが,フーリエ級数の展開の係数を無 限大まで計算すると, $ E\rightarrow 0$となる.誤差の2乗の積分がゼロとなる 2

2.2.2 三角関数でフィットするときの最小二乗法

フーリエ級数とは全く話を別にして,区間 $ [-\pi,\,\pi]$で定義された関数$ f(x)$を三角 関数で最小二乗法で近似する.すなわち,

$\displaystyle S_n(x)=\frac{a_0}{2}+\sum_{k=1}^n(a_k\cos kx+b_k\sin kx)$ (10)

で近似する.なんか,フーリエ級数そっくりではないか?--とツッコミをいれたくなるが, それとはまったく別なもの,フーリエ級数など知らないとして,話を進める.ある関数 $ f(x)$$ S_n(x)$で近似することを考える.ここで,式(10)の係数$ a_k$$ b_k$を上手に選んで,$ f(x)$との誤差が最も小さくなるようにする.ちょうど,最初に示したデー タとの誤差を最小にする1次関数の係数を求めたようにする.二乗平均誤差3を,

$\displaystyle E(a_0,\,a_1,\,a_2,\,\cdots,\,a_n;\,b_1,\,b_2,\,\cdots,\,b_n)= \frac{1}{2\pi}\int_{-\pi}^{\pi}[f(x)-S_n(x)]^2\,\mathrm{d}x$ (11)

と定義する.この二乗平均誤差は,係数$ a_k$$ b_k$の関数となっている.この係数が変 わると誤差の量も変化する.この式は,1次関数でデータをフィットするときの誤差を表 す式(2)に対応する.

誤差を表す式(11)を最小にするには,$ a_k$$ b_k$をどのように選ぶか?-- ということが問題となる.これを最小にするということは,関数$ f(x)$を三角関数で近似 する最適な係数を決めることに他ならない.式(11)には最小値があり,関 数を近似する最適な$ a_k$$ b_k$がある.なぜならば,全ての$ a_k$$ b_k$は係数が正の 2次式であるため,最小値があるからである.この最小値はそれぞれの偏微分がゼロに なるときに得られる.すなわち,

\begin{subequations}\begin{align}& \if 11 \frac{\partial E}{\partial a_0} \else ...
...lse \frac{\partial^{1} E}{\partial b_n^{1}}\fi =0& \end{align}\end{subequations}

が条件となる.この具体的な計算は,式(11)に式(10)を代入 して偏微分がゼロとなる$ a_k$$ b_k$を求める.

2.2.2.1 準備

$ a_k$$ b_k$を求める具体的な計算の前に,ここで使う三角関数の重要な式を示しておく.

  $\displaystyle \int_{-\pi}^{\pi}\cos nx\cos mx=\int_{-\pi}^{\pi}\sin nx\sin mx\,\mathrm{d}x =\begin{cases}\pi & (n=m)\\ 0 & (n \ne m) \end{cases}$ (13)
  $\displaystyle \int_{-\pi}^{\pi}\sin nx\cos mx\,\mathrm{d}x=0$ (14)
  $\displaystyle \int_{-\pi}^{\pi}\sin nx\,\mathrm{d}x = \int_{-\pi}^{\pi}\cos nx\,\mathrm{d}x = 0$ (15)

これらの式は,第4回の講義で話した内容である.

2.2.2.2 $ a_0$の計算

二乗平均後差が最小になる$ a_0$は,次のように計算して求める.

0 $\displaystyle = \if 11 \frac{\partial E}{\partial a_0} \else \frac{\partial^{1} E}{\partial a_0^{1}}\fi$    
  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}2\left\{ f(x)-\left[\frac{a_0}{2}+\sum_{k=1}^n(a_k\cos kx+b_k\sin kx)\right] \right\}\frac{1}{2}\,\mathrm{d}x$    

                式(15)より$ \sin kx$$ \cos
kx$の積分はゼロとなるので,


  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}\left\{f(x)-\frac{a_0}{2}\right\}\,\mathrm{d}x$    
  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}f(x)\,\mathrm{d}x +\frac{a_0}{4\pi}\int_{-\pi}^{\pi}\,\mathrm{d}x$    
  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}f(x)\,\mathrm{d}x +\frac{a_0}{2}$ (16)

である.ゆえに,

$\displaystyle a_0=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\,\mathrm{d}x$ (17)

となる.これは,フーリエ級数の$ a_0$の計算と同じ.

2.2.2.3 $ a_k$の計算

二乗平均後差が最小になる$ \ell$番めの係数$ a_\ell$を計算する

0 $\displaystyle = \if 11 \frac{\partial E}{\partial a_\ell} \else \frac{\partial^{1} E}{\partial a_\ell^{1}}\fi$    
  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}2\left\{ f(x)-\left[\frac{a_0}{2}+\sum_{k=1}^n(a_k\cos kx+b_k\sin kx)\right] \right\}\cos \ell x\,\mathrm{d}x$    

                式(13)(14)(15)を使うと,


  $\displaystyle =-\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\cos \ell x\,\mathrm{d}x +\frac{a_\ell}{\pi}\int_{-\pi}^{\pi}\cos\ell x\cos \ell x\,\mathrm{d}x$    
  $\displaystyle =-\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\cos \ell x\,\mathrm{d}x +a_\ell$ (18)

したがって,

$\displaystyle a_k=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\cos kx\,\mathrm{d}x$ (19)

である.これもフーリエ係数の計算と同じ

2.2.2.4 $ b_k$の計算

同様にし,二乗平均後差が最小になる$ \ell$番めの係数$ b_\ell$を計算する

0 $\displaystyle = \if 11 \frac{\partial E}{\partial b_\ell} \else \frac{\partial^{1} E}{\partial b_\ell^{1}}\fi$    
  $\displaystyle =-\frac{1}{2\pi}\int_{-\pi}^{\pi}2\left\{ f(x)-\left[\frac{a_0}{2}+\sum_{k=1}^n(a_k\cos kx+b_k\sin kx)\right] \right\}\sin\ell x\,\mathrm{d}x$    

                式(13)(14)(15)を使うと,


  $\displaystyle =-\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\sin\ell x\,\mathrm{d}x +\frac{b_\ell}{\pi}\int_{-\pi}^{\pi}\sin\ell x\sin\ell x\,\mathrm{d}x$    
  $\displaystyle =-\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\sin\ell x\,\mathrm{d}x +b_\ell$ (20)

したがって,

$\displaystyle b_k=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\sin kx\,\mathrm{d}x$ (21)

である.これもフーリエ係数の計算と同じ.

2.2.3 まとめ

フーリエ級数は,関数$ f(x)$を最小二乗法で近似している.これは,展開する三角関数が 有限個の場合,その展開の項数に関わらずいつも最良近似となっている.展開の項数に関 わらず,同じ係数でいつでも最良近似となるのは,展開する三角関数の列が直交関数系と なっているからである.テイラー展開ではこのようにならない.
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年12月1日


no counter