うさぎでもわかる信号処理・制御工学 第09羽 フーリエ級数展開の仕組みと計算方法

スポンサードリンク

こんにちは、ももやまです。

工学部の数学で、「フーリエ級数展開」という言葉を聞いたことがある人は多いかと思います。しかし、「あれなにやってんだ!?」と思った人もいるかもしれません。

今回はそんな「フーリエ級数展開」について仕組み・計算方法についてわかりやすく説明していきたいと思います。

スポンサードリンク

1.フーリエ級数展開とは

まずは下のグラフをみてみましょう。

f:id:momoyama1192:20191005125643g:plain

この関数のグラフはある一定の間隔で同じ形の曲線を繰り返していますね。このような関数のことを周期関数と呼びます。数式で書くと、すべての自然数 k に対し、f(t)=f(t+kT)となるような関数のことを周期 T の周期関数と呼びます。

フーリエ級数展開は、周期関数を皆さんおなじみの偶関数 cos と奇関数 sin の2つに分解して表そう! というやつです。

スポンサードリンク

2.フーリエ級数展開で用いる三角関数の積分

フーリエ級数展開の公式を説明する前にまずは下の公式を導出するために必要な三角関数の積分の復習をしましょう。

三角関数の加法定理・倍角の公式・積和の公式などを用いた積分を行います。加法定理・倍角・積和公式を忘れてしまった人は下の復習用記事を載せたのでそちらをご覧ください。

www.momoyama-usagi.com

※今回は π から π までの積分範囲としていますが、0 から 2π としても同じ結果が得られます。

まずは cosnx, sinnx 単体の積分を見てみましょう。

フーリエ級数展開で用いる三角関数の公式1

ππcosnx dx=0ππsinnx dx=0が成り立つ。

[導出]

ππcosnx dx=2ππcosnx dx=20πcosnx dx=2[1nsinnx]0π=0と計算できる。また、sinnx は奇関数なのでππsinnx dx=0となる。

つぎに、cossin が2つ組み合わさったバージョンを見ていきましょう。

フーリエ級数展開で用いる三角関数の公式2

ππsinmxcosnx dx=0となる。また、mn のとき、ππsinmxsinnx dx=0ππcosmxcosnx dx=0となる。

[導出]

sinmx は偶関数、cosnx は奇関数なのでその積は奇関数となる。よって、ππsinmxcosnx dx=0となる。

また、sinmxsinnx=12cos(mn)x12cos(m+n)xなので、ππsinmxsinnx dx= 12ππcos(mn)x dx12ππcos(m+n)x dx= 0と計算できる*1

同じようにして、cosmxcosnx=12cos(mn)x+12cos(m+n)xなので、ππcosmxcosnx dx= 12ππcos(mn)x dx+12ππcos(m+n)x dx= 0と計算できる。

最後に公式2の m=n の場合も確かめておきましょう。
この積分は0にならないので要注意です。

フーリエ級数展開で用いる三角関数の公式3

ππsinnxsinnx dx=ππsin2nx dx=πππcosnxcosnx dx=ππcos2nx dx=πとなる。

[導出]

ππsin2nx dx=12ππ(1cos2mx) dx=12ππ1 dx12ππcos2m dx=12ππ1 dx0=12[x]ππ=122π=πとなる。(途中で公式1を使用しています。)

同様にして、ππcos2nx dx=12ππ(1+cos2mx) dx=12ππ1 dx+12ππcos2m dx=12ππ1 dx+0=12[x]ππ=122π=πとなる。

以上で確認は終了です。

では実際にフーリエ級数展開の公式を見てみましょう!

スポンサードリンク

3.周期が2πの場合のフーリエ級数展開の公式

では、早速フーリエ級数展開がどんな式なのかをみていきましょう。

こちらで、周期 T2π の場合について説明し、次の第4章で 2π 以外に拡張したバージョンの2つにわけて紹介しています。

(1) 計算公式

まずは周期関数 f(t) の周期 T2π に固定されたバージョンを説明したいと思います。

最初に公式をみてみましょう。

