数式処理ソフト DERIVE(デライブ) de ドライブ

65.再帰関数(4)(フーリエ級数)

フーリエ級数とギッブス現象

「数式処理ソフト DERIVE(デライブ)では、これまで、フーリエ級数について、取り上げなかった。
寄り道になるかもしれんが、数列や級数のつながりで、ここで、取り上げよう」

「任意の関数を三角関数の和で表すというものね。
 岩波数学辞典第4版の『解析学』の章の歴史の中に登場しているわ。
 それによると、1747年に、ダランベール(J. d’Alembert)が弦の振動に関する偏微分方程式を解いて、固定端を持つ、弦の振動が、三角級数の形に表現できることを示したとあるわ。
 その後、任意の関数が三角級数で表すことができるかという問題が浮上したが、これは、ダランベール自身も、かの、オイラーやラグランジュも否定的だった。
 へー、そうなんだ。
 19世紀になって、フランスのフーリエ( Fourier:1768-1830)が1807 年に熱伝導に関して、任意の関数が三角級数で表せるということを主張した。
 『証明』ではなくて、『主張』というのも面白いね」

「わしも、大昔、このフーリエ級数に接したとき、一般の関数が、例え、無限和といっても、三角級数に等しくなるというのは、信じられなかったので、分かる気がするのう。
結局、フーリエの定理の完全な証明は、ドイツの著名な数学者、ディリクレ(Dirichlet:1805~1859)により、1829年になされたとあるな。
 以前紹介した、荒木源太郎先生の『物理学への数学的序説』(みすず書房:昭和42年11月30日 第1版)も、フーリエ級数から始まっており、『フーリエの定理』の証明に、『ディリクレの積分』というものが登場している。
 荒木先生の本では、一定区間で『有界変動』な関数は、その区間内でフーリエ級数で表せることを証明している。実際は、もう少し広い範囲の関数で成立するとあるが、普通、物理で現れる、おとなしい関数は、フーリエ級数の対象になる。
 先ほどの『解析学』の歴史を読むと、級数や関数の『収束』という概念が、オイラーなどの時代は、ぼんやりとしていた(天才は怪しい級数をよけることが出来た)、コーシーは、ずいぶんと概念を厳密にしたが、それでも十分ではなく、ワイエルシュトラス(Weierstrass:1815~ 1897)に待つことになったとあるのう。
 さて、問題の発端となった、弦の振動じゃが、今、長さ、x軸方向に原点からLまでに張った軽い糸のy軸方向の振動を取り上げよう。原点と他端とも固定されているとする。
 糸の単位長さあたりの質量をρ、張力をTとするとき、重力を無視した、y方向の小さい振動については、次の方程式が成り立つ。
 ∂2y/∂t2=(T/ρ)22y/∂x2、(T/ρ)は、振動数となり、可聴域の場合は、音として人の耳に聞こえる。
 この方程式については、以前、『光と音は兄と妹(1)』でも書いた。また、いろいろいなテキストに載っているので、ここでは、省略することにしよう。
 さて、初期条件を、y(0,x)=f(x)、すなわち、t=0のときの弦の変位を表すとすると、
 f(x)=Σ(n=1~∞)(b(n)sin(π/L×nx))、となる必要がある。
 この係数、b(n)=2/L∫f(x)sin(π/L×nx)dx、ただし、積分範囲は、0~Lである」

「DERIVEでは、フーリエ級数を求めるための関数があるわよ。
それが、Fourier(関数,変数,始点,終点,項数)というもの。
 たとえば、x^2を範囲、-1から1でフーリエ級数に展開するときは、f(x):=x^2として、
 FOURIER(f(x), x, -1, 1, 5)のように入力する。
 結果は、- 4COS(5πx)/(25π^2) + COS(4πx)/(4π^2) - 4COS(3πx)/(9π^2) + COS(2πx)/π^2 - 4COS(πx)/π^2 + 1/3、
と展開できる。
 
 グラフで見ると、上のような感じね。
 f(x)=x^2、x=-1~1では、上のようにn=5でも、結構、よく近似している気がする。
 最初は、単純にf(x)=xのようなものを例としようとしたんだけど、


 上の図のように、級数が、x=±1付近で、すごく、大きく外れるのよ」

