フーリエ級数の基本

ウェブアプリで遊んで行ってちょうだい。

[
前の記事へ]  [物理数学の目次へ]  [次の記事へ]


驚くべき公式!

 まずは\( 0 \leqq x \leqq 2\pi \)の範囲で定義された連続な関数\( f(x) \)を考える。この関数がどんな形をしていようとも三角関数の足し合わせで表現できそうだという驚くべき内容をフランスの学者フーリエが論文中で使い、それが本当なのかどうかを巡って議論が沸き起こったのであった。19 世紀初めのことである。
\[ \begin{align*} f(x) \ =\ c \ +\ \sum_{n=1}^{\infty} \Big[ a_n \cos(nx) \ +\ b_n \sin(nx) \Big] \tag{1} \end{align*} \]
 波長が\( 2\pi \)\( \sin \)波と\( \cos \)波、その\( 1/2 \)の波長の\( \sin \)波と\( \cos \)波、\( 1/3 \)の波長の\( \sin \)波と\( \cos \)波、・・・というように、どんどん細かく上下するようになる波を次々と色んな振幅で重ね合わせていくのである。

 そんなことで本当に「どんな形でも」表せるのだろうか?

 いや、そうはいくまい。\( \sin \)波も\( \cos \)波も上下に同じだけ振動していて平均すれば 0 なので、そのようなものをどれだけ重ね合わせたとしても平均は 0 だろう。だから平均が 0 になるような形の関数しか表せないことになる。しかしそのような弱点を補うために (1) 式には平均値である\( c \)を入れておいた。それならどうだろう?

 それが本当であることを実感してもらえるようにウェブアプリを用意してみた。マウスを使って自由に波形を描いて見て欲しい。どんな形でも最終的にはかなり正確に再現してくれるはずだ。


係数を求める方法

 なぜこのようなことが可能なのかという証明は放っておくことにしよう。それよりも (1) 式に出てくる係数\( a_n \)\( b_n \)をどのように決めたら (1) 式が成り立つように出来るのかを説明したい。

 その前に、\( c \)は関数\( f(x) \)の平均値なので次のように計算すれば良いことは分かるはずだ。

\[ \begin{align*} c \ =\ \frac{1}{2\pi} \int_0^{2\pi} f(x) \diff x \tag{2} \end{align*} \]
 係数\( a_n \)\( b_n \)もこれに少し似ていて、次のようにして求めるのである。
\[ \begin{align*} \begin{split} a_n \ &=\ \frac{1}{\pi} \int_0^{2\pi} f(x) \cos(nx) \diff x \\ b_n \ &=\ \frac{1}{\pi} \int_0^{2\pi} f(x) \sin(nx) \diff x \end{split} \tag{3} \end{align*} \]
 なぜ\( \pi \)で割る?\( 2\pi \)で割るのではないの?なぜ\( \sin \)\( \cos \)を掛けて積分する?色んな疑問が出るかも知れないが、徐々に解決してゆこう。

 この計算を見ていると、例えば\( a_n \)を求めるときには\( \cos(nx) \)\( f(x) \)を掛けたものを積分している。つまり、\( 0 \leqq x \leqq 2\pi \)の範囲内で\( f(x) \)\( \cos(nx) \)と似た動きをしていれば結果は大きめに出て、合わない動き方をしていれば、結果は打ち消されて小さめに出てきそうだと想像できる。要するにこれは、\( f(x) \)の中から\( \cos(nx) \)に似た成分がどれだけあるかを抜き出してくる操作なのであろう。そのために\( 0 \leqq x \leqq 2\pi \)の範囲に渡って積分したので、それを平均するために\( 2\pi \)で割るというのなら何となく意味は繋がる気がするのだが、なぜか\( \pi \)だけで割っている。結果を 2 倍せねばならぬ事情がありそうだ。\( b_n \)についても同じようなものである。

 (2) 式と (3) 式は形式が似ている。(3) 式の\( a_n \)の式で\( n = 0 \)とすれば、\( \cos 0 = 1 \)であるので積分のところは同じ形になる。すると\( a\sub{0} \)\( c \)とは係数が違うだけであり、\( c = a\sub{0}/2 \)だと言えそうだ。だから (1) 式を次のように表しておけば (2) 式は不要になるだろう。

