コメント

コメント

期末テストで答えるとき説明の日本語は資料と同じぐらい書く必要はあるのでしょうか?

必要ありません. ちゃんと論理が通っており, 定義の漏れ等がなければ問題ありません. 授業資料はあくまで細かく記載しています.

 

基底関数 (フーリエ級数の準備)

導入

多自由度の連成振動や連続体の振動等でやったように, 様々な振動現象は基準振動 (モード) の重ね合わせとして表現できた. すなわち, ギターの出す音の波形や, 人間が出す声の波形などの様々な波も何かしらのモードの重ね合わせで表現できるはずである.

そこで, そのような複雑な波形をどのように表現すればよいかを, 系統的, 一般的に取り扱う手法として生み出されたものがフーリエ級数である.

フーリエ級数の場合は三角関数もしくは複素指数関数をモードの元 (基底関数) として重ね合わせることで, 複雑な波形を再現する.

 

関数の重ね合わせと展開の例

不適な例

具体例として u(x)=ax+b という関数の展開を考える. 仮に, この関数を

f(x)=xg(x)=x+1h(x)=x1

という3つの関数の重ね合わせで表現する場合, 例えば

u(x)=ax+b=ax+b12((x+1)(x1))=af(x)+b12(g(x)h(x))=af(x)+b2g(x)b2h(x)

などとなる.

しかし, この手法では

  • f(x),g(x),h(x)の重ね合わせによる展開の方法が 一通りではない

  • その他の関数 (v(x)=cx2+dx+e など) は, この3つの関数では展開できない

という問題がある.

 

しかし, f(x),g(x),h(x)​ のような「基となる関数」として, 特別なものを用意すると,

  • (ほぼ) 任意の関数を展開でき

  • その展開方法は1通り

とすることができる. この特別な関数のセットを基底関数系と呼ぶ.

 

基底ベクトルでの例

基底関数系の考え方は, 3次元デカルト座標系におけるx,y,z​​​​​軸方向の単位ベクトルに似ている :

r=xex+yey+zez

この場合, ex,ey,ez​​​ が基底ベクトルとなるわけだが, この基底ベクトルは

  • 完全性 : 任意のr を表現するために揃っている

  • 規格性 : ei2=1

  • 直交性 : eiej=0    (ij)​​​

という3つの性質を持っている. この3つの性質を持った座標系は完全規格直交座標系などと呼ばれる.

 

完全規格直交条件

変数x[a,b]​において, x​の任意の関数u(x)​ (有限個の不連続点があっても良い) は, 適当な完全規格直交関数系 {ϕn(x)}​を基底関数とした重ね合わせ :

u(x)=C1ϕ1(x)+C2ϕ2(x)+=n=1Cnϕn(x)

で記述できる.

このとき, 完全性, 規格性, 直交性の意味は下記の通り:

  • 完全性

    • 任意の関数u(x)を表現するために必要な基底関数が揃った「完全」なものであること

  • 規格性

    • 大きさが1などの一定の値に規格化されていること

      • ei2=1

      • abϕi2(x)dx=1

  • 直交性

    • 2つの異なる基底関数同士の「積」が0となること

      • eiej=0    (ij)

      • abϕi(x)ϕj(x)dx=0(ij)

 

フーリエ級数 (三角関数)

このような完全規格直交条件を満たす基底関数として, 三角関数 (or 複素指数関数)を用いたもの :

(1)u(x)=   a1sinx+a2sin2x+    +b1cosx+b2cos2x+    +b02=m=1(amsinmx+bmcosmx)+b02      (m)

フーリエ級数と呼ぶ. am,bm​ をフーリエ係数と呼ぶ.

 

三角関数の規格性, 直交性

任意の関数を表現するための基底関数として三角関数 (or 複素指数関数) が完全であるかはここでは割愛し, 規格性, 直交性を確認してみよう.

sin同士の組み合わせ

ππsinmxsinnxdx=ππ12{cos(m+n)xcos(mn)x}dx      (  cos(m±n)x=cosmxcosnxsinmxsinnx)