「これが、いわゆる、『ギッブス現象(ギブス現象)』というものじゃな。
f(x)=xは、±1の点で不連続となる。
ここは、誤解されがちなんじゃが、フーリエ級数で展開した場合に、展開の区間外は、その関数が繰り返していると考える
f(x)=xの場合は、丁寧に書くと、x=-1~1でx、x=1~3では、f(x)=-2+x、x=3~5で、f(x)=-4+x、等々。
DERIVEで、再帰関数を利用して定義すると、
f(x):=IF(ABS(x) ≤ 1, x, IF(x > 0, f(x - 2), f(x + 2)))、
として、フーリエ級数に展開されていると思わないといけないのじゃ。
これで見ると、x=・・-3、-1、1、3、・・の各点では、関数の値が不連続となることが分かる。
このような不連続点近傍では、ギャップを生じてしまう。

 上図は、n=20項まで、級数を計算した結果のグラフと元のf(x)を重ねて表示したものじゃ。
 フーリエ級数で展開した場合に、その点で関数の値と級数の和との間で有限の跳びが生ずる。これは、アメリカの物理学者のGibbsが解明した現象じゃ。
 ギッブス(ギブス)は、熱力学や統計力学でもギッブスの自由エネルギーなどの名前でも知られている。
 x=x0という、不連続点では、フーリエ級数の値は、1/2(lim x→x0+ε + x→x0-ε)となることが知られている。
 この例では、(+1+-1)/2=0、であるので、あまり目立たない。
 ただ、x=1の近くに跳びだしている部分がある。
 もう少し、詳しく見るために、f(x)=|x|<=1で x、それ以外では、0 という関数として、そのフーリエ級数を求めてみると、
n=5では、2SIN(5πx)/(5π) - SIN(4πx)/(2π) + 2SIN(3πx)/(3π) - SIN(2πx)/π + 2SIN(πx)/π、
 である。
 この有限の級数を、xで微分してみると、その導関数は、x=0.8329114近くで、ゼロ点を持っている(それ以前にも持っているが)。

 
 そこでの、フーリエ有限級数の値は、(1.007668870)、一方、関数f(x)=x=0.8329114、なので、
その比率は、(1.209815197)となり、約20%オーバーとなる。上の図を参照。
 同様に、n=20まで、展開した有限級数に対しては、x=0.9518987で、比率が、(1.188026579)となり、約19%近くオーバーとなる。
 さて、nが大きいときの、f(x)=x、展開区間[-π,π]のときのギッブス現象の大きさをもう少し正確に評価してみよう。

 上図は、n=20及びn=100のときの、xのフーリエ級数のx=πの近傍の様子。
 直線は、x を示す。
 有限ではあるが、非常に大きなnまでのフーリエ級数の和をS(n)と書く。
DERIVEでの表記は、S(n)=(- 2∑(COS(πm)SIN(mx)/m, m, 1, n))、
 ギップス現象は、x がπ近傍の現象なので、xをπ-εと置いてみる。ε>0の小なる実数。
 S(n)=2∑(SIN(mε)/m, m, 1, n)、
 nが大きくなればなるほど、πの近くで、ギッブス現象は現れるため、nε=k、と置き、後ほど、kにより最大値を評価する。
このとき、ε=k/n、
 そこで、∑(SIN(mε)/m, m, 1, n)≒(1/n)Σsin(k*m/n)/(m/n)と見積もり、
1/n≒dy、また、m/n≒y と、和を積分で近似すると、
 S(n)≒2∫(y=0~1)(sin(k*y)/y)dy=2SI(k)、となる。
 ここで、SI(t)=∫(t=0~t)sin(t)/t dtは、正弦積分じゃ。
こうすると、xでの比率は、S(n)/x≒2SI(k)/π、
 この比率が、最大になるのは、右辺をkで微分した、2sin(k)/πk、をゼロと置いたときの、k=π、である。
このときの比率は、2SI(π)/π≒(1.178979744) と、約18%ほど、とびだすと評価できる。
 すなわち、ギップス現象が最大になるのは、x≒π(1-1/n)の点となる。



 n=5では、(2.513274122)、n=20では、(2.984513020)となるが、上の図のとおり、ほぼ、合っているようじゃ
※上の青字個所は、2013/2/7に一部訂正しました。

「えーと、最初のf(x)=x^2、区間が、±1の場合は、跳びが出なかったのは、区間内に不連続点がなかったためか。
f(-1)=1、f(1)=1だから、端点では、フーリエ級数の導関数は、不連続だけど、関数自身は、連続しているものね」

