Toolyard

フーリエ級数をわかりやすく解説: 正弦波から波をつくる

考え方

周期 T で繰り返す信号はどれも、基本周波数 f = 1 ÷ T の整数倍の周波数をもつ正弦波と余弦波の和で書けます:

f(t) = a0 ÷ 2 + Σ (an cos nωt + bn sin nωt)、ω = 2πf

各項が倍音 (高調波) で、n = 1 が基本波、n = 2 が 2 倍の周波数の第 2 倍音、と続きます。係数は、信号に各正弦波や余弦波を掛けて 1 周期で平均すると求まります: bn = (2 ÷ T) ∫ f(t) sin(nωt) dt。ジョゼフ・フーリエが 1807 年に熱伝導の方程式を解くためにこの考え方を導入し、今では音声や画像の圧縮、無線、分光法、振動するあらゆるものの解析の土台になっています。

3 つの標準的な波

−1 と +1 の間を振れる奇関数の波 (正弦波だけで表せる) では次のようになります:

  • 矩形波: n が奇数のとき bn = 4 ÷ (nπ)、偶数のとき 0。振幅は 1.273、0.424、0.255、0.182、…
  • のこぎり波: すべての n で bn = −2 ÷ (nπ) (上昇するランプ)。すべての倍音を含み、1 ÷ n で減ります。
  • 三角波: n が奇数のとき bn = 8(−1)(n−1)/2 ÷ (n²π²)。1 ÷ n² で、ずっと速く減ります。

この背後にある規則: 跳びのある信号の係数は 1 ÷ n のように、連続でも角のある信号は 1 ÷ n² のように減り、もっとなめらかならさらに速く減ります。なめらかな信号は少ない項で足り、鋭い信号は多くの項を必要とします。

計算例

矩形波の中央 ωt = π ÷ 2 (波の値は +1) で、0 でない最初の 3 項を足します:

  1. sin(π ÷ 2) = 1、sin(3π ÷ 2) = −1、sin(5π ÷ 2) = 1。
  2. 1.273 × 1 + 0.424 × (−1) + 0.255 × 1 = 1.104。

5 項では 1.273 − 0.424 + 0.255 − 0.182 + 0.141 = 1.063 です。部分和は 1 のまわりを揺れながらゆっくり近づきます。1 ÷ n の係数から予想されるとおりです。

ギブズ現象

跳びの近くでは部分和が行き過ぎ、項を増やしてもそのオーバーシュートは小さくなりません。両側とも跳びの約 8.95% に近づき、−1 から +1 へ跳ぶ (跳びの大きさ 2) 矩形波は、倍音をいくつ使っても約 1.18 まで上がります。波打ちは幅が狭くなって跳びのほうへ寄っていくので、1 周期で平均した誤差は 0 に近づきますが、最大誤差は 0 になりません。これは実用上も重要で、高い周波数を切り捨てる (ローパスフィルターや JPEG 圧縮) と、鋭い縁のそばにリンギングが生じます。

電力: パーセバルの定理

1 周期での f2 の平均は、各倍音の電力の和に等しくなります: 平均(f2) = Σ bn2 ÷ 2 (正弦波だけの級数の場合)。矩形波では平均(f2) = 1 で、基本波だけで (4 ÷ π)2 ÷ 2 = 81% を占め、最初の 5 つの奇数倍音で 96% を占めます。矩形波が基本波の高さに聞こえ、明るくブーンとした音色になるのはこのためで、残りの数 % を上の倍音が担っています。

周転円と離散フーリエ変換

各項 c einωt は、半径 |c| の円の上を 1 周期に n 回まわる点です。項を順に先端と根元でつなぐと、それぞれ自分の速さでまわる円の鎖になります。プトレマイオスが惑星に使ったのと同じ周転円です。平面上の閉じた輪郭なら、その点を複素数 z = x + iy で表し、等間隔に M 個取り出して離散フーリエ変換を計算します:

ck = (1 ÷ M) Σj zj e−2πijk/M

ck の 1 つひとつが 1 つの円で、M 個すべてを使えば鎖は輪郭を正確になぞり、大きいほうから数個だけなら、なめらかにした輪郭を描きます。角や細かな形は、小さく速い円に含まれています。

シミュレーションの使い方

フーリエ級数シミュレーターで波と項の数を選びます。円の鎖がまわり、ペンの高さが部分和になり、曲線が緑の正確な波の上を右へ流れていきます。グラフはスペクトルです。試してみましょう:

  • 矩形波で 1 項、続いて 2、5、20、100 項: 跳びでのオーバーシュートは 9% 近くのままで、波打ちの幅が狭くなります。
  • 三角波を 3 項で: 係数が 1 ÷ n² で減るので、もうかなり近くなります。
  • 音にチェックを入れて矩形波に項を足していくと、音の高さは同じまま、音色がフルートのような純音からリードのようなブーンという音に変わります。
  • 自分で図形を描き、項の数を 3 や 4 まで減らすと、絵が溶けて楕円のような輪になります。

モデルの前提

  • 理想的な完全周期の波で、振幅 1、係数は厳密です。これらの波について測定やサンプリングは行いません。
  • 3 つの波は正弦波だけの級数で、奇関数になるように選んでいます。ずらした波には余弦波も必要です。
  • 図形は変換の前に、輪郭に沿って等間隔の 256 点に再サンプリングし、最後の点を最初の点につないで閉じます。
  • 音は同じ係数からブラウザーの Web Audio の周期波でつくり、音量は正規化されます。設定した高さで鳴り、約 20 kHz より上の倍音は聞こえません。

境界的なケース

  • 1 項だけ: どの波も振幅 b1 の純粋な正弦波になります。矩形波では 4 ÷ π = 1.27 で、波そのものより高くなります。
  • 跳びの位置そのものでは、矩形波の部分和はどれもちょうど 0、つまり両側の平均です。
  • 自分と交差したり途切れたりしている絵も 1 つの閉じた輪として扱い、点がつくる経路がどんなものでも変換で当てはめます。
  • 音のとても高い倍音: 880 Hz では第 100 倍音は 88 kHz で、可聴域もオーディオ機器の再生範囲も大きく超えるため、ブラウザーが取り除きます。

モデルが成り立たなくなる場合

  • 繰り返さない信号にはフーリエ級数がなく、連続的に広がった周波数をもつフーリエ変換が必要です。短い音のスペクトルは広がっているので、クリック音には音の高さがありません。
  • サンプリングされたデータ。 有限の速さで測定した実際の信号は、その速さの半分 (ナイキスト周波数) より高い周波数を表せず、それより高い成分は偽の低い周波数として折り返されます (エイリアシング)。
  • 実際の楽器は理想的な波ではありません。倍音は正確な整数倍ではなく (ピアノの弦には剛性があります)、音の途中で変わり、立ち上がりに個性の多くが含まれます。楽器チューナーで実際の音を読むとわかります。
  • 病的な関数。 フーリエ級数がある点で発散する連続関数も存在しますが、描いたり録音したりしたものでは実際上まったく問題になりません。

関連ツール

定常波シミュレーターでは弦や管がもてる倍音がわかり、トーンジェネレーターでは正弦波・矩形波・のこぎり波・三角波を好きな周波数で鳴らして、耳で比べられます。

このガイドで使うツール

その他のガイド