本当にフーリエ級数で波形を再現できるのだろうか
ここまでフーリエ級数展開について説明をしてきましたが、本当にsinとcosの重ね合わせで波形を再現できるのだろうかと思っている方もいるかと思います。
そこで、代表的な3つの周期波形として「矩形波(方形波)」「ノコギリ波(鋸歯状波)」「三角波」をとりあげ、実際に波形を再現できることを確認してみましょう。
矩形波(方形波)の再現実験
波形の周期は1であり、最初の1周期を表す式は以下の通りです。
矩形波(方形波)のフーリエ係数を求める
A0を求める
A0を求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。
従って、
であることがわかります。
Akを求める
Akを求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。なお、Wolfram Alphaで計算する時、積分範囲の0.5は分数表記(1/2)しないときれいな結果が出ませんでした。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはsin関数が2つ含まれています。kは整数(0,1,2…)なので、角度πkは0,π,2π,3π…とπ(180度)刻みで、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。しかし、sin(πk)=sin(0),sin(π),sin(2π)…は全て0になるので、結局
であることがわかります。
Bkを求める
Bkを求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。なお、Wolfram Alphaで計算する時、積分範囲の0.5は分数表記(1/2)しないときれいな結果が出ませんでした。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはcos関数が2つ含まれています。kは整数(0,1,2…)なので、角度πkは0,π,2π,3π…とπ(180度)刻みで、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。cos(2πk )=cos(0),cos(2π),cos(4π) …は全て1ですが、cos(πk)はkが奇数の時-1、kが偶数の時に1となります。つまり
というように、kが奇数か偶数かで異なる値が得られます。
矩形波(方形波)のフーリエ係数
以上の計算を総合すると、矩形波(方形波)のフーリエ係数は以下のようになります。
矩形波(方形波)をフーリエ級数で再現する
求めたフーリエ係数で、矩形波(方形波)が再現できるのか、確認してみましょう。
フーリエ級数の式
に、フーリエ係数及び周期T=1を代入します。無限の足し算を実際に行うことはできないので、総和の上限はひとまず10とおきます。
今回の場合A0とAkがゼロであるので
を計算し、グラフにしてみましょう。
Wolfram Alphaの場合は、上式をそのまま記入すると、グラフを描いてくれます。
総和の上限が小さいのでかなり波打ってはいますが、矩形波(方形波)に近い形が得られていることがわかります。総和の上限をさらに大きくすればもっと近い形になるのですが、無料版のWolfram Alphaでは計算時間が長くなると強制的に処理を止められてしまうため、実験できません。
Maximaの場合は、まず関数B(k)とx(t)を定義した後、x(t)のグラフを描きます。
次のようなグラフが得られます。
Maximaであれば、総和の上限をさらに大きくすることが可能です。例えば総和の上限を500にするには、次のように入力します。
ぐっと矩形波(方形波)に近づきました。
ちょっと余談:ギブズの現象
矩形波を再現したフーリエ級数展開で、総和の数を500まで増やすと、出力はぐっと矩形波に近づきました。しかしよく見ると、波が跳躍する「カド」の部分にするどい「ヒゲ」が見えていることに気づきます。この「ヒゲ」を拡大してみると、「カド」の部分だけ波が振動的に増大していることがわかります。
この現象には「ギブズの現象」という名前がついています。矩形波の「カド」のように急激に変化する部分は、sin,cosのように滑らかな関数で再現することがとても難しい(数学的に表現するならば、「フーリエ級数の収束が非常に緩慢である」)ため、なかなか再現しきれないのです。とはいえ理論的には、無限に波を重ね合わせていくと究極的には再現できることになります。
ノコギリ波(鋸歯状波)の再現実験
波形の周期は1であり、最初の1周期を表す式は以下の通りです。
ノコギリ波(鋸歯状波)のフーリエ係数を求める
A0を求める
A0を求める公式にx(t)と周期T=1を代入して計算します。
Wolfram AlphaまたはMaximaで計算します。
従って、
であることがわかります。
Akを求める
Akを求める公式にx(t)と周期T=1を代入して計算します。
Wolfram AlphaまたはMaximaで計算します。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはsin関数とcos関数が含まれています。kは整数(0,1,2…)なので、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。しかし、sin(2πk )=sin(0),sin(2π),sin(4π)…は全て0、 cos(2πk )=cos(0),cos(2π),cos(4π) …は全て1です。従って
すなわち、
であることがわかります。
Bkを求める
Bkを求める公式にx(t)と周期T=1を代入して計算します。
Wolfram AlphaまたはMaximaで計算します。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはsin関数とcos関数が含まれています。kは整数(0,1,2…)なので、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。しかし、sin(2πk )=sin(0),sin(2π),sin(4π)…は全て0、 cos(2πk )=cos(0),cos(2π),cos(4π) …は全て1です。従って
という値が得られます。
ノコギリ波(鋸歯状波)のフーリエ係数
以上の計算を総合すると、矩形波(方形波)のフーリエ係数は以下のようになります。
表2:ノコギリ波(鋸歯状波)のフーリエ係数一覧
ノコギリ波(鋸歯状波)をフーリエ級数で再現する
求めたフーリエ係数で、ノコギリ波(鋸歯状波)が再現できるのか、確認してみましょう。
フーリエ級数の式
に、フーリエ係数及び周期T=1を代入します。無限の足し算を実際に行うことはできないので、総和の上限はひとまず10とおきます。
今回の場合A0とAkがゼロであるので
を計算し、グラフにしてみましょう。
Wolfram Alphaの場合は、上式をそのまま記入すると、グラフを描いてくれます。
総和の上限が小さいのでかなり波打ってはいますが、ノコギリ波(鋸歯状波)に近い形が得られていることがわかります。総和の上限をさらに大きくすればもっと近い形になるのですが、無料版のWolfram Alphaでは計算時間が長くなると強制的に処理を止められてしまうため、実験できません。
Maximaの場合は、まず関数B(k)とx(t)を定義した後、x(t)のグラフを描きます。
次のようなグラフが得られます。
Maximaであれば、総和の上限をさらに大きくすることが可能です。例えば総和の上限を500にするには、次のように入力します。
ぐっとノコギリ波(鋸歯状波)に近づきました。
ちょっと余談:係数Akが0になる関数
関数には「奇関数」と呼ばれるものがあり、以下の関係式を満たす関数を指します。
別の言い方をすれば、「関数のグラフを描いた時、原点を中心に点対称の波形になる関数」という事もできます。本稿で扱った「ノコギリ波」はこれに当てはまります。奇関数には「フーリエ級数展開すると、係数Akが0になる」という特徴があります。
三角波の再現実験
波形の周期は1であり、最初の1周期を表す式は以下の通りです。
三角波のフーリエ係数を求める
A0を求める
A0を求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。
従って、
であることがわかります。
Akを求める
Akを求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。なお、Wolfram Alphaで計算する時、積分範囲の0.5は分数表記(1/2)しないときれいな結果が出ませんでした。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはsin関数とcos関数が含まれています。kは整数(0,1,2…)なので、角度πkは0,π,2π,3π…とπ(180度)刻みで、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。しかし、sin(πk)=sin(0),sin(π),sin(2π)…は全て0であり、cos(2πk )=cos(0),cos(2π),cos(4π) …は全て1です。cos(πk)はkが奇数の時-1、kが偶数の時に1となります。つまり
というように、kが奇数か偶数かで異なる値が得られます。
Bkを求める
Bkを求める公式にx(t)と周期T=1を代入して計算します。この時、tの範囲を2つにわけて積分を作ることがポイントです。
Wolfram AlphaまたはMaximaで計算します。なお、Wolfram Alphaで計算する時、積分範囲の0.5は分数表記(1/2)しないときれいな結果が出ませんでした。
Wolfram Alphaの出力とMaximaの出力は見た目がちょっと違いますが、どちらも同じ(等価な)計算結果を出しています。ただし、どちらの計算も「kが整数である」という事が考慮されていない事に注意が必要です。得られた計算結果
にはsin関数とcos関数が含まれています。kは整数(0,1,2…)なので、角度πkは0,π,2π,3π…とπ(180度)刻みで、角度2πkは0,2π,4π,6π…と2π(360度)刻みで変化することになります。しかし、sin(πk)=sin(0),sin(π),sin(2π)…及びsin(2πk )=sin(0),sin(2π),sin(4π) …は全て0です。つまり
結局
であることがわかります。
三角波のフーリエ係数
以上の計算を総合すると、三角波のフーリエ係数は以下のようになります。
三角波をフーリエ級数で再現する
求めたフーリエ係数で、三角波が再現できるのか、確認してみましょう。
フーリエ級数の式
に、フーリエ係数及び周期T=1を代入します。無限の足し算を実際に行うことはできないので、総和の上限はひとまず10とおきます。
今回の場合Bkがゼロであるので
を計算し、グラフにしてみましょう。
Wolfram Alphaの場合は、上式をそのまま記入すると、グラフを描いてくれます。
描いてはくれているのですが、tの範囲がとても広いため、波形がよく見えません(有料アカウントを持っていればグラフの拡大表示ができます)。しかしコマンドを以下のようにちょっと一工夫すると、拡大できます。
総和の上限が小さいので角が少し丸まっていますが、三角波に近い形が得られていることがわかります。総和の上限をさらに大きくすればもっと近い形になるのですが、無料版のWolfram Alphaでは計算時間が長くなると強制的に処理を止められてしまうため、実験できません。
Maximaの場合は、まず関数A(k)とx(t)を定義した後、x(t)のグラフを描きます。
次のようなグラフが得られます。
Maximaであれば、総和の上限をさらに大きくすることが可能です。例えば総和の上限を500にするには、次のように入力します。
ぐっと三角波に近づきました。
ここまでで、フーリエ級数編は終わりです。次回からはフーリエ級数を「フーリエ変換」に発展させていきます。
ちょっと余談:係数Bkが0になる関数
関数には「偶関数」と呼ばれるものがあり、以下の関係式を満たす関数を指します。
別の言い方をすれば、「関数のグラフを描いた時、y軸を中心に線対称の波形になる関数」という事もできます。本稿で扱った「三角波」はこれに当てはまります。偶関数には「フーリエ級数展開すると、係数Bkが0になる」という特徴があります。
こちらも是非
“もっと見る” ブログ
センサーのすべてがわかる!組み込み技術者のための基礎知識
私たちの生活を豊かにするために欠かせないセンサー。そんなセンサーの仕組みや種類について、分かりやすく解説していきます。
ブラシレスモーター制御用MCUをささっと動かしてみよう!【RL78編】
私の主観としては、”モーター制御用途でも十分使用可能な超汎用MCU”です。現状最も人に勧められるMCUの1つです。2つめのリンク stmcu.jpは、ログインする事でリファレンスマニュアルやペリフェラルの使い方に関する日本語資料が閲覧できますので、ユーザー登録をおススメします。
【フーリエ級数編3:フーリエ級数展開】イメージでしっかりつかむ信号処理〜基礎から学ぶFFT〜
いよいよ、フーリエさんの発見したフーリエ級数展開を学んでいきます。『全ての周期信号は三角関数(サイン波・コサイン波)の足し合わせで表現できる』と言葉ではすでに説明しましたが、これを数式を使って定義すると、図のようになります。