「そもそも、フーリエ級数というものは、周期関数の解析に使われるので、元の関数が周期関数であり、その周期で展開した場合には、この現象は支障にはならない。
ただし、フーリエ級数の周期は、フーリエ展開したときの区間で決まるので、元の関数自身(周期を持つとして)の周期で決まるのではないということに注意しないといけないのう」

「f(x)=x、x=0~1までで、三角級数に展開する場合に、(FOURIER(x, x, -π/2, π/2, 20))のように、区間より、少し、大きめに展開すれば、よい訳ね。
それと、区間の端点を計算しやすいように、選択するというのも手か。
ではと、上記のようにn=20までとったフーリエ級数を、0~1で定積分すると、(0.4983430340)が得られた。もし、f(x)=xならば、0.5となるので、まあまあかな。
と思ったら、コシャクにも、(FOURIER(x, x, 0, 1, 20))として計算した級数を元に定積分を計算すると、ピタリと、0.5となるじゃないですか。
ではと、(FOURIER(x, x, -π/2, π/2, 100))のように、n=100とすれば、定積分の計算に時間はかかるものの、(0.5000209973)と有効数字4桁程度まで一致する結果になったわ」 

「FOURIER(x, x, -0.2, 1.2, 20)としても、よいようじゃな。n=20でも定積分は、0.5と計算できた。
まあ、区間の2つの関数の定積分値が近いからと言って、元の関数との一致の度合いが高いとは一概には言えないというじゃな」

「関数同士の差の二乗和の定積分[0,1]を計算すると、
(FOURIER(x, x, -π/2, π/2, 20))の0~1までの場合、xとの二乗和の積分は、(0.0004568856687)であるのに対して、
(FOURIER(x, x, 0, 1, 20))の同様の二乗和は、(0.002470758753)となって、5倍も大きい差がある。
だから、全体としては、区間[0,1]で、x に近い関数はといわれると、
(FOURIER(x, x, -π/2, π/2, 20))の方が、(FOURIER(x, x, 0, 1, 20))よりも近いと言えるわ」

数列のフーリエ型母関数

「前節の荒木先生のテキストにいろいろと、式が輩出している。
ここでは、母関数としてのフーリエ級数を取り上げてみよう。
 第63回で、通常型母関数(Σa(n)x^n)、指数型母関数(Σa(n)x^n/n!)という言葉が出てきた。
 これ以外に、フーリエ型母関数と言うべきものがある。
 これは、母関数=a(0)/2+Σa(n)cos(nx)+Σb(n)sin(nx)のように、母関数の展開係数として数列、a(n)、b(n)が出てくるものじゃ」

「荒木先生の本では、本文に、f(x)=|x|の例が出てくるわ。
章末の問題に、f(x)=x^2が出ているので、これをためしてみるわ。
x^2は、偶関数なので、[-π,π]で展開すると、x^2=2×(a(0)/2+Σ(m=1~∞)a(m)cos(mx))、
ここで、両辺に、cos(nx)をかけて、[-π,π]で積分すると、
左辺からは、n>0のとき、∫(x=-π~π)(x^2×cos(nx))dx=4π(-1)^n/n^2、
n=0のとき、左辺=2π^3/3、となり、右辺は、2πa(0)、なので、a(0)=π^2/3、
また、n>0では、右辺からは、m=nの項だけ残り、2×π×a(n)となるので、a(n)=2(-1)^n/n^2、
x^2=π^2/3+4Σ(m=1~∞)((-1)^m/(m^2)×cos(mx))、が成立する。
ここで、x=πと置けば、右辺第2項は、4Σ1/m^2となるので、
Σ(m=1~∞)(1/m^2)=π^2/6、となり、既知の結果と一致する」

「ご苦労さん。
DERIVEでは、FOURIER(x^2, x, -π, π, n)とすると、
x^2=4∑(COS(πm)COS(mx)/m^2,m,1,n) + π^2/3、が得られる。
ここで、x=πと置けば、左辺=π^2、
右辺=4∑(COS(πm)COS(πx)/m^2,m,1,n)+π^2/3=4Σ1/m^2+π^2/3、
従って、Σ1/m^2=(1/4)(π/2-π^2/3)=π^2/6、となる。
なお、DERIVEでは、x=πと置くと、直ちに、右辺が、π^2 - 4(2, n + 1)、と変形されてしまう。
ζは、ζ(s,n)=ζ(s)-Σ(m=1~n)(1/s^m)なる、DERIVEの関数じゃ。
ここで、ζ(s)=Σ(m=1~∞)(1/s^m)、これから、lim(n→∞)ζ(s,n)→ζ(s)じゃ。
従って、n→∞とすると、右辺は、π^2となり、左辺=右辺という、恒等式が得られるだけじゃ」

