Table of Contents
フーリエ余弦・正弦展開
Def: フーリエ余弦展開
関数 $f(x)$ を $0 \leq x \leq \pi$で定義された関数とする. これを
\[f(-x) = f(x) \qquad (0 \leq x \leq \pi)\]と $-\pi \leq x \leq \pi$上の偶関数に拡張子, さらに
\[f(x) = f(x + 2\pi)\]によって周期$2\pi$の周期関数に拡張する. このとき, $f(x)$が区分的になめらかな関数でフーリエ級数展開ができるとすると
\[\begin{align*} f(x) &= \frac{a_0}{2} + \sum_{n=1}^\infty a_n \cos nx \\[3pt] a_n &= \frac{2}{\pi}\int^{\pi}_0 f(x) \cos nx\ dx \end{align*}\]となり, この一連の展開のことをフーリエ余弦級数展開という.
もとの関数を
\[f(-x) = -f(x) \qquad (0 \leq x \leq \pi)\]と展開した場合は,
\[\begin{align*} f(x) &= \sum_{n=1}^\infty b_n \sin nx \\[3pt] b_n &= \frac{2}{\pi}\int^{\pi}_0 f(x) \sin nx\ dx \end{align*}\]となり, この一連の展開のことをフーリエ正弦級数展開という.
例題
Problem
関数
\[f(x) = x \qquad (0 \leq x \leq \pi)\]をフーリエ余弦級数展開せよ
定義より,
\[\begin{align*} f(x) &= \frac{a_0}{2} + \sum_{n=1}^\infty a_n \cos nx \\[3pt] a_n &= \frac{2}{\pi}\int^{\pi}_0 x \cos nx\ dx \end{align*}\]従って,
\[a_0 = \pi\]また, $n\neq 0$の場合は, 瞬間部分積分を用いると
符号 | 第1項 | 第2項 |
---|---|---|
+ | $x$ | $\frac{1}{n}\sin nx$ |
- | $1$ | $-\frac{1}{n^2}\cos nx$ |
となるので
\[a_n = \begin{cases} \displaystyle 0 & n:\text{even}\\[3pt] \displaystyle -\frac{4}{\pi n^2} & n:\text{odd} \end{cases}\]従って,
\[\begin{align*} f(x) &\sim \frac{\pi}{2} - \frac{4}{\pi}\left(\cos x + \frac{\cos 3x}{9} + \frac{\cos 5x}{25} + \cdots \right)\\[3pt] &= \frac{\pi}{2} - \frac{4}{\pi}\sum_{n=1}^\infty \frac{\cos (2n-1)x}{2n-1} \end{align*}\]なお, これは$\vert x\vert (-\pi\leq x\leq \pi)$のフーリエ級数展開と同じになる.
フーリエ級数展開との関係で考えてみると, 余弦展開を考えた場合, 定義より偶関数への拡張を行っているので $a_n$のみに注目すればいいことはわかるが, もともとのフーリエ級数展開では
\[\begin{align*} a_n &= \frac{1}{\pi}\int^{\pi}_{-\pi} f(x) \cos nx dx\\[3pt] &= \frac{2}{\pi}\int^{\pi}_0 f(x) \cos nx dx \end{align*}\]であることから直感的に理解できる. 正弦級数展開をするときも, 同様の理由で $b_n$のみに着目すればよく, また, 奇関数 $\times$ 奇関数 は偶関数になるので
\[\begin{align*} b_n &= \frac{1}{\pi}\int^{\pi}_{-\pi} f(x) \sin nx dx\\[3pt] &= \frac{2}{\pi}\int^{\pi}_0 f(x) \sin nx dx \end{align*}\]であることからも理解できる.
例題
Problem
関数
\[f(x) = \begin{cases} 1 & \qquad (0 \leq x < \pi/2)\\[3pt] 0 & \qquad (\pi/2 \leq x < \pi) \end{cases}\]を周期$2\pi$へ拡張したときのフーリエ余弦級数展開, 正弦級数展開せよ
フーリエ余弦級数展開
$n=0$のとき,
\[\begin{align*} a_0 &= \frac{2}{\pi}\int^\pi_0 f(x) \ dx\\[3pt] &= 1 \end{align*}\]$n\neq 0$の場合,
\[\begin{align*} a_n &= \frac{2}{\pi}\int^\pi_0 f(x) \cos nx\ dx\\[3pt] &= \frac{2}{\pi}\int^{\pi/2}_0 \cos nx\ dx\\[3pt] &= \frac{2}{\pi}\left[\frac{\sin nx}{n}\right]^{\pi/2}_0\\[3pt] &= \begin{cases} \displaystyle 0 & n:\text{even}\\[3pt] \displaystyle \frac{2}{\pi n} & n \equiv 1 \mod 4 \\[3pt] \displaystyle -\frac{2}{\pi n} & n \equiv 3 \mod 4 \end{cases} \end{align*}\]従って,
\[f(x) \sim \frac{1}{2} + \frac{2}{\pi}\left(\sum_{n=0}^\infty \frac{\cos (4n+1)x}{4n+1} -\sum_{n=0}^\infty \frac{\cos (4n+3)x}{4n+3} \right)\]\[\begin{align*} b_n &= \frac{2}{\pi}\int^\pi_0 f(x) \sin nx\ dx\\[3pt] &= \frac{2}{\pi}\int^{\pi/2}_0 \sin nx\ dx\\[3pt] &= \frac{2}{\pi}\left[-\frac{\cos nx}{n}\right]^{\pi/2}_0\\[3pt] &= \begin{cases} \displaystyle \frac{2}{\pi n} & n:\text{odd}\\[3pt] \displaystyle 0 & n \equiv 0 \mod 4 \\[3pt] \displaystyle \frac{4}{\pi n} & n \equiv 2 \mod 4 \end{cases} \end{align*}\]フーリエ正弦級数展開
従って,
\[f(x) \sim \frac{2}{\pi}\left(\sum_{n=0}^\infty \sin(2n+1)x + \sum_{n=0}^\infty \frac{2\sin (4n+2)x}{4n+2} \right)\]例題
Problem
関数
\[f(x) = x^2\]を周期$2\pi$へ拡張したときの正弦級数展開せよ
\[\begin{align*} b_n &= \frac{2}{\pi}\int^\pi_0 f(x) \sin nx\ dx\\[3pt] &= \frac{2}{\pi}\int^{\pi}_0 x^2\sin nx\ dx \end{align*}\]フーリエ正弦級数展開
瞬間部分積分より
符号 | 第一項 | 第二項 |
---|---|---|
+ | $x^2$ | $\displaystyle -\frac{1}{n}\cos nx$ |
- | $2x$ | $\displaystyle -\frac{1}{n^2}\sin nx$ |
+ | $2$ | $\displaystyle \frac{1}{n^3}\cos nx$ |
従って,
\[f(x) \sim \sum_{n=1}^\infty \frac{-2\pi}{2n} \sin 2nx + \sum_{n=1}^\infty \frac{2}{2n-1}\left(\pi - \frac{4}{\pi (2n-1)^2}\right) \sin (2n-1)x\]三角関数の直交性についての再確認
Ryo’s Tech Blog > 三角関数系の直交性にて,
\[\frac{1}{\pi}\int^\pi_{-\pi}\cos m\theta \cos n\theta\ d\theta = \delta_{mn} \qquad (m,n\text{は整数})\]は確認しましたが,
\[\begin{align*} \int^\pi_{0}\cos m\theta \cos n\theta\ d\theta, \ \ \int^\pi_{0}\sin m\theta \sin n\theta\ d\theta, \ \ \int^\pi_{0}\cos m\theta \sin n\theta\ d\theta \end{align*}\]について確認していないので念の為, ここで再確認します.
余弦関数同士の直交性
$m\neq 0$のとき, 偶関数同士の積は偶関数なので
\[\begin{align*} \int^\pi_{0}\cos m\theta \cos n\theta\ d\theta &= \frac{1}{2}\int^\pi_{-\pi}\cos m\theta \cos n\theta\ d\theta\\[3pt] &= \frac{\pi}{2}\delta_{mn} \qquad (\delta_{mn}: \text{Kroneker delta}) \end{align*}\]$m=0$のとき,
\[\begin{align*} \int^\pi_{0}\cos 0 \cos n\theta\ d\theta &= \frac{1}{2}\int^\pi_{-\pi} \cos n\theta\ d\theta\\[3pt] &= \pi\delta_{0n} \qquad (\delta_{0n}: \text{Kroneker delta}) \end{align*}\]正弦関数同士の直交性
$m\neq 0$のとき, 奇関数同士の積は偶関数なので
\[\begin{align*} \int^\pi_{0}\sin m\theta \sin n\theta\ d\theta &= \frac{1}{2}\int^\pi_{-\pi}\sin m\theta \sin n\theta\ d\theta\\[3pt] &= \frac{\pi}{2}\delta_{mn} \qquad (\delta_{mn}: \text{Kroneker delta}) \end{align*}\]$m=0$のとき,
\[\begin{align*} \int^\pi_{0}\sin 0\theta \sin n\theta\ d\theta &= \frac{1}{2}\int^\pi_{-\pi}0 \sin n\theta\ d\theta\\[3pt] &= 0 \end{align*}\]証明: 正弦関数と余弦関数の直交性
$m,n$のいずれかが0のときは積分計算結果が0になることが自明なのでそれ以外のケースを考える.
積和の公式より
\[\sin \alpha \cos \beta = \frac{\sin(\alpha + \beta) + \sin(\alpha - \beta)}{2}\]これを用いると
\[\begin{align*} \int^\pi_{0}\sin m\theta \cos n\theta\ d\theta &= \frac{1}{2}\int^\pi_{0}\sin(m + n)\theta + \sin(m - n)\theta\ d\theta\\[3pt] &= \frac{1}{2}\left[-\frac{1}{m+n}\cos(m+n)\theta - \frac{1}{m-n}\cos(m-n)\theta\right]^\pi_0\\[3pt] &= \begin{cases} \displaystyle 0 & \text{if } m + n \text{: even}\\[3pt] \displaystyle \frac{1}{m+n} + \frac{1}{m-n} & \text{if } m + n \text{: odd} \end{cases} \end{align*}\]従って, $m+n$が偶数のときは直交するが, それ以外のときではしない.
クロネッカーデルタを用いた余弦係数, 正弦係数の表記
上で確認した定義にように関数$f(x)$のフーリエ余弦展開は
\[\begin{align*} f(x) &= \frac{a_0}{2} + \sum_{n=1}^\infty a_n \cos nx \\[3pt] a_n &= \frac{2}{\pi}\int^{\pi}_0 f(x) \cos nx\ dx \end{align*}\]と書き表せます. $a_n \ (n\neq 0)$について
積和の公式より
\[\begin{align*} \cos a \cos b &= \frac{\cos (a + b) + \cos (a - b)}{2}\\[3pt] \cos^2 nx &= \frac{\cos 2nx + 1}{2} \end{align*}\]なので
\[\int^\pi_0\cos^2 nx\ dx = \frac{\pi}{2}\]とわかります. 従って, $n\neq 0$について
\[a_n = \frac{\int^{\pi}_0 f(x) \cos nx\ dx}{\int^\pi_0\cos^2 nx\ dx}\]また, $n=0$については
\[\int^\pi_0\cos^2 0\ dx = \pi\]より
\[a_0 = \frac{2}{\int^\pi_0\cos^2 0\ dx}\int^{\pi}_0 f(x) \cos 0\ dx\]この2つを合わせると, フーリエ余弦係数はクロネッカーデルタを用いて以下のように表現できます
\[a_n = (1 + \delta_{0n})\frac{\int^{\pi}_0 f(x) \cos nx\ dx}{\int^\pi_0\cos^2 nx\ dx}\]例: 正弦係数の表現
正弦係数も同様に
\[\begin{align*} f(x) &= \sum_{n=1}^\infty b_n \sin nx \\[3pt] b_n &= \frac{2}{\pi}\int^{\pi}_0 f(x) \sin nx\ dx \end{align*}\]とフーリエ正弦展開は表される. 積和の公式より
\[\sin a\sin b = -\frac{\cos (a + b) - \cos (a-b)}{2}\]これより
\[\int^\pi_0 \sin nx\ dx = \frac{\pi}{2}\]を得る.
従って,
\[b_n = \frac{\int^{\pi}_0 f(x) \sin nx\ dx}{\int^\pi_0\sin^2 nx\ dx}\]と表現できることがわかる.
Appendix: 奇関数同士の積は偶関数
Theorem
\[\text{奇関数} \times \text{奇関数} = \text{偶関数}\]証明
$f(x), g(x)$が共に奇関数とする. $h(x) = f(x) \cdot g(x)$とすると
\[\begin{align*} h(x) &= f(x) \cdot g(x)\\ &= -f(x) \cdot -g(x)\\ &= f(-x) \cdot g(-x)\\ &= h(-x) \end{align*}\]従って, $h(x)$は偶関数である.
Appendix: Python code for visualization
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import plotly.express as px
import numpy as np
from IPython.display import display, HTML
import plotly
plotly.offline.init_notebook_mode()
display(HTML(
'<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_SVG"></script>'
))
# 定数
def constant_fourier(x, max_n):
y = 1/2
term = 0
while max_n + 1 > term:
y += 2/np.pi * (np.cos((4*term + 1) * x) / (4*term + 1) - np.cos((4*term + 3) * x) / (4*term + 3))
term += 1
return y
## 偶関数
def f_x(x):
if x >= 0 and x < np.pi/2:
return 1
elif x >= np.pi/2 and x < np.pi:
return 0
elif x < 0:
return f_x(-x)
else:
return f_x(x-2*np.pi)
x = np.linspace(-2*np.pi*1.1, 2*np.pi*1.1, 700)
y, y2, y3 = constant_fourier(x, max_n=5), constant_fourier(x, max_n=10), constant_fourier(x, max_n=100)
y4 = np.vectorize(f_x)(x)
fig = px.line(x=x, y=[y, y2, y3, y4],
render_mode='SVG',
title='フーリエ余弦展開例<br><sup>opacity=.6 , n = 5, 10, 100</sup>',
)
newnames = {'wide_variable_0':'n=10',
'wide_variable_1':'n=20',
'wide_variable_2':'n=200',
'wide_variable_3':'true'}
fig.update_traces(opacity=.8)
fig.for_each_trace(lambda t: t.update(name = newnames[t.name],
legendgroup = newnames[t.name],
hovertemplate = t.hovertemplate.replace(t.name, newnames[t.name])
)
)
fig.update_xaxes(tickangle=0,
tickmode = 'array',
tickvals = [-3*np.pi, -2*np.pi, -3/2*np.pi, -np.pi, -1/2*np.pi,
0, 1/2*np.pi, np.pi, 3/2*np.pi, 2*np.pi, 3*np.pi],
ticktext=['$-3\pi$', '$-2\pi$', '', '$-\pi$', '', '0', '', '$\pi$', '', '$2\pi$', '$3\pi$'])
fig.show()
References
(注意:GitHub Accountが必要となります)