フーリエ係数計算ツール

任意の関数のフーリエ係数(a₀・aₙ・bₙ)を数値積分で求める無料ツール。f(x) の式と周期区間、求めたい次数を入力すると係数の表が得られ、再構成したフーリエ級数展開を元の関数と重ねてグラフで確認できます。

フーリエ係数計算ツールとは

任意の関数のフーリエ係数を数値積分で求めるツールです。f(x) の式、周期にあたる区間、求めたい次数を入力すると、定数項 a₀ と各次数の aₙ・bₙ が表として得られ、その係数から再構成したフーリエ級数展開が元の関数と重ねてグラフに描かれます。矩形波や三角波のように閉じた形の係数が分かっている代表波形はフーリエ級数展開シミュレーターが扱うため、こちらは教科書に載っていない式を自分で試すためのツールという位置づけです。

積分にはシンプソン法を使い、既定では周期を2000分割しています。したがって表示される係数は厳密解ではなく近似値です。滑らかな関数であれば有効桁6桁程度まで一致しますが、絶対値のように折れ点をもつ関数や区間の端で値が跳ぶ関数では、分割数を増やしたほうが精度が上がります。分割数は10から20000まで指定できるので、値が落ち着くまで上げてみてください。

フーリエ係数計算ツールの使い方

  1. 関数を入力する f(x) の式を入れます。変数は x、円周率は pi と書きます。よく使う式はボタンから入力できます。
  2. 周期区間を決める 左端と右端を入れます。ここも式で書けるので -pi や 2*pi と入力できます。区間の幅がそのまま周期 T になります。
  3. 次数を選ぶ 何次までの係数を求めるかをスライダーで指定します。1 から 50 まで選べます。
  4. 結果を読む 係数の表と、元の関数に級数を重ねたグラフが出ます。残差の欄が小さいほど、その次数までで元の関数をよく再現できています。

使いこなすためのヒント

  • 区間の端で値が跳ぶ関数(f(x) = x など)では、跳びの近くで級数が行き過ぎます。次数を増やしても消えないので、残差の数値だけでなくグラフの形も併せて見てください。
  • 本来 0 になる係数も、数値積分では 1e-16 程度の値として出てきます。表では絶対値が 1e-10 未満のものを 0 と表示しているので、それより大きい値が並ぶ場合は分割数を上げてみてください。
  • 偶関数(f(−x) = f(x))なら bₙ が、奇関数なら a₀ と aₙ が 0 になります。対称性の確認にそのまま使えます。
  • 矩形波・三角波・のこぎり波・半波整流の係数を確かめたい場合は、閉じた形の式を使うフーリエ級数展開シミュレーターのほうが厳密な値を出せます。

フーリエ係数計算ツールの活用シーン

演習問題の答え合わせ

手計算で求めた a₀・aₙ・bₙ が合っているかを、次数ごとに数値で照合できます。符号の取り違えや 1/n と 1/n² の書き間違いはここで見つかります。

教科書に載っていない関数を試す

exp(-x^2) や x*sin(x) のように積分を手で解くのが面倒な関数でも、係数をすぐ得られます。

対称性の効果を確かめる

偶関数・奇関数・半波対称の関数を入れ替えながら、どの係数が落ちるかを実験できます。対称性の議論を暗記ではなく確認として扱えます。

周期を変えたときの影響を見る

同じ式でも区間の幅を変えると角周波数が変わります。−1〜1 のときと −pi〜pi のときで係数がどう変わるかを見比べられます。

フーリエ係数の計算に出てくる用語

フーリエ係数
a₀・aₙ・bₙ の総称です。元の関数に cos や sin を掛けて1周期にわたって積分し、周期の半分で割った値にあたります。
周期 T
入力した区間の幅です。フーリエ級数はこの幅で関数が繰り返すものとして扱うため、区間の取り方が結果を左右します。
角周波数
ω = 2π/T のことです。n 次の高調波は nω の角周波数をもち、cos(nωx)・sin(nωx) として級数に並びます。
シンプソン法
区間を偶数個に分け、3点ずつを放物線で近似して積分する数値積分法です。誤差は分割幅の4乗に比例するため、分割を倍にすると誤差は約16分の1になります。
振幅と位相
aₙcos + bₙsin を1本の余弦 A·cos(nωx + φ) にまとめたときの大きさと横ずれです。A = √(aₙ² + bₙ²)、φ = atan2(−bₙ, aₙ) で求めています。
残差
元の関数と再構成した級数の差です。ここでは積分に使った節点での二乗平均平方根を表示しており、その次数まででどれだけ再現できているかの目安になります。

フーリエ係数の計算についてよくある質問

任意の式の積分を記号的に解くには数式処理系が必要で、ブラウザの中で安全に完結させるのが難しいためです。代わりにシンプソン法による数値積分を使っています。滑らかな関数であれば既定の2000分割で有効桁6桁程度まで一致します。閉じた形の厳密な係数が欲しい代表波形については、フーリエ級数展開シミュレーターをご利用ください。

数値積分の丸め誤差です。表では絶対値が 1e-10 未満のものを 0 と表示しています。それより大きい値が並ぶ場合は、関数に折れ点や跳びがある可能性が高いので、分割数を増やして値が落ち着くかを確かめてください。

四則演算・剰余・べき乗・階乗、sin・cos・tan・asin・acos・atan、log(常用対数)・ln(自然対数)・sqrt・abs・exp、定数 pi と e が使えます。三角関数の引数はラジアンとして扱います。2x や 3sin(x) のように掛け算の記号を省いた書き方も自動で補います。

次数が足りないか、区間の端で関数が周期的につながっていないかのどちらかです。フーリエ級数は区間の外側を周期的な繰り返しとして扱うため、f(左端) と f(右端) が違う値だとそこに跳びが生まれ、その近くで必ず行き過ぎます。区間の取り方を変えると改善することがあります。
ツールくん

余談ですが ― 樽の容積からFFTまで、数値積分の長い道のり

このツールが使っているシンプソン法は、1743年に公式を紹介したイギリスのトマス・シンプソンの名で呼ばれています。ところが同じ考え方は100年以上前のヨハネス・ケプラーがすでに使っていて、しかも用途は天体力学ではなくワイン樽の容積の見積もりでした。ドイツ語圏では今でも「ケプラーの樽の規則」と呼ばれることがあります。曲線で囲まれた面積を放物線で近似して足し上げるという発想は、それだけ古くから実務に根づいていたということです。

フーリエ係数を数値で求める話は、そのまま離散フーリエ変換につながっていきます。データ点の数が N のとき素朴に計算すると N² 回の掛け算が必要で、これを N log N に落としたのが1965年のクーリーとテューキーによる高速フーリエ変換(FFT)です。ところがこの論文が出た後、ガウスが1805年ごろに本質的に同じアルゴリズムを書き残していたことが見つかりました。ガウスは公表せず、遺稿集に収められたのは死後のことだったため、150年以上気づかれずに眠っていたわけです。

数値積分の誤差の見積もりは、実務では「どこで打ち切るか」の判断に直結します。シンプソン法の誤差は分割幅の4乗に比例するので、分割を倍にすれば誤差は約16分の1になります。ただしこれは被積分関数が十分滑らかな場合の話で、絶対値のように微分できない点があるとこの見積もりは崩れます。このツールで abs(x) を入れて分割数を変えてみると、滑らかな関数のときほど素直に精度が上がらないことが確かめられます。理論の前提が満たされているかどうかを、数字の動きから読み取る練習にもなるはずです。