周期2πのフーリエ級数展開の公式周期 2π の区分的に連続な周期関数*2 f(t) のとき、f(t)a02+k=1(akcoskt+bksinkt)と表せる*3。ただし、フーリエ係数 ak, bkak=1πππf(t)coskt dt  (k=0,1,2,3,)bk=1πππf(t)sinkt dt  (k=1,2,3,)となる。

※積分範囲は π から π ではなく、例えば 0 から 2π としてもよい。とにかく 2π 分が長さに入っていればOK*4

色をつけて公式を少しわかりやすくしてみました!

f:id:momoyama1192:20191006175911g:plain

つまり、周期関数 f(t)偶関数 cost, cos2t, cos3t, …… と奇関数 sint, sin2t, sin3t, …… を用いて表せるよってことなのです!

少し難しい用語を使うと、周期関数 f(t) を偶関数 cost, cos2t, cos3t, …… と奇関数 sint, sin2t, sin3t, …… の1次結合で表せるってことです!

しかし、フーリエ係数 ak, bk の求め方が複雑だったりなぜか初期値が a02 となってたり b0 がなかったりしますね。

なぜこんな値になっているのかを下のほうで説明していきましょう。

(i) 初期値の導出  a0

まずは初期値のフーリエ係数 a0 の公式導出方法です。f(t)=a02+a1cost+a2cos2t+b1sint+b2sin2t+の両辺を π から π で定積分しましょう。

すると、

f:id:momoyama1192:20191006124446g:plain

と計算できますね。

よって、ππf(t) dt=a0πより、a0=1πππf(t) dtと導出できます。

(ii) cos の項の導出  ak

つぎに偶関数 coskx のフーリエ係数 ak を導出してみましょう。f(t)=a02+a1cost+a2cos2t+b1sint+b2sin2t+の両辺に coskt を掛けましょう。

すると、f(t)coskt=(a02+a1cost+a2cos2t+b1sint+b2sin2t+)cosktとなりますね。

さらに両辺を π から π で定積分しましょう。

すると、

f:id:momoyama1192:20191006124450g:plain

と計算できます。よって、ππf(t)coskt dt=akπより、ak=1πππf(t)coskt dtと導出できます。

ここで初項 a0 を考えてみましょう。初項の場合は k=0 なので、a0=1πππf(t)cos0 dt=1πππf(t) dtとなり、ak と同じ形で表現することができますね!

初項をあえて a0/2  にしているのは ak と同じ形にするためだったのです!*5

(覚えるべき公式も減りますし!)

(iii) sin の項の導出  bk

最後に奇関数 sinkx のフーリエ係数 bk を導出してみましょう。f(t)=a02+a1cost+a2cos2t+b1sint+b2sin2t+の両辺に sinkt を掛けましょう。

すると、f(t)sinkt=(a02+a1cost+a2cos2t+b1sint+b2sin2t+)sinktとなりますね。

さらに両辺を π から π で定積分しましょう。

すると、

f:id:momoyama1192:20191006124454g:plain

となりますね!

と計算できます。よって、ππf(t)sinkt dt=bkπより、bk=1πππf(t)sinkt dtと導出できます。

ところで cos の初項 a0 はあったのになぜ sinの初項 b0 がないのかと思った人もいるかもしれません。

先ほどの公式に b=0 を入れてみると、b0=1πππf(t)sin0 dt=0となり、sin0 のおかげで0になってしまいます。

なので、奇関数の初項 b0 は計算する必要がないのです!

(2) f(t)が偶関数・奇関数の場合

周期関数 f(t) が偶関数・奇関数の場合はより少ない計算量でフーリエ級数展開を求めることができます。

(i) f(t) が偶関数の場合

f(t) が偶関数の場合、f(t)sinkt の積 f(t)sinkt奇関数となりますね。なので、bk=1πππf(t)sinkt dt=0となります。

(ii) f(t) が奇関数の場合

f(t) が奇関数の場合、f(t)coskt の積 f(t)coskt奇関数となりますね。なので、ak=1πππf(t)coskt dt=0となります。(もちろん a0=0 です。)

