フーリエ級数の描画
矩形波などの波形や手描きの絵を、回転する円(エピサイクル)の連なりで描きます。円の数を変えて元の形に近づいていく様子や、ギブズ現象を確かめられます。
f(x) = 4/π · (sin x + sin 3x / 3 + sin 5x / 5 + …)
奇数次の項だけでできています。項を増やしても、跳び上がるところのすぐ脇に約 9% の行き過ぎ(ギブズ現象)が残ります。
- 項の数
- 5
- 最高次数
- 9
- 再現できたエネルギー
- 95.9%
- 近似の最大値
- 1.182
係数の大きさ(次数ごと)
n 次の項 sin(nx) の振幅です。濃い棒が近似に使っている項です。
使い方
- 「波形」では、矩形波などの波形を sin の波の足し算で近づけます。左で回る円の先端の高さが、右へ波形として流れていきます。
- 「絵」では、形を回転する円の連なりでなぞります。キャンバスをマウスや指でなぞると、自分で描いた形を描かせられます。
- 「円の数」を増やすほど元の形に近づきます。「再現できたエネルギー」は、元の形のうちどれだけを表せているかの目安です。
- 「円の並べ方」を「大きい順」にすると、少ない円でも形が早く見えてきます。「周波数の低い順」は、フーリエ級数を低い次数から順に足していくのと同じです。
- キーボードでは Space で再生 / 一時停止、← → で円の数を 1 つずつ増減します。
フーリエ級数のしくみ
周期的な波形は、周波数が 1 倍・2 倍・3 倍…の sin と cos の波の足し算(フーリエ級数)で表せます。それぞれの波は、一定の速さで回る円の上の点の高さと同じなので、円を次々につなげると、先端の高さが波形を描きます。
平面の曲線では、点 (x, y) を複素数 x + iy とみなします。曲線を等間隔の点に分けて離散フーリエ変換すると、係数 ck が得られ、曲線は Σ ck eikt と書けます。これは「半径 |ck| の円が 1 周の間に k 回まわる」ことを足し合わせたもので、絵を描く円の連なり(エピサイクル)になります。このアプリでは曲線を 256 点に分けるので、円は最大 255 個です。
係数の 2 乗の和は、元の形の「エネルギー」(2 乗平均)と等しくなります(パーセバルの等式)。使わなかった円の分だけ、元の形とのずれが残ります。
ギブズ現象
矩形波やのこぎり波のように値が急に跳ぶ波形では、項をいくら増やしても、跳ぶところのすぐ脇に跳びの大きさの約 9% の行き過ぎが残ります。項を増やすと行き過ぎの幅は細くなりますが、高さは減りません(矩形波では、近似の最大値が 1.18 前後から下がりません)。一方、三角波のように途切れない波形では、係数が速く小さくなり、少ない項でもよく似た形になります。