フーリエ解析
Important
この章を読む前に
この章を読むには、以下の章を先に読んでおく必要があります。
物理学や工学において、信号を周波数成分に分解するフーリエ解析 (Fourier Analysis) は欠かせないツールです。
フーリエ解析とは
複雑な波動や時間信号を、単純な正弦波(サイン・コサイン)の重ね合わせとして表現する手法です。これにより、時間領域(Time Domain)では見えにくかった信号の特徴を、周波数領域(Frequency Domain)で明確に捉えることができます。
物理学における応用例:
- 波動の解析: 音波、光、地震波などのスペクトル分析。
- 量子力学: 座標表現と運動量表現の間の変換。
- 微分方程式の解法: フーリエ変換を用いることで、偏微分方程式を代数方程式に変換して解くことができます。
- ノイズ除去: 特定の周波数成分をカットするフィルタリング。
本章の構成
-
離散フーリエ変換の基礎 有限個のデータ点に対して定義される離散フーリエ変換 (DFT) の定義と、その直接的な計算方法を学びます。
-
高速フーリエ変換 (FFT) 計算量を劇的に削減する高速フーリエ変換 (FFT) アルゴリズムの原理と、Rustでの実装・ライブラリの利用方法について学びます。
-
スペクトル解析 実際の信号データに対してFFTを適用し、パワースペクトルの計算や窓関数の重要性について実践的に学びます。
作業テーマ
作業ディレクトリは ~/rust-computational-physics-work/ からの相対パスです。
ユニットテストで確認する具体的なケースは、解析解、境界条件、許容誤差の観点からAI coding agentと相談して決めます。
| テーマ | 作業ディレクトリ | 構造化するコード | ユニットテスト演習 | 拡張演習 |
|---|---|---|---|---|
| DFTの基礎 | fourier/dft-basics | dft, idft, complex_exp | impulseや定数列のDFTを確認する | DFTとIDFTの往復誤差を出力する |
| FFT | fourier/fft | run_fft, check_power_of_two, normalize | 小さい入力でDFTとFFTを比較する | 入力サイズごとの実行時間をCSVに出力する |
| スペクトル解析 | fourier/spectral-analysis | frequency_axis, power_spectrum, window | 既知周波数の正弦波でピーク位置を確認する | 窓関数の有無を比較する |
検証と実装の観点
フーリエ解析では、配列の長さ、正規化、周波数軸の定義が少しずれるだけで、 見た目は似ていても意味の異なる結果になります。
- 周波数が既知の正弦波を入力し、ピーク位置と振幅の正規化を確認する。
- DFTとFFTの結果を、小さい入力で比較する。
- 逆変換を使う場合は、元の信号に戻るかを許容誤差つきで確認する。
- sample数、sampling interval、window、正規化規約をmetadataとして残す。