周期 2π の周期関数 f(t) が偶関数のとき、bk=0 となる。なので、フーリエ級数展開はf(t)a02+k=1akcosktとなる。
(フーリエ余弦級数、フーリエ・コサイン級数と呼ばれます。)

また、周期関数 f(t) が奇関数のとき、a0=0, ak=0 となる。なのでフーリエ級数展開は、f(t)k=1bksinktとなる。
(フーリエ正弦級数、フーリエ・サイン級数と呼ばれます。)

周期2πの偶関数・奇関数のときのフーリエ級数展開

4.周期Tの場合のフーリエ級数展開の公式

先ほどは周期が 2π の場合に固定したフーリエ級数展開の公式についてまとめました。

ですが、実際の周期関数(波形とか)が 2π に固定されてるなんてそんな都合のいいことはありませんね。例えば安静時の心電図の波形の周期は約1秒弱*6ですし、コンセントから供給される電源は50Hzか60Hzなので17〜20ミリ秒周期ですね。

なので今度はあらゆる周期に対応したフーリエ級数展開の公式を考えてみましょう。

周期 2π だったものが周期 T に変化すると、単位時間あたりに進む波の速さは、2πT倍となります。

ここで、物理をやったことがある人なら「見たことあるような式」だなと思ったかもしれません。実はこれ、角速度*7 ω を求める式と全く同じなのです! なので、ω=2πTとしてあげましょう。

すると、周期 2π だった場合のフーリエ級数の式f(t)a02+k=1(akcoskt+bksinkt)t が  ωtω 倍)となり、周期 T の場合のフーリエ級数展開の式はf(t)a02+k=1(akcoskωt+bksinkωt)と書き換えられます。

tωt となったので ak, bk の値も当然変わりますね。それぞれ計算していきましょう。

まず周期 2π の場合の ak, bk の積分範囲を ππ から 02π と書き換えます*8

t=ωs とおくと、ak, bk の積分範囲、dtds の関係式はdt=ω ds=2πT ds,   0Tとなりますね。

よって、積分式は、ak=1π02πf(t)coskt dt=2T0Tcoskωs dsbk=1π02πf(t)sinkt dt=2T0Tsinkωs dsと変化します。

あとは変数 st に戻すことでak=2T0Tf(t)coskωt dt,   bk=2T0Tf(t)sinkωt dtとなります。

周期Tのフーリエ級数展開の公式周期 T の区分的に連続な周期関数 f(t) のとき、f(t)a02+k=1(akcoskωt+bksinkωt)と表せる。ただし、ak=2T0Tf(t)coskωt dt  (k=0,1,2,3,)bk=2T0Tf(t)sinkωt dt  (k=1,2,3,)となる。

※積分範囲は 0 から T ではなく、例えば T/2 から T/2 としてもよい。とにかく1周期分積分していればどこでもよい。

こちらも色などをつけてみやすく表現したバージョンも用意しました。

f:id:momoyama1192:20191006124442g:plain

周期が 2π から T になっても周期関数が f(t) が偶関数・奇関数の場合は計算を楽にすることができます。

周期 T の周期関数 f(t) が偶関数のとき、bk=0 となる。なので、フーリエ級数展開はf(t)a02+k=1akcoskωtとなる。
(フーリエ余弦級数、フーリエ・コサイン級数と呼ばれます。)

また、周期関数 f(t) が奇関数のとき、a0=0, ak=0 となる。なのでフーリエ級数展開は、f(t)k=1bksinkωtとなる。
(フーリエ正弦級数、フーリエ・サイン級数と呼ばれます。)

周期Tの偶関数・奇関数のときのフーリエ級数展開

ではここで1問計算練習をしてみましょう!

例題

下の図ような周期関数f(t)=t(πt)=t2+tπを考える。

f:id:momoyama1192:20191005100307g:plain

f(t) のフーリエ級数展開を求めなさい。

解説

f(t) は連続関数なので、f(t)a02+k=1(akcoskωt+bksinkωt)とフーリエ級数展開できる。

また、周期が π なので角速度 ω は、ω=2ππ=2となる。

