4.1 フーリエ級数
周期関数は三角関数の級数(フーリエ級数)で表現できます。
📐 定義: フーリエ級数展開
$$f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n \cos\frac{n\pi x}{L} + b_n \sin\frac{n\pi x}{L} \right)$$ フーリエ係数: $$a_n = \frac{1}{L} \int_{-L}^{L} f(x) \cos\frac{n\pi x}{L} dx$$ $$b_n = \frac{1}{L} \int_{-L}^{L} f(x) \sin\frac{n\pi x}{L} dx$$
$$f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n \cos\frac{n\pi x}{L} + b_n \sin\frac{n\pi x}{L} \right)$$ フーリエ係数: $$a_n = \frac{1}{L} \int_{-L}^{L} f(x) \cos\frac{n\pi x}{L} dx$$ $$b_n = \frac{1}{L} \int_{-L}^{L} f(x) \sin\frac{n\pi x}{L} dx$$
💻 コード例 1: フーリエ級数展開
Python実装: 方形波のフーリエ級数近似
import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate
def fourier_coefficients(f, L, n_max):
"""フーリエ係数の計算"""
a0 = (1/L) * integrate.quad(f, -L, L)[0]
a_n = []
b_n = []
for n in range(1, n_max + 1):
# a_n
integrand_a = lambda x: f(x) * np.cos(n * np.pi * x / L)
a_n.append((1/L) * integrate.quad(integrand_a, -L, L)[0])
# b_n
integrand_b = lambda x: f(x) * np.sin(n * np.pi * x / L)
b_n.append((1/L) * integrate.quad(integrand_b, -L, L)[0])
return a0, np.array(a_n), np.array(b_n)
# テスト関数: 方形波
L = np.pi
def square_wave(x):
return np.where(np.abs(x) < L/2, 1.0, 0.0)
# 可視化省略(元のコード参照)
4.2 フーリエ変換
非周期関数に対しては、フーリエ級数を連続化したフーリエ変換を用います。
📐 定義: フーリエ変換
$$F(\omega) = \mathcal{F}[f(t)] = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt$$ 逆フーリエ変換: $$f(t) = \mathcal{F}^{-1}[F(\omega)] = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i\omega t} d\omega$$
$$F(\omega) = \mathcal{F}[f(t)] = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt$$ 逆フーリエ変換: $$f(t) = \mathcal{F}^{-1}[F(\omega)] = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i\omega t} d\omega$$
4.3 畳み込み定理
フーリエ変換は畳み込み演算を単純な積に変換します。
📐 定理: 畳み込み定理
$$\mathcal{F}[f * g] = \mathcal{F}[f] \cdot \mathcal{F}[g]$$ ここで畳み込み $(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t-\tau) d\tau$
$$\mathcal{F}[f * g] = \mathcal{F}[f] \cdot \mathcal{F}[g]$$ ここで畳み込み $(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t-\tau) d\tau$
4.4 ラプラス変換
ラプラス変換は片側のフーリエ変換を一般化したもので、微分方程式の解法に有用です。
📐 定義: ラプラス変換
$$F(s) = \mathcal{L}[f(t)] = \int_0^{\infty} f(t) e^{-st} dt$$ 主な性質:
$$F(s) = \mathcal{L}[f(t)] = \int_0^{\infty} f(t) e^{-st} dt$$ 主な性質:
- 微分: $\mathcal{L}[f'(t)] = sF(s) - f(0)$
- 積分: $\mathcal{L}\left[\int_0^t f(\tau)d\tau\right] = \frac{F(s)}{s}$
- 畳み込み: $\mathcal{L}[f * g] = F(s) \cdot G(s)$
4.5 逆ラプラス変換と微分方程式
ラプラス変換を使うと、微分方程式を代数方程式に変換できます。
🔬 応用例: 微分方程式の解法
微分方程式: $y'' + 4y' + 3y = e^{-t}$, $y(0) = 0$, $y'(0) = 0$
ラプラス変換により:
$(s^2 + 4s + 3)Y(s) = \frac{1}{s+1}$
解: $Y(s) = \frac{1}{(s+1)^2(s+3)}$
微分方程式: $y'' + 4y' + 3y = e^{-t}$, $y(0) = 0$, $y'(0) = 0$
ラプラス変換により:
$(s^2 + 4s + 3)Y(s) = \frac{1}{s+1}$
解: $Y(s) = \frac{1}{(s+1)^2(s+3)}$
4.6 フーリエ変換の性質
フーリエ変換には様々な有用な性質があります。
📝 主要な性質:
- 時間シフト: $f(t-t_0) \rightarrow e^{-i\omega t_0}F(\omega)$
- スケーリング: $f(at) \rightarrow \frac{1}{|a|}F(\omega/a)$
- 微分: $f'(t) \rightarrow i\omega F(\omega)$
4.7 ウィンドウ関数とスペクトル漏れ
有限長の信号をFFTで解析する際、ウィンドウ関数を使ってスペクトル漏れを抑制します。
📐 定理: ウィンドウ関数の特性
- Rectangular: メインローブ幅最小、サイドローブ大
- Hann: バランスが良い、汎用的
- Blackman: サイドローブ最小、メインローブ幅大
4.8 材料科学への応用: X線回折パターン解析
結晶構造の解析では、実空間の原子配列とフーリエ変換された逆格子空間(回折パターン)が対応します。
🔬 物理的意義:
- 実空間の周期構造 → 逆空間の離散的なブラッグピーク
- 格子定数 $a$ が大きい → ブラッグピーク間隔が小さい
- 結晶サイズが大きい → ブラッグピークがシャープ
📝 章末問題
✏️ 演習問題
- 方形波のフーリエ級数展開を10次まで求め、ギブス現象を観察せよ。
- Gaussian関数 $f(t) = e^{-t^2/(2\sigma^2)}$ のフーリエ変換を計算し、自己双対性を確認せよ。
- 畳み込み定理を使って、2つのローパスフィルタの縦続接続の周波数応答を求めよ。
- ラプラス変換を使って、微分方程式 $y'' + 2y' + 2y = \sin(t)$, $y(0)=0$, $y'(0)=1$ を解け。
まとめ
- フーリエ級数は周期関数を三角関数の和で表現
- フーリエ変換は時間領域と周波数領域を相互変換
- ラプラス変換は微分方程式を代数方程式に変換
- 畳み込み定理により信号処理が効率化
- 材料科学(X線回折)や工学(制御理論)で広範に応用