\[ \begin{align*} f(x) \ =\ \frac{a\sub{0}}{2} \ +\ \sum_{n=1}^{\infty} \Big[ a_n \cos(nx) \ +\ b_n \sin(nx) \Big] \tag{1'} \end{align*} \]
 意味は分かりにくくなるが、式の数を一つ減らせて、公式を書くためのスペースと手間を節約できるという利点がある。

 関数を (1) 式や (1') 式のように無限に続く三角関数の和の形で表したものを「フーリエ級数」と呼ぶ。関数の形によっては有限項で終わる場合もあり、その場合でもフーリエ級数と呼んで構わない。


公式が成り立つ理由

 しかし (3) 式で係数が求められるというのはなぜだろうか。この辺りのことを理解するために、次のような公式を知っていると助けになる。
\[ \begin{align*} \begin{split} &\int_0^{2\pi} \cos(mx) \cos(nx) \diff x \ =\ \pi \ \delta_{mn} \\ &\int_0^{2\pi} \sin(mx) \sin(nx) \diff x \ =\ \pi \ \delta_{mn} \\ &\int_0^{2\pi} \sin(mx) \cos(nx) \diff x \ =\ 0 \end{split} \tag{4} \end{align*} \]
 ただし\( m \)\( n \)は正の整数であるとする。右辺の\( \delta_{mn} \)は「クロネッカーのデルタ」というもので、\( m \)\( n \)が等しければ 1 で、それ以外は 0 であることを意味している。この公式は三角関数の積和の公式を使えば簡単に導けるので説明を省略したいところだが、\( m = n \)となる場合と\( m \neq n \)となる場合とで状況が異なることに気付かないと混乱する可能性があるので一つだけ例を示しておこう。
\[ \begin{align*} \int_0^{2\pi} \cos(mx) \cos(nx) \diff x \ &=\ \frac{1}{2} \int_0^{2\pi} \Big( \cos(m+n)x + \cos(m-n)x \Big) \diff x \\ &=\ \frac{1}{2} \bigg[ \frac{1}{m+n} \sin(m+n)x \ +\ \frac{1}{m-n} \sin(m-n)x \bigg]_0^{2\pi} \\[4pt] &=\ 0 \end{align*} \]
 この計算は\( m \neq n \)の場合には問題ないが、\( m = n \)では分母が 0 になってしまうところがあって正しくない。実は\( m = n \)の場合には積分する前に\( \cos(m-n)x = \cos 0 = 1 \)となっている。そのことに気付けばこの問題は回避できて、違った結果が得られることになるだろう。

 (4) 式はとても重要なことに気付かせてくれる。\( \{ \cos x, \, \cos 2x, \, \cos 3x, \, \cdots, \, \sin x, \, \sin 2x, \, \sin 3x, \, \cdots \} \)という関数は、互いに掛け合わせて積分した時、どの組み合わせを取ってみても 0 にしかならない!ただ自分自身と掛け合わせた時に限って\( \pi \)になるのである!

 この知識を利用しよう。(3) 式の右辺には\( f(x) \)が入っている。\( f(x) \)は (1) 式のように表されるというのを仮定だと考えてやって、これを (3) 式の右辺に代入してやると、その計算結果はどうなるだろうか?(4) 式を利用してやれば、ほとんどの項は消え去ることが分かるだろう。残る項は一つだけであって、その係数部分しか残らない。このようにして (3) 式が正しいことが示されることになる。先ほどの「全体を\( 2\pi \)で割るべきところが\( \pi \)で割られているのはなぜか」という疑問はあまり意味がなくて、ただ (4) 式がそういう形になっているから、というだけの事だったようだ。

 何か騙されたような気がするかもしれないし、循環論法的に感じるかも知れない。これではどうも説明になっていない感じがする。実際その通りだ。今のところ、関数\( f(x) \)が (1) 式のように表せると仮定すれば、そこで使われている係数は (3) 式のようであるべきだということを説明しただけであって、どんな関数の場合にでも (1) 式のように等式が成り立つという点についてはまだ解決していない。この点については昔の学者たちもすぐには認めることができなかったのである。

 本当にこんなものであらゆる関数を表すことができるのだろうか?


周期を変えて公式を作ってみる

 ここまでは\( 0 \leqq x \leqq 2\pi \)の範囲だけで考えていたが、\( \sin \)関数も\( \cos \)関数も周期関数なのでこの範囲外であっても全く同じ振る舞いを何度も繰り返すだけである。(1) 式のように表された関数\( f(x) \)についても周期\( 2\pi \)で同じ動きを繰り返すのである。

 ここまでに出てきた公式では全て\( 0 \leqq x \leqq 2\pi \)の範囲で積分していたのだが、一つの周期に渡って積分すれば結果は同じなのだから、例えば\( -\pi \leqq x \leqq \pi \)のような範囲で積分しても同じことである。

 しかし周期が\( 2\pi \)に限られているのはどうにも不自由さを感じる。周期を好きに設定できるように公式を改造できないだろうか。例えば (1) 式を次のように変更すれば、周期が\( L \)で繰り返すようにできそうだ。\( x = L \)の時にどうなるかを考えてみれば納得が行くだろう。

\[ \begin{align*} f(x) \ =\ c \ +\ \sum_{n=1}^{\infty} \left[ a_n \cos\left( n \frac{2\pi}{L} x \right) \ +\ b_n \sin\left( n \frac{2\pi}{L} x \right) \right] \tag{5} \end{align*} \]
 (2) 式の代わりには次のようなものを計算すればいいだろう。
\[ \begin{align*} c \ =\ \frac{1}{L} \int_0^{L} f(x) \diff x \end{align*} \]
 では\( a_n \)\( b_n \)はどうなるだろうか?それを探るために、(4) 式に代わるものを計算してみよう。やることは大して変わらないので結果だけ書くことにする。
\[ \begin{align*} &\int_0^{L} \cos\left(\frac{2\pi}{L}mx\right) \cos\left(\frac{2\pi}{L}nx\right) \diff x \ =\ \frac{L}{2} \ \delta_{mn} \\ &\int_0^{L} \sin\left(\frac{2\pi}{L}mx\right) \sin\left(\frac{2\pi}{L}nx\right) \diff x \ =\ \frac{L}{2} \ \delta_{mn} \\ &\int_0^{L} \sin\left(\frac{2\pi}{L}mx\right) \cos\left(\frac{2\pi}{L}nx\right) \diff x \ =\ 0 \end{align*} \]
 なるほど、先ほどの話と比べてほとんど変更はない。そんなに難しいことを考える必要は無さそうだ。係数\( a_n \)\( b_n \)を次のように決めておけば話が合うだろう。
\[ \begin{align*} \begin{split} a_n \ &=\ \frac{2}{L} \int_0^{L} f(x) \cos\left(\frac{2\pi}{L}nx\right) \diff x \\ b_n \ &=\ \frac{2}{L} \int_0^{L} f(x) \sin\left(\frac{2\pi}{L}nx\right) \diff x \end{split} \tag{6} \end{align*} \]
 \( c \)はやはり\( c = a\sub{0}/2 \)とすることで (6) 式に吸収できそうである。(5) 式を書き直しておこう。
\[ \begin{align*} f(x) \ =\ \frac{a\sub{0}}{2} \ +\ \sum_{n=1}^{\infty} \left[ a_n \cos\left( \frac{2\pi}{L} nx \right) \ +\ b_n \sin\left( \frac{2\pi}{L} nx \right) \right] \tag{5'} \end{align*} \]
 この (5') 式と (6) 式が、周期が\( L \)になるように拡張したフーリエ級数の公式である。

 教科書によっては\( [-L,L] \)の範囲で積分してあるものがあるが、その場合、周期は\( 2L \)になるので上の公式の\( L \)\( 2L \)に置き換えれば同じ形になり、話は合うだろう。積分範囲については周期と同じ幅になっていればどう選んだって構わないのである。

 フーリエ級数は、積分した範囲の\( f(x) \)の形と同じ形を周期\( L \)で何度も何度も繰り返すような関数を再現してくれることになる。


偶関数と奇関数

 \( \sin \)関数は奇関数であり、\( \cos \)関数は偶関数である。もしどんな関数でもフーリエ級数のように表せるとしたならば、どんな関数でも、偶関数と奇関数に分けて表せるということになる。

 まぁ、それについてはフーリエ級数に頼らなくてもいつでも言えることではある。

\[ \begin{align*} g(x) \ =\ \frac{f(x) - f(-x)}{2} \ \ \ \ \ , \ \ \ \ \ h(x) \ =\ \frac{f(x) + f(-x)}{2} \end{align*} \]
としておけば、\( g(-x) = -g(x) \)となるので\( g(x) \)は奇関数だし、\( h(-x) = h(x) \)となるので\( h(x) \)は偶関数だし、
\[ \begin{align*} f(x) \ =\ g(x) \ +\ h(x) \end{align*} \]
なので、\( f(x) \)は偶関数と奇関数に分けて表せたことになるからである。

 本当に言いたいのはそのことではないのだった。\( f(x) \)が偶関数なら\( \cos \)関数だけの項で表せるし、\( f(x) \)が奇関数なら\( \sin \)関数だけの和で表せるだろうということを記憶に留めておいてもらいたいのである。\( f(x) \)が偶関数なら全ての\( b_n \)は 0 になるし、\( f(x) \)が奇関数なら全ての\( a_n \)は 0 になる。なぜちゃんとそんなことになるのかを考えるのは読者に任せよう。偶関数と奇関数の積は奇関数になるとか、奇関数と奇関数の積は偶関数になるだとかはちゃんと知ってるだろうか?その辺りを使えばいい。

 \( a_n \)が全て 0 で\( \sin \)関数ばかりの項で出来たフーリエ級数のことを「フーリエ正弦級数」と呼び、\( b_n \)が全て 0 で、定数\( a\sub{0} \)\( \cos \)関数ばかりの項で出来たフーリエ級数のことを「フーリエ余弦級数」と呼ぶ。

 基礎知識として知っておけばいいことはだいたいこれくらいだろうと思う。