さらにグラフより f(t)=f(t) が成り立つので f(t) は偶関数である。よって bk=0 となり、f(t)a02+k=1akcos2ktとなる。

(i) k=0、つまり a0 のとき

a0=2T0π(t2+tπ)cos0 dt=2π0πt2+tπ dt=2π[13t3+12t2π]0π=2π(13π3+12)=2π16π3=13π2

(ii) k1、つまり ak のとき

多項式と三角関数の積で表された関数を積分する際には部分積分を行うのですが、下の記事で説明している部分積分の連鎖公式を適用していくと比較的早く部分積分を行うことができます。

www.momoyama-usagi.com

計算式は、ak=2π0π(t2+tπ)cos2kt dt=2π[12k(t2+tπ)sin2kt(14k2(2t+π)cos2kt)+(18k3(2)sin2kt)]0π=2π[14k2(2t+π)cos2kt]0π=2π(14k2(ππ))=1k2となる。

よって、f(t)16π2k=11k2cos2ktとなる。

5.フーリエ級数展開を用いた無限級数の求め方

先ほど求めたフーリエ級数展開から様々な無限級数の和を導くことができます。

先ほど求めた周期が π の周期関数f(t)=t(πt)=t2+tπt=0 を代入すると、f(0)=16π2k=11k2cos0=16π2k=11k2=0が成立しますよね。

よって、k=11k2=112+122+132+=π26を示すことができます。

(この無限級数はバーゼル問題と呼ばれています。)

さらに t=π/2 を代入すると、f(π2)=16π2k=11k2coskπ=16π2k=11k2(1)k=π24が成立しますよね。

よって、k=11k2(1)k=112122+132142+=π24π26=π212となり、無限級数112122+132142+=π212を示すことができます!

ただし、このようにフーリエ級数展開から無限級数を求める際には、代入する t の値において必ず連続である(グラフが途切れていない)ことが条件となります。

6.練習問題

では、3問ほど練習してみましょう!

練習1

下の図のような周期関数f(t)=|t|を考える。

f:id:momoyama1192:20191005100315g:plain

(1) f(t) のフーリエ級数展開を求めなさい。

(2) (1)から112+132+152+の値を求めなさい。

練習2

下の図のような周期関数f(t)=|sint |を考える。f(t) のフーリエ級数展開を求めなさい。

f:id:momoyama1192:20191005100311g:plain

練習3

下の図のような周期関数f(t)=1tπを考える。

f:id:momoyama1192:20191005100320g:plain

(1) f(t) のフーリエ級数展開を求めなさい。

[ヒント] g(t)g(t)=f(t)12とおく。

(2) (1)から1113+1517の値を求めなさい。

7.練習問題の答え

解答1

(1)

f(t)=f(t) が成立するので、f(t) は偶関数である。また、周期 T は2なので、角速度 ω2π2=πとなる。よって、f(t)a02+k=1akcoskπtとフーリエ級数展開できる。

(i) k=0、つまり a0 のとき

a0=2211|t|cos0 dt=201t dt=2[12t2]01=212=1となる。

(ii) k1、つまり ak のとき

ak=2211|t|coskπt dt=201tcoskπt dt=2[1kπsinkπt(1k2π2coskπt)]01=21k2π2(coskπ1)=2k2π2((1)k1)となる。

よって、フーリエ級数展開はf(t)12+k=12k2π2((1)k1)coskπtと求められる。

(2)

f(t)t=0 において連続なので f(t) とフーリエ級数展開の値が t=0 において一致する。よって、t=0 を代入すると、f(0)=12+k=12k2π2((1)k1)cos0=12+2π2k=1((1)k1)=0となる。

ここで、2π2k=1((1)k1)=12が成立する。

目標の形は、12k=1((1)k1)=112+132+152+なので、上で導出した式に π2/4 倍すればよい*9。よって、12k=1((1)k1)=112+132+152+=12π4=π28となる。

解答2

f(t)=f(t) が成立するので、f(t) は偶関数である。また、f(t) の周期 Tπ なので、角速度 ω2ππ=2となる。よって、f(t)a02+k=1akcos2ktとフーリエ級数展開できる。