「なるほど。
DERIVEは、答えを既に知っていたということですか。
では、次の問題。
cos(kx)をフーリエ級数に展開。ただし、kは、整数ではない。
[-π,π]での展開結果は、
SIN(πk)/(πk) - (∑(SIN(πm + πk)COS(mx)/(m-k), m, 1, n) - ∑(SIN(πm + πk)COS(mx)/(m+k), m, 1, n))/π、
ここで、kの小さい時を考えて、k≒0のテイラー展開を2次まで行うと、
左辺=cos(kx)≒(1 - k^2x^2/2)
また、右辺は、(- (12k^2∑(COS(πm)COS(mx)/m^2, m, 1, n) + π2k^2 - 6)/6)、
両辺を等しいとおき、x=0とおくと、
- 2k^2∑(COS(πm)/m^2, m, 1, n) - π^2k^2/6=0、
kがゼロでないとして、両辺をk^2で割って、
∑(COS(πm)/m^2, m, 1, n)=-π^2/12、
並べ替えて、
Σ(m=1~∞)((-1)^(m+1)/m^2)=π^2/12、
となんとか、解くことができたよ。
kで微分するのかと思ったら、どうもうまくいかなかったな」

「kで微分するのなら、最初から、cos(kx)のフーリエ展開せよ、とはこないのではないかな?
これが、荒木本の第1章の問題(3-2)じゃ。
このアイデアで、kのテイラー展開を4次まで進めると、
k^4の項の比較により、以下の式が求まる。
π^2∑(COS(πm)/m^2, m, 1, n)/3 - 2∑(COS(πm)/m^4, m, 1, n) + π^4/120 = 0、
これから、
-Σ(-1)^m/m^2=π^2/12、という前問の答えを利用して、
-Σ(-1)^m/m^4=7π^4/720、という結果も得られる。
DERIVEでは、直ちに、-Σ(-1)^m/m^4=7π^4/720が得られて、正しいことが確認できる」

t^2n×cos(mt)の積分の漸化式

「前節で、x^2やx^4のフーリエ級数を元に無限級数の和を計算した。
この節では、もう少し、一般的に、t^2nのフーリエ級数を求めてみよう。
 なお、前回にならって、変数をxからtに変えてある」

「じゃ、c(n,m)=∫(t=-π~π)t^2n×cos(mt)dt、とします。
容易に、c(0,m)=0、
また、c(n.0)=2π^(2n + 1)/(2n + 1)、
また、部分積分を2回繰り返すと、次の漸化式が得られる。
c(n,m)=4nπ^(2n - 1)(-1)^m/m^2 - 2n(2n - 1)c(n - 1, m)/m^2)、
これを元に、t^2n=c(n,0)/2π+Σ(m=1~∞)c(n,m)/π×cos(mt)、と表すことができる。
DERIVEの再帰関数の形には、
c(n,m):=IF(n = 0,0,IF(m = 0,2π^(2n + 1)/(2n + 1),4nπ^(2n - 1)(-1)^m/m^2 - 2n(2n - 1)c(n - 1, m)/m^2)、ね。
無限級数は、
t=0とおいて、
-(π^(2n+1)/(2n + 1))=Σ(m=1~∞)c(n,m)、と変形した方が見やすいから。
たとえば、n=1とおくと、
π^3/3=Σ(4π(-1)^m/m^2)、となり、これから、
-Σ((-1)^m/m^2=π^2/12、という前節で導いた値が出る」

「そのとおりじゃな。
以下の和は、m=1~∞として、
n=2は、前節で出てきているが、-Σ(-1)^m/m^4=7π^4/720、と容易に求められる。
また、n=3では、-Σ(-1)^m/m^6=31π^6/30240、が求められる。
n=4では、-Σ(-1)^m/m^8=127π^8/1209600、
などと求めることができる」
「DERIVEでは、『代数』メニューの『式の置換』が便利だね。


式の中の一部分を選択して、色が変わってから、このメニューを使うと、その部分だけ、他の式に置き換えたり、仮の変数に置き換えることが出来る」

「確かにな。
c(n,m)から、-Σ(-1)^m/m^2k、k=1、2、3、・・の和の漸化式を直接に求められなかったのは、残念じゃな。
とは言え、このような無限級数の和は、DERIVEで直ちに求められるからな。よしとするかの」

最終更新日 2013/2/7