なので,

mn
ππsinmxsinnxdx=ππ12{cos(m+n)xcos(mn)x}dx=12[1m+nsin(m+n)x1mnsin(mn)x]ππ=0

 

m=n
ππsinnxsinnxdx=ππ12{cos(n+n)xcos(nn)x}dx=ππ12{cos2nx1}dx=12[12nsin2nxx]ππ=π

 

まとめ
ππsinmxsinnxdx={0      (mn)π      (m=n)

 

cos同士の組み合わせ

ππcosmxcosnxdx=ππ12{cos(m+n)x+cos(mn)x}dx      (  cos(m±n)x=cosmxcosnxsinmxsinnx)

なので,

mn
ππcosmxcosnxdx=ππ12{cos(m+n)x+cos(mn)x}dx=12[1m+nsin(m+n)x+1mnsin(mn)x]ππ=0

 

m=n
ππcosnxcosnxdx=ππ12{cos(n+n)x+cos(nn)x}dx=ππ12{cos2nx+1}dx=12[12nsin2nx+x]ππ=π

 

まとめ
ππcosmxcosnxdx={0      (mn)π      (m=n)

 

sinとcosとの組み合わせ

ππcosmxsinnxdx=ππ12{sin(m+n)xsin(mn)x}dx      (  sin(m±n)x=sinmxcosnx±cosmxsinnx)

なので,

mn
ππcosmxsinnxdx=ππ12{sin(m+n)xsin(mn)x}dx=12[1m+ncos(m+n)x1mncos(mn)x]ππ=12[1m+n(cos(m+n)πcos(m+n)(π))1mn(cos(mn)πcos(mn)(π))]=0      ( cos)

 

m=n
ππcosnxsinnxdx=ππ12{sin(n+n)xsin(nn)x}dx=ππ12{sin2nx0}dx=12[12ncos2nx]ππ=0

 

まとめ
ππcosmxsinnxdx=0

 

三角関数同士のまとめ

(2)ππsinmxsinnxdx={0      (mn)π      (m=n)ππcosmxcosnxdx={0      (mn)π      (m=n)ππcosmxsinnxdx=0

異なるsin,cos​​​​ 同士だと0​​​​, 同じsin,cos​​​ 同士だとπ​​​​となるので, 三角関数が規格性, 直交性を持つことが確認できた.

 

フーリエ係数

任意の関数をフーリエ級数 (1)​ :

u(x)=   a1sinx+a2sin2x+    +b1cosx+b2cos2x+    +b02=m=1(amsinmx+bmcosmx)+b02      (m)

で展開できるといったが, 重ね合わせの比率を決めているフーリエ級数 am,bm がわからなければ, 展開できない. そこで, 実際にフーリエ級数 am,bm を求めていく.

am

amsinmx の係数なので, 三角関数の規格直交性 (2)から

ππu(x)sinnxdx

を考えることで, 特定の係数のみを抜き出すようにしていく.

ππu(x)sinnxdx=ππ(m=1(amsinmx+bmcosmx)+b02)sinnxdx=ππ(m=1(amsinmxsinnx+bmcosmxsinnx)+b02sinnx)dx=m=1amππsinmxsinnxdx+m=1bmππcosmxsinnxdx+b02ππsinnxdx=(anπ+m=1  (mn)am0)+(m=1bm0)+b02(n)(cosnπcos(nπ))      (  (2))=anπ

となるので,

(3)an=1πππu(x)sinnxdx      (n=1,2,)

としてan​​が求まった.

 

bm

bmcosmx の係数なので, 三角関数の規格直交性 (2)から

ππu(x)cosnxdx

を考えることで, 特定の係数のみを抜き出すようにしていく.

n=1,2,
ππu(x)cosnxdx=ππ(m=1(amsinmx+bmcosmx)+b02)cosnxdx=ππ(m=1(amsinmxcosnx+bmcosmxcosnx)+b02cosnx)dx=m=1amππsinmxcosnxdx+m=1bmππcosmxcosnxdx+b02ππcosnxdx=(m=1am0)+(bnπ+m=1  (mn)bm0)+b02n(sinnπsin(nπ))      (  (2))=bnπ

となるので,

(4)bn=1πππu(x)cosnxdx      (n=1,2,)

としてbn​​が求まった.

 

n=0​​
ππu(x)cos0xdx=ππu(x)dx=ππ(m=1(amsinmx+bmcosmx)+b02)dx=m=1amππsinmxdx+m=1bmππcosmxdx+b02ππdx=(m=1am0)+(m=1bm0)+b02(π(π))=b0π

としてb0​が求まった.

 

まとめ
(5)bn=1πππu(x)cosnxdx      (n=0,1,2,)

 

フーリエ級数のまとめ (三角関数)

以上より, フーリエ級数が求まった :

(6):u(x)=m=1(amsinmx+bmcosmx)+b02      (m):{am=1πππu(x)sinmxdx      (m=1,2,)bm=1πππu(x)cosmxdx      (m=0,1,2,)

 

変数の区間の変更

ここまで, 三角関数が 2π​​​​の周期関数であることを意識してフーリエ級数の変数の区間を [π,π]​​​​ (1周期 2π​​​​) で書いてきたが, 1周期 T​​​​ の区間 [T2,T2]​​​​​​ に置き換えることもできる.

period-change

これは, ±π±T2という変更なので, x2πTt, dx2πTdt という変数変換に相当する.

これを, 先程求めたフーリエ級数の式 (6) に適用すると

:u(2πTt)=m=1(amsinm2πTt+bmcosm2πTt)+b02      (m)  u(t)=m=1(amsinm2πTt+bmcosm2πTt)+b02      (m):{am=1πT2T2u(2πTt)sinm2πTt2πTdt=2TT2T2u(t)sinm2πTt dt      (m=1,2,)bm=1πT2T2u(2πTt)cosm2πTt2πTdt=2TT2T2u(t)cosm2πTt dt      (m=0,1,2,)

となる. ここで, t​​ を時刻と考えれば, 2πT​​ は角振動数に対応するので 2πT=ω0​​ と置き換えれば, 上式を

(7):u(t)=m=1(amsinmω0t+bmcosmω0t)+b02      (m):{am=2TT2T2u(t)sinmω0t dt      (m=1,2,)bm=2TT2T2u(t)cosmω0t dt      (m=0,1,2,)

と書くこともできる.

 

フーリエ級数 (複素指数関数)

導入

上述のフーリエ級数の表式でも問題ないのだが, 計算がより簡便となる複素指数関数型のフーリエ級数を紹介する. これは, 三角関数が

cosx=eix+eix2,  sinx=eixeix2i

のように, 複素指数関数で表現できることに由来する.

上式 (7) を意識すると x2πTt=ω0t なので

cosmω0t=eimω0t+eimω0t2,  sinmω0t=eimω0teimω0t2i

となることから, 複素指数関数 eimω0t​​​​ が基底関数として考えられそうである.

実際に, 求めたフーリエ級数 (7)​​​​​​​​ を複素指数関数で書き直してみる. 三角関数型のフーリエ係数 am,bm

am=2TT2T2u(t)sinmω0t dt=2TT2T2u(t)eimω0teimω0t2i dt(8)=1TiT2T2u(t)(eimω0teimω0t) dt      (m=1,2,)  am=1TiT2T2u(t)(ei(m)ω0tei(m)ω0t) dt=1TiT2T2u(t)(eimω0teimω0t) dt=am
bm=2TT2T2u(t)cosmω0t dt=2TT2T2u(t)eimω0t+eimω0t2 dt(9)=1TT2T2u(t)(eimω0t+eimω0t) dt      (m=1,2,)  bm=1TT2T2u(t)(ei(m)ω0t+ei(m)ω0t) dt=1TT2T2u(t)(eimω0t+eimω0t) dt=bm

であるから, フーリエ級数展開は

u(t)=m=1(amsinmω0t+bmcosmω0t)+b02=m=1(ameimω0teimω0t2i+bmeimω0t+eimω0t2)+b02=m=1(iameimω0teimω0t2+bmeimω0t+eimω0t2)+b02=m=1(iam+bm2eimω0t+iam+bm2eimω0t)+b02=m=1iam+bm2eimω0t+m=1iam+bm2eimω0t+b02=m=1iam+bm2eimω0t+m=1iam+bm2ei(m)ω0t+b02      (  2mm)=m=1iam+bm2eimω0t+m=1iam+bm2eimω0t+b02ei(0)ω0t      (  am=am, bm=bm)=m=iam+bm2eimω0t=m=Umeimω0t      (  Umiam+bm2)

と書くことができる.

これが, 複素指数関数型のフーリエ級数:

u(t)=m=Umeimω0t      (  Umiam+bm2)

である.

 

複素指数関数の完全規格直交性

三角関数の場合と同様に, 完全性は割愛し, 規格性, 直交性を確認しておく.

複素指数関数の場合は eimω0t​​​ とeinω0t=(einω0t)​​​ をペアにした :

T2T2eimω0t(einω0t) dt

を考えていく.

mn​​

T2T2eimω0t(einω0t) dt=T2T2eimω0teinω0t dt=T2T2ei(mn)ω0t dt=1i(mn)ω0[ei(mn)ω0t]T2T2=1i(mn)ω0[ei(mn)ω0T2ei(mn)ω0(T2)]=1i(mn)ω0[ei(mn)2πTT2ei(mn)2πT(T2)]      (  ω0=2πT)=1i(mn)ω0[ei(mn)πei(mn)π]=2(mn)ω0sin(mn)π      (  sinx=eixeix2i)=0

 

m=n

T2T2einω0t(einω0t) dt=T2T2einω0teinω0t dt=T2T2e0 dt=T2T2dt=T

 

まとめ

以上より,

(10)T2T2eimω0t(einω0t) dt={0      (mn)T      (m=n)

となり, 複素指数関数の規格直交性が確かめられた.

 

フーリエ係数

次に, 三角関数の場合と同様に, 実際にフーリエ係数 Um=iam+bm2​​​ を求めていく.

Um=iam+bm2=12(i(1TiT2T2u(t)(eimω0teimω0t) dt)+(1TT2T2u(t)(eimω0t+eimω0t) dt))=12(1TT2T2u(t)(eimω0teimω0t) dt+1TT2T2u(t)(eimω0t+eimω0t) dt)=12TT2T2u(t)(2eimω0t) dt=1TT2T2u(t)eimω0t dt

となる. すなわち,

(11)Um=1TT2T2u(t)eimω0t dt

となる.

 

フーリエ級数のまとめ (複素指数関数)

以上より, 複素指数関数型のフーリエ級数は下記のように書ける.

(12):u(t)=m=Umeimω0t:Um=1TT2T2u(t)eimω0t dt

三角関数の場合よりもだいぶスッキリとした式になった.

 

フーリエ変換

最後に, フーリエ級数展開の式を変形してフーリエ変換と呼ばれる関係式を導出する.

フーリエ級数展開部分の見直し

複素指数関数型のフーリエ級数 (12)​ : u(t)=m=Umeimω0t​ は ,2ω0,1ω0,0,1ω0,2ω0,​ という離散的なωmω0​ 空間におけるUmeimω0t​ という関数値の無限和として捉えることができる (下左図).

fs-ft

そこで, Umeimω0t=Umeimω0tω0ω0 と書き直して

u(t)=m=Umeimω0t=m=Umeimω0tω0ω0

と書いた場合は, (テクニカルではあるが) 上右図のように, 離散的なωmω0​​​​​ 空間におけるUmeimω0tω0​​​​​ という関数値とω0​のなす細長い短冊の無限和であると見直すことができる.

ここで, ω0​ を Δω​ と書き直せば,

u(t)=m=Umeimω0tω0ω0=m=UmeimΔωtΔωΔω=12πm=2πUmeimΔωtΔωΔω      (  2π)

と書くことができる. さらに, mΔωω(m)​​ という関数の表式に書き直し, ​関数値 2πUmΔω​​​ を関数 U(ω(m))​​​ と書き直せば,

u(t)=12πm=U(ω(m))eiω(m)tΔω      (  ω(m)mΔω0,  U(ω(m))2πUmΔω)

となる.

 

フーリエ係数部分の見直し

フーリエ係数の部分についても同様に, mΔωω(m) という関数の表式に書き直し, 関数値 2πUmΔω を関数 U(ω(m)) と書き直せば,

Um=1TT2T2u(t)eiω(m)t dt  2πΔωUm=2πΔω1TT2T2u(t)eiω(m)t dt  U(ω(m))=2π2πT1TT2T2u(t)eiω(m)t dt      (  Δω=ω0=2πT)=T2T2u(t)eiω(m)t dt

となる.

 

フーリエ変換

以上をまとめると,

(13):u(t)=12πm=U(ω(m))eiω(m)tΔω:U(ω(m))=T2T2u(t)eiω(m)t dt

となる. 最後に, 周期的でない関数にも対応できるように, T という極限を考えると,

Δω=ω0=2πT  ()    dω  ()ω(m)=mΔω  ()    ω  ()

となるので,

u(t)=12πm=U(ω(m))eiω(m)tΔω12πU(ω)eiωtdωU(ω)=T2T2u(t)eiω(m)t dtu(t)eiωt dt

となる.

これはある関数 u(t)​ と U(ω)​ とで互いに変換するもの, すなわち, 関数に対するtω​ という変数空間の見直しに対応する. したがって, この表式を改めて, フーリエ逆変換, フーリエ変換と呼ぶ :

(14):u(t)=12πU(ω)eiωtdω(15):U(ω)=u(t)eiωt dt

この場合は 時刻 t​​ 角振動数 ω​​ での変数空間の見直しを表す. したがって, 時系列に沿って得られた波形 u(t)​​ が, 角振動数 (or 振動数) 空間の波形 U(ω) に見直されることから, 元の波形 u(t)​ にどのような振動数の波がどの程度含まれているかの分布 (スペクトル) を知ることができる.

 

同様にすれば, 位置 x​​​​ 波数 k​​​​​ での変数空間の見直しも表すこともできる.

(16):u(x)=12πU(k)eikxdk(17):U(k)=u(x)eikx dx

 

フーリエ変換の例

実際に時系列に沿った波形をフーリエ変換して振動数スペクトルを表示してみる.

複数の正弦波の合成波

周波数 100, 200, 500, 700, 800 [Hz] の正弦波の合成波 (重ね合わせ) を考える. 各正弦波の振幅, 初期位相を共通とすると, その合成波は下図のようになる.

sine-waves_original-wave

これをフーリエ変換し, 周波数空間に見直してみたものが下図である. 計算時間の都合上, 周波数空間を 0 [Hz] から1000 [Hz]まで20 [Hz]ごとに離散化して計算している.

sine-waves_DFT

すると, 上図のように周波数が 100, 200, 500, 700, 800 [Hz] の位置に同じ高さのピークができている. これは, まさしく, 元の合成波に, それらの周波数成分が等しい割合で含まれていることを示す.

 

実際に私の声の波形でも実施してみた. 「あー」という声を

  • 低い音

  • 高めの音

  • 更に高めの音

で発声し, 録音したものをフーリエ変換した. 結果は下図の通り.

種類時系列の波形 u(t)フーリエ変換した波形 U(ω)
低めvoice-low_original-wavevoice-low_DFT_N40000
高めvoice-high1_original-wavevoice-high1_DFT_N40000
更に高めvoice-high2_original-wavevoice-high2_DFT_N40000

声の音程が高くなるほどに, 周波数空間でのピークが高周波数側にシフトしていくことがわかる.