(i) k=0、つまり a0 のとき

0t1 において sint0 なので、|sint |=sint である。よって、a0=2π0πsint dt=2π[cost]0π=2π(1+1)=4πとなる。

(ii) k1、つまり ak のとき

0t1 において sint0 なので、|sint |=sint である。よって、ak=2π0πsintcos2kt dt=1π0πsin(12k)t dt+1π0πsin(1+2k)t dt=1π[112kcos(12k)t]0π+1π[11+2kcos(1+2k)t]0π=2π(11+2k112k)=2π{12k(1+2k)(12k)1+2k(1+2k)(12k)}=2π{4k(1+2k)(12k)}=2π{4k(2k+1)(2k1)}=8πk(2k+1)(2k1)となる。

よって、フーリエ級数展開はf(t)2π+k=18πk(2k+1)(2k1)cos2ktと求められる。

解答3

g(t)g(t)=f(t)12=12tπとする。

すると、グラフは

f:id:momoyama1192:20191006175908g:plain

となる。グラフより、g(t)=g(t) が成立するので g(t) は奇関数となる。

さらに周期 Tπ なので角速度 ω2ππ=2となる。よって、g(t)k=1bksin2ktとフーリエ級数展開できる。

bk の値は、bk=2π0πf(t)(12tπ)sin2kt dt=2π[12k(12tπ)cos2kt(12k)(14k2(1π))sin2kt]0π=2π[12k(12tπ)cos2kt]0π=2π(12k(12)12k12)=2π12k=1kπとなる。

よって、フーリエ級数展開はf(t)=g(t)+1212+k=11kπsin2ktと求められる。

(2)

f(t)t=π/4 において連続なので f(t) とフーリエ級数展開の値が t=π/4 において一致する。よって、t=pi/4 を代入するとf(π4)=12+k=11kπsinπ2k=12+1πk=11ksinπ2kπ=34となる。よって、1πk=11ksinπ2kπ=3412=14が成立する。

目標の形は、k=11ksinπ2kπ=1113+1517+なので、上で導出した式に π 倍すればよい。よって、k=11ksinπ2kπ=1113+1517+=π4となる。

8.さいごに

今回はフーリエ級数展開の簡単なしくみ、および計算方法を例題などを踏まえながらまとめました。

この記事を読んでフーリエ級数展開の仕組みなどが少しでもわかっていただければ本当にありがたいです。

余裕があれば複素フーリエ級数展開、フーリエ変換についてもまとめてみようかと思います。

また、フーリエ級数展開の計算は結構めんどくさいものが多いのでしっかりと計算練習をしておきましょう。

*1:公式1ππcosmx dx=0を使ってます。

*2:途中で不連続な箇所があるような関数だと思ってください。例えば、練習3の

f:id:momoyama1192:20191005100320g:plain

のような関数でもフーリエ級数展開できるよってことです。

*3:

= ではなく となっているのは、関数 f(t) がある点 t において連続ではない場合、 f(t) とフーリエ級数展開の結果が一致しないことがあるためです。

(逆にいうと、関数 f(t) がある点 t において連続であれば、フーリエ級数展開と f(t) の値が一致するので等号 = となる。)

*4:例えば、ak=1π02πf(t)coskt dt  (k=0,1,2,3,)bk=1π02πf(t)sinkt dt  (k=1,2,3,)としてもOKである。

*5:akk が1スタートではなく0スタートなのもこれが理由。

*6:心拍数の平均が60bpm〜80bpmなので0.75〜1秒に1周期となる。

*7:角速度とは単位時間あたりに進む角度を表します。今回の場合は角度というよりも波の変化の速さと考えるのがいいと思います。例えば角速度が2倍になれば波の変化の速さも2倍になり、周期は1/2となります。

*8:つまり、ak=1π02πf(t)coskt dtbk=1π02πf(t)sinkt dtとする。

*9: 1/2 がついているのは (1)k1 の部分が偶数のとき0、奇数のとき-2となるため。1/2 にすることで k が奇数のときだけうまく 1/k2 を足すことができる。

関連広告・スポンサードリンク

おすすめの記事