Fourier級数の計算(computing Fourier series)とは、周期関数を三角関数に分ける係数を積分から求める操作である。区分点と周期の継ぎ目の跳びを整理すると、部分積分によって係数とその減衰を計算できる。周期的な入力や初期分布の展開に使われる。
周期的な入力を正弦波に分ける計算では、積分する前に周期と継ぎ目を確かめることが大切である。同じ区間内の式でも、周期的に繰り返したときの端のつながり方によって係数の減り方が変わる。端で値が跳ぶ関数と、値はつながるが傾きが跳ぶ関数では、高い振動数の成分の大きさが違う。本記事は、係数を求める積分を実行する手順と、区分点の跳びから係数を整理する方法を扱う。
例えば $e^x$ を $(-\pi,\pi)$ で与え、周期 $2\pi$ で繰り返すと、各区間の内部では何回でも微分できるが、周期の継ぎ目で値が跳ぶ。したがって係数は指数的に小さくなるとは限らない。滑らかさを調べる対象は、区間内部の式だけでなく、繰り返した関数全体である。この区別は、後で項別微分を行う場合にも効いてくる。
$L>0$ とし、$f$ は $[-L,L]$ で区分的に連続な関数とする。周期的に延長した関数の係数を
$$
c_n=\frac1{2L}\int_{-L}^{L}f(x)e^{-i\omega_nx}\,dx,
\qquad \omega_n=\frac{n\pi}{L}\quad(n\in\mathbb Z)
$$
で計算する。実数値の関数では
$$
a_n=\frac1L\int_{-L}^{L}f(x)\cos\omega_nx\,dx,
\qquad b_n=\frac1L\int_{-L}^{L}f(x)\sin\omega_nx\,dx
$$
を用い、定数項は $a_0/2=c_0$ である。対応する実数形の部分和は $a_0/2+\sum_{n=1}^N(a_n\cos\omega_nx+b_n\sin\omega_nx)$ となる。
この規約は Fourier級数 の定義「Fourier 係数と Fourier 級数」「実数の形の Fourier 係数」と注意「周期が $2\pi$ でない場合」による。複素形と実数形の換算は同記事の命題「2 つの形の対応」を用いる。直交性の証明を計算のたびに繰り返す必要はないが、定数項の半分と積分区間の長さは毎回確かめる。平均が $3$ なら $a_0=6$ であって、$a_0=3$ ではない。
区分的に連続とは、有限な区分に分けて各区間で連続で、区分点に有限な片側極限を持つという意味で用いる。区分点自身に定めた値は積分には影響しない。係数を計算することと、級数がその点でどの値に収束するかは分ける。後者には Fourier級数 の定理「各点収束の定理(Dirichlet)」を使う。区分的に $C^1$ 級なら、左右の極限の平均へ収束する。
実数形は偶奇を見分けると短くなる。偶関数の余弦係数、奇関数の正弦係数を半区間で計算する理由は Fourier級数 の定義「実数の形の Fourier 係数」にある。例えば $x\sin x$ は奇関数どうしの積なので偶関数である。関数の見た目に $x$ があるという理由で、正弦係数だけを計算してはいけない。また、$e^{ax}$ の偶成分は $\cosh ax$、奇成分は $\sinh ax$ であるから、二つを分けて求めても同じ係数になる。
区間を $-L=x_0< x_1<\cdots< x_m=L$ に分ける。内部の区分点では $[g]_{x_j}=g(x_j+)-g(x_j-)$、周期の継ぎ目では $[g]_{-L}=g(-L+)-g(L-)$ と書く。和は継ぎ目を含む一周期の各区分点についてとる。端点を二つ数えると同じ跳びを二重に入れるので、継ぎ目は $-L$ の一つとして数える。
$r\ge1$ とし、$f$ は各閉区間の片側で $C^r$ 級とする。$c_n(f^{(r)}_{\rm pw})$ は区間ごとの $r$ 階導関数を積分して計算した係数とする。$n\ne0$ なら
$$
c_n(f)=\frac1{2L}\sum_j\sum_{k=0}^{r-1}
\frac{[f^{(k)}]_{x_j}e^{-i\omega_nx_j}}{(i\omega_n)^{k+1}}
+\frac{c_n(f^{(r)}_{\rm pw})}{(i\omega_n)^r}.
$$
まず一回の部分積分を各区間で行う。指数関数の導関数が $-i\omega_ne^{-i\omega_nx}$ なので、各区間で
$$
\int f e^{-i\omega_nx}\,dx
=-\frac{f e^{-i\omega_nx}}{i\omega_n}\Big|_{\rm left}^{\rm right}
+\frac1{i\omega_n}\int f'e^{-i\omega_nx}\,dx
$$
となる。隣り合う二区間の境界項を足すと、左区間の右端の項は $-f(x_j-)e^{-i\omega_nx_j}/(i\omega_n)$、右区間の左端の項は $f(x_j+)e^{-i\omega_nx_j}/(i\omega_n)$ であり、その和は跳びの項になる。周期の両端では $e^{-i\omega_nL}=e^{i\omega_nL}=(-1)^n$ だから、同じ計算で周期の継ぎ目の跳びを得る。
$2L$ で割れば
$$
c_n(f)=\frac1{2Li\omega_n}\sum_j[f]_{x_j}e^{-i\omega_nx_j}
+\frac{c_n(f'_{\rm pw})}{i\omega_n}
$$
である。区間ごとの導関数にこの等式をもう一度適用すれば、$f'$ の跳びと二階導関数の余りが出る。これを $r$ 回繰り返す。各導関数の片側極限と積分が仮定によって存在するため、すべての部分積分は正当であり、有限個の境界項の和も定まる。最後の余りを残すと主張の式になる。$\square$
跳び公式は、区分的な多項式に特に有効である。次数が $d$ の多項式なら、$r=d+1$ とすると各区間の導関数が零になるので、係数は有限個の跳びだけで完全に求まる。滑らかな関数の場合は余りが残り、その積分の評価が必要となる。余りを捨ててよいのは、余りが厳密に零か、誤差を伴う近似として扱う場合だけである。
跳びの位置は位相 $e^{-i\omega_nx_j}$ に入り、高さは振幅に入る。同じ高さの跳びをずらすと、係数の絶対値が同じでも位相が変わる。複数の跳びでは位相が打ち消し合い、ある偶数・奇数の係数が消えることもある。周期の継ぎ目だけを見るのでなく、内部の区分点もすべて挙げると、この消失を式から説明できる。
$k\ge1$ とする。$f$ は周期的に $C^{k-1}$ 級で、各区間で $C^k$ 級、$f^{(k)}_{\rm pw}$ は区分的に連続とする。このとき
$$
\lim_{|n|\to\infty}n^k c_n(f)=0.
$$
さらに $f^{(k)}_{\rm pw}$ の一周期の絶対積分が $M$ なら、$n\ne0$ に対し $|c_n(f)|\le M/(2L|\omega_n|^k)$ である。
$f,f',\ldots,f^{(k-1)}$ は周期的に連続なので、内部の区分点にも周期の継ぎ目にも跳びがない。thm-cfs-jumps で $r=k$ とすれば
$$
c_n(f)=\frac{c_n(f^{(k)}_{\rm pw})}{(i\omega_n)^k}.
$$
導関数は区分的に連続で、一周期で積分可能である。Fourier級数 の系「Riemann–Lebesgue の補題」を周期 $2L$ に移すと、$c_n(f^{(k)}_{\rm pw})\to0$ が従う。$n^k/(i\omega_n)^k=(L/(i\pi))^k$ は $n$ によらないので、最初の極限を得る。積分の絶対値を積分した絶対値で抑えると、$|c_n(f^{(k)}_{\rm pw})|\le M/(2L)$ であり、同じ等式から明示的な上界も得られる。$\square$
この定理は係数の減衰を示すもので、逆に係数の減衰から何階まで微分できるかを無条件に決める定理ではない。例えば係数が $1/n^2$ 程度なら、元の級数は絶対一様収束するが、一回微分した級数の係数は $1/n$ 程度になり、絶対収束の判定は使えなくなる。項別微分には Fourier級数の項別微分 の定理「微分した係数と点での収束」の条件を別に確認する。
次の表は $L=\pi$、$-\pi< x<\pi$ の式を周期的に延長した場合である。実数値の形を用いる。$n\ge1$、$a\in\mathbb R$ とし、$a=0$ の行は極限で読む。
| 関数 | 定数項 $a_0/2$ | 非零の係数 | 条件・根拠 |
|---|---|---|---|
| $x$ | $0$ | $b_n=2(-1)^{n+1}/n$ | Fourier級数 の例「のこぎり波 $f(x)=x$」 |
| $x^2$ | $\pi^2/3$ | $a_n=4(-1)^n/n^2$ | Parsevalの等式 の例「2 次関数 $f(x)=x^2$ と 4 乗の逆数の和」 |
| $e^{ax}$ | $\sinh(a\pi)/(a\pi)$ | $a_n=2a(-1)^n\sinh(a\pi)/(\pi(a^2+n^2))$, $b_n=-2n(-1)^n\sinh(a\pi)/(\pi(a^2+n^2))$ | $a\ne0$、ex-cfs-exponential |
| $\cosh ax$ | $\sinh(a\pi)/(a\pi)$ | 上の $a_n$、$b_n=0$ | 偶成分、ex-cfs-exponential |
| $\sin^2x$ | $1/2$ | $a_2=-1/2$ | 三角恒等式、他は零 |
| 関数 | 係数 | 条件と根拠 |
|---|---|---|
| $x^3$ | $a_0=a_n=0$、$b_n=2(-1)^n(6/n^3-\pi^2/n)$ | ex-cfs-cubic |
| $x\sin x$ | $a_0/2=1$、$a_1=-1/2$、$a_n=2(-1)^n/(1-n^2)$($n\ne1$)、$b_n=0$ | ex-cfs-product |
| $\lvert\sin x\rvert$ | $a_0/2=2/\pi$、$a_{2m}=-4/(\pi(4m^2-1))$、奇数係数と$b_n$は零 | $m\ge1$、ex-cfs-absolute-sine |
| $\sinh ax$ | $a_n=0$、指数関数の行と同じ$b_n$ | $a\in\mathbb R\setminus\{0\}$、奇成分 |
| $\cos mx$ | $a_m=1$、他は零 | 整数$m\ge1$、既存の直交性 |
| $\sin mx$ | $b_m=1$、他は零 | 整数$m\ge1$、既存の直交性 |
| $1$ | $a_0=2$、他は零 | 定義の積分 |
| $\lvert x\rvert$ | $a_0=\pi$、$a_n=2((-1)^n-1)/(\pi n^2)$ | Fourier級数 の例「三角波 $\lvert x\rvert$」 |
| 矩形波 | 奇数$n$で$b_n=4/(\pi n)$、他は零 | Fourier級数 の例「矩形波」 |
| $\cos^2x$ | $a_0=1$、$a_2=1/2$、他は零 | 三角恒等式 |
以下の近似値は小数第6位までである。
$f(x)=e^x$ を $(-\pi,\pi)$ で与える。複素形なら $c_n=\sinh\pi\,(-1)^n/(\pi(1-in))$ である。実数形の第1係数は $a_1=-\sinh\pi/\pi\approx-3.676078$、$b_1=\sinh\pi/\pi\approx3.676078$ となる。使う公式は def-cfs-coefficients と指数関数の積分である。
$\int_{-\pi}^{\pi}e^{(1-in)x}\,dx=(e^{(1-in)\pi}-e^{-(1-in)\pi})/(1-in)=2(-1)^n\sinh\pi/(1-in)$。$2\pi$で割り、実部と虚部を換算する。
$f(x)=x^3$ の奇延長は $b_n=2(-1)^n(6/n^3-\pi^2/n)$ を持つ。第1係数は $b_1=2\pi^2-12\approx7.739209$ である。thm-cfs-jumps では、継ぎ目に $[f]=-2\pi^3$、$[f']=0$、$[f'']=-12\pi$ があり、三階導関数は定数なので非零周波数の余りは零になる。
これは三次式の係数であり、既存の一次式の例を積分し直したものではない。継ぎ目の値の跳びが先頭の $1/n$ を作り、二階導関数の跳びが $1/n^3$ の補正を作る。$f$ の内部に区分点がなくても、周期的な継ぎ目を数えないと二つの項を両方落としてしまう。
$f(x)=x\sin x$ は偶関数で、$a_0/2=1$、$a_1=-1/2$、$n\ge2$ では $a_n=2(-1)^n/(1-n^2)$ となる。したがって $a_2=-2/3\approx-0.666667$ である。積和の公式を使うと $x\sin x\cos nx$ は二つの $x\sin((1\pm n)x)$ に分かれる。$n=1$ では片方の振動数が零になるため、一般式の分母 $1-n^2$ に代入せず直接積分する。
端の値は両方零でつながるが、導関数 $\sin x+x\cos x$ の端の値はつながらない。このため余弦係数は $1/n^2$ の次数である。元の積が有限個の三角関数でないことも、係数が無限個残ることから見える。
$f(x)=|\sin x|$ は $\pi$ 周期でもある。$2\pi$ 規約で計算すると偶数の振動数だけが残り、$a_{2m}=-4/(\pi(4m^2-1))$、平均は $2/\pi$ となる。$a_2=-4/(3\pi)\approx-0.424413$ である。$[0,\pi]$ では $\sin x\ge0$ なので、絶対値を外した積和の積分で求まる。
周期を半分にできることと、偶関数であることは別の情報である。偶関数だけなら正弦係数が消える。さらに $\pi$ 周期なら奇数の余弦係数も消える。この二段階を区別すると、どの係数が零になるかを積分する前に判定できる。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 周期の継ぎ目での連続性 | $e^x$ の周期的延長 | 内部が解析的でも係数は $1/n$ 程度 |
| 部分積分の全境界項 | $x^3$ で端の跳びを無視 | 非零の係数を零と誤る |
| 代入点での連続性 | $e^x$ の $x=\pi$ | 和は指定した端の値でなく平均 |
| 周期の整合 | $\sin(x/2)$ を $2\pi$ 周期と誤認 | その延長の係数は元の全直線の関数を表さない |
最後の例では、元の関数は周期 $4\pi$ を持つ。$[-\pi,\pi]$ の値を繰り返して別の関数を作ること自体はできるが、その関数は継ぎ目で $-1$ と $1$ をつなぐため跳びを持つ。元の滑らかな正弦波と同じものではない。$x=2\pi$ では元の値は零である一方、周期的延長は $x=0$ の値を使う。この一つの点では偶然一致しても、例えば $x=5\pi/2$ では元の値と延長の値の符号が逆になる。
点の値を変える反例も理解しておくとよい。$f$ を一つの点だけ変更しても係数は変わらない。すべての係数が同じだから、その点での任意の指定値まで再現できるという結論は出ない。各点収束の定理が左右極限の平均を述べるのはこのためである。係数の計算では、点の値よりも片側極限と周期的な接続を記録する。
| 誤り | 正しくは | なぜ |
|---|---|---|
| 平均を $a_0$ と書く | 平均は $a_0/2$ | 規格化の違い |
| 端の跳びを右端から左端へ引く | $f(-L+)-f(L-)$ | thm-cfs-jumps の境界項 |
| 内部の滑らかさだけで減衰を決める | 周期の継ぎ目も見る | 指数関数の例 |
| $n=1$ の例外に一般式を代入 | 直接積分する | $x\sin x$ の共鳴する積 |
| 係数が零へ行けば各点収束する | 別に収束条件を確認 | Riemann–Lebesgueは十分条件ではない |
$n\ge1$ で $\lvert a_n\rvert+\lvert b_n\rvert\le C/n^p$、$C\ge0$、$p>1$ とする。$N\ge1$ のとき、$N$ 次より後の実数形の和は、余弦・正弦の絶対値を $1$ で抑えることで $C\sum_{n>N}n^{-p}$ 以下になる。積分との比較により $\sum_{n>N}n^{-p}\le N^{1-p}/(p-1)$ なので、場所によらない誤差の上界を得られる。係数の次数が分かるだけでも、必要な項数の見通しを立てられる。
ただしこの上界は、計算した部分和と級数の極限の差を抑える。極限が求めたい関数であることは別に各点収束の定理で確かめる。$p=1$ の場合には絶対値の和による上界は発散するので、この方法で一様な誤差を得ることはできない。跳びから離れた区間では相殺を使った評価が可能でも、跳びを含めた区間全体で同じ評価を主張してはいけない。
図では、指数関数、$x\sin x$、周期的に $C^1$ の区分的二次式、$C^2$ の区分的四次式の係数の減衰を比べる。零の係数は対数軸に載らないので省き、非零係数の大きさを示す。傾きはそれぞれおおむね $-1,-2,-3,-4$ になるが、有限個の係数の傾きだけで正則性の定理を証明したことにはならない。
$C^1$ の例は $[-1,1]$ の $x(1-\lvert x\rvert)$、$C^2$ の例は $x^2(1-\lvert x\rvert)^2$ の周期的延長である。後者の三階導関数の跳びは原点と継ぎ目でともに $-24$ なので、跳び公式から $c_n=-12(1+(-1)^n)/(\pi^4n^4)$ を得る。
周期の継ぎ目と滑らかさによる係数の減衰
級数の和を得たいときは、係数を求めた後で都合のよい点を選ぶ。正弦が消える点、余弦が交代符号になる点などを選ぶと簡単な数列が現れる。既存の Basel問題 や Parsevalの等式 は、この考えで得られる平方・四乗の逆数の和を扱う。本記事の係数計算は、別の和を導くための準備にもなる。絶対収束しない級数では、項を並べ替えず対称な部分和または実数形の順序を保つことが必要である。
跳び公式を実際に使うときは、区間ごとの多項式を一度に積分するより、各区分点の左極限と右極限を並べる方が見通しがよい。関数の値、一階導関数、二階導関数という順に列を作り、右の値から左の値を引く。周期の継ぎ目にも一行を設ける。区間内部に跳びがなくても、この最後の行に寄与が残ることがある。三次式の例では継ぎ目の値と二階導関数が跳び、傾きの跳びは零だった。この構造を先に調べれば、係数に現れる $1/n$ と $1/n^3$ の項を予測できる。
跳びの符号は積分の境界項から確認する。部分積分では右端の値から左端の値を引くが、係数の跳び公式では区分点の右側から左側を引く。同じ点を挟む二つの区間の境界項を足すと、左右の順序が入れ替わる。この計算を省略して記憶だけで符号を決めると、奇関数の正弦係数がすべて逆になることがある。最初の一つの係数を直接積分し、跳びの表からの答えと合わせることが、符号の確認に役立つ。
複数の跳びは、位置による位相も持つ。$e^{-i\omega_nx_j}$ がその位置の情報である。二つの等しい跳びが離れた点にある場合でも、係数が単純に二倍になるとは限らない。位相によって強め合う番号と打ち消し合う番号が現れる。絶対正弦の例の偶数周波数だけが残る現象も、半周期ずれた形が同じであることと対応する。区分点の個数だけで係数の大きさを判断せず、位置と符号を一緒に記録する。
係数が零になる理由は、数値的に小さいという理由と区別する。対称性によって厳密に零になる係数は、どれだけ積分の精度を上げても真の値は零である。一方、二つの寄与が近い大きさで相殺される場合には、丸めた値を先に引くと相対誤差が大きくなる。一般式を整理してから数値を代入すると、厳密な零と小さい非零の値を区別しやすい。表の空欄や偶数係数の省略には、その消失がどの対称性から来るかを添える。
周期の変更では、振動数と積分の規格化を同時に変える。$x=Ls/\pi$ と置けば、$[-L,L]$ の係数積分は $[-\pi,\pi]$ の係数積分に変わる。積分の $dx=(L/\pi)ds$ と係数の $1/L$ が相殺し、残る規格化は $1/\pi$ になる。しかし元の関数の引数は $Ls/\pi$ へ変わるため、係数の値までそのまま移せるわけではない。長さだけを変更した同じ波形と、同じ式を別の区間で切り取った波形を分けて考える。
最後に、有限個の係数から元の関数を近似する場合は、どの量を近似したいかを指定する。値の近似で小さく見える高周波成分でも、微分すると周波数が掛かって大きくなる。元の部分和の誤差だけでは、その傾きの誤差は評価できない。係数計算と微分の交換は別の段階であり、Fourier級数の項別微分 の条件を満たして初めて微分した和を元の導関数と比較できる。係数の減衰を計算する意義は、近似の見た目を説明するだけでなく、その次の操作に必要な収束条件を判断する点にある。
係数の定義と周期の変更は LebDQ26 §4.3(pp. 208–214)を参照できる。本記事の跳び公式は、各滑らかな区間での部分積分を足し合わせて導いたものである。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する