パーセバルの定理シミュレーター 戻る
信号処理シミュレーター

パーセバルの定理 — 時間と周波数のエネルギー保存

離散信号の時間域エネルギーと周波数域エネルギーがDFTで完全に一致することを、正弦・矩形パルス・ガウスの3信号で実時間検証。フーリエ解析の中核となる保存則を直感的に体感できます。

パラメータ設定
信号タイプ(0=正弦 1=矩形パルス 2=ガウス)
振幅 A
周波数 f₀(タイプ0用)
bin
サンプル数 N

既定値(正弦, A=1, f₀=10, N=512)でE_t=E_f=256となり、相対誤差は浮動小数誤差程度(1e-12)です。

計算結果
時間域エネルギー E_t = Σ|x|²
周波数域エネルギー E_f = (1/N)Σ|X|²
相対誤差 |E_t-E_f|/E_t
ピーク周波数 bin
時間信号 x[n] とパワースペクトル |X[k]|²/N

上段:時間信号 x[n](青、横軸 n は先頭200サンプル)/下段:PSD = |X[k]|²/N(赤、横軸 k は 0〜N/2、ピーク強調)

理論・主要公式

パーセバルの定理は、信号のエネルギーが時間領域と周波数領域で保存されることを示す基本定理です。離散信号 x[n](長さ N)について、以下が成り立ちます。

離散フーリエ変換(DFT):

$$X[k] = \sum_{n=0}^{N-1} x[n]\, e^{-j 2\pi k n / N}$$

パーセバルの定理(標準DFT正規化規約):

$$\sum_{n=0}^{N-1} |x[n]|^2 = \frac{1}{N}\sum_{k=0}^{N-1} |X[k]|^2$$

パワースペクトル密度(ペリオドグラム推定):

$$\mathrm{PSD}[k] = \frac{|X[k]|^2}{N}$$

単一周波数の正弦信号 $x[n] = A\cos(2\pi f_0 n / N)$ では、時間域エネルギーは $\sum |x[n]|^2 = N A^2 / 2$ となります($\cos^2$ の平均が 1/2 のため)。

パーセバルの定理シミュレーターとは

🙋
「パーセバルの定理」って名前は教科書で見ましたけど、結局何が嬉しいんですか?式を見ても実感が湧かなくて。
🎓
ざっくり言うと「信号のエネルギーは、時間で測っても、周波数で測っても、絶対に同じ値になる」っていう保証なんだ。シミュレーターの既定値(正弦, A=1, N=512)を見て。E_tが256、E_fも256で、相対誤差がほぼゼロでしょ?$\cos^2$ の平均が 1/2 だから理論値はちょうど $N \cdot A^2 / 2 = 512 \cdot 1 / 2 = 256$。時間と周波数、別々に計算しても完全に一致するのが定理の主張だよ。
🙋
本当だ、E_tもE_fも256ピッタリ!相対誤差が1e-13ぐらいになってます。これって何の誤差ですか?
🎓
それは浮動小数点演算の「丸め誤差」だよ。理論的にはゼロのはずだけど、N回足し算するときに各演算で2⁻⁵²程度の誤差が積もる。逆に言えば、誤差が1e-13というのは「定理が正確に成立している」証拠なんだ。試しに振幅Aを2に変えてみて。E_tもE_fも一緒に約1024(=N·A²/2)に跳ね上がるはず。
🙋
確かに!信号タイプを1(矩形パルス)に変えると、エネルギーがガクッと下がるけど、これも一致してますね。
🎓
矩形パルスは中央 N/8 サンプルだけ A=1、残りが0だから、時間域エネルギーは N/8 = 64 のはず。下のスペクトルを見ると、sinc関数のような広がったスペクトルが出てるでしょ。これを全部足して 1/N したら、ちゃんと64に一致する。信号の形が変わっても、エネルギーの和は時間・周波数で必ず釣り合う——ここがパーセバルの威力なんだ。
🙋
ガウス信号(タイプ2)はもっと滑らかなスペクトルになりますね。実務ではどんな場面で使うんですか?
🎓
代表的なのは振動計測や音響計測だ。例えば加速度センサのデータから「全体の振動エネルギー」を求めたいとき、時間波形を二乗積分しても、FFTしてスペクトル和から計算してもOK。両者が一致するのはパーセバルが保証してるから。さらに「100Hz〜200Hzだけのバンドパワーを取り出したい」というときは、周波数域でその範囲だけ和を取れば良い。これが時間域でバンドパスフィルタした後のエネルギーと一致する——非常に実用的だよ。

よくある質問

DFTの定義には3つの正規化規約があります。(1)順変換にNを付けない非正規化規約:Σ|x|² = (1/N)·Σ|X|²(本ツールが採用)。(2)順変換に1/Nを付ける規約:Σ|x|² = N·Σ|X|²。(3)順変換に1/√Nを付ける対称規約:Σ|x|² = Σ|X|²。NumPyのfftはデフォルトで(1)、MATLABのfftも(1)、SciPyは引数 `norm='ortho'`で(3)に切り替えられます。どの規約でもパーセバルは成立しますが、係数が異なるので実装時は要注意です。
実数信号のDFTには「エルミート対称性」があり、X[N-k] = X[k]*(複素共役)が成り立ちます。したがって|X[k]|² = |X[N-k]|²となり、cos信号のように正の周波数 +f₀ と負の周波数 −f₀ の両方を含む信号は、k=f₀ と k=N-f₀ の2本に対称に現れます。本ツールでは下段グラフを k=0..N/2 のみ表示しているため左半分のピーク(k=10)が見えますが、ピーク bin の特定では同じ値の最初に現れる方を返しています。
厳密には「パワースペクトル」は単一周波数成分の電力 |X[k]|²/N²、「パワースペクトル密度(PSD)」は単位周波数あたりの電力 |X[k]|²/(N·Δf) を指し、Δf=fs/N の場合 |X[k]|²/(N·fs/N) = |X[k]|²/fs となります。エネルギー保存則の文脈では本ツールのように単純に |X[k]|²/N と書くことが多く、これは「正規化されたピリオドグラム」と呼ばれます。物理単位(V²/Hz、g²/Hz)を意識する計測では、サンプリング周波数fsで割って次元を揃える必要があります。
連続信号のパーセバル(Plancherelの定理)は ∫|x(t)|²dt = ∫|X(f)|²df で、積分の形になります。離散信号では積分が総和に置き換わり、DFTの正規化規約に応じて 1/N の係数が現れます。本質は同じ「時間と周波数のエネルギー保存」ですが、有限長離散の場合は「フレーム端の不連続による漏れ」の影響を受けます。ただしパーセバル自体は厳密に成立し、漏れがあっても全エネルギーは時間域と周波数域で一致します(漏れは「特定bin」での誤差で、総和では消えます)。

実世界での応用

振動・音響計測:機械の状態監視や音響レベル測定では、加速度センサやマイクから得た時系列を二乗積分して「全RMS値」を求めるか、FFTしてスペクトル和から計算するか、どちらでも同じ値が得られます。パーセバルの定理はこの2つの計算手順の一貫性を保証します。さらに、オクターブバンド分析(1/3オクターブ等)では特定の周波数帯のエネルギーのみを抽出して評価しますが、これは周波数域でbin和を取る操作に対応します。

通信システムのSNR評価:無線通信や光通信では、信号電力Sと雑音電力Nの比(SNR)を測定します。これはまさにパーセバルの応用で、時間波形の二乗平均から全電力を求め、スペクトル上で信号帯域と雑音帯域を分離してそれぞれの電力を計算する——両者は等価です。MATLABの `snr()` 関数や NumPyのスペクトル解析は内部でこの原理を使っています。

画像処理・圧縮:JPEG/MPEG等の画像圧縮では、画像を周波数領域(DCT、DFT)に変換してから情報量の少ない高周波成分を切り捨てます。このとき「どの周波数成分にどれだけのエネルギーが含まれるか」をPSDで評価し、低エネルギー成分を優先的に削除します。Wiener-Khinchinの定理と組み合わせて、自己相関の強い(=PSDが集中した)信号ほど高い圧縮率が達成できます。

量子力学の確率解釈:パーセバルの定理は数学的にはユニタリ変換のノルム保存則です。量子力学では波動関数 ψ(x) の確率密度 |ψ(x)|² と運動量空間表示 φ(p) の |φ(p)|² が ∫|ψ|²dx = ∫|φ|²dp を満たします。これは位置空間と運動量空間のどちらで確率を計算しても「全確率=1」が保たれることを保証する、量子論の根本的な性質です。

よくある誤解と注意点

最も多い誤解は、「正規化定数 1/N を忘れる」ことです。NumPyやMATLABの `fft()` は非正規化規約(順変換にNを付けない)を採用しているため、生のスペクトル和 Σ|X[k]|² は時間域エネルギーの N 倍になります。エネルギー保存則を確認するには必ず 1/N で割る必要があります。逆に SciPy で `norm='ortho'` オプションを使うと対称規約になり、Σ|X[k]|² がそのまま時間域エネルギーに一致します。実装ライブラリのドキュメントを必ず確認してください。

次に多いのが、「ピリオドグラム(生のPSD)の統計的不安定性を考慮しない」こと。本ツールが表示している PSD[k] = |X[k]|²/N はあくまで1フレームの推定で、ランダム雑音に対しては分散が大きく、PSDの値が真の値の周りでバラつきます。実務では、信号を複数フレームに分けてオーバーラップ平均する「Welch法」、重複なし平均の「Bartlett法」、自己回帰モデルを当てはめる「AR法」などを使って、推定の分散を減らします。パーセバル自体はどの推定法でも厳密に成立しますが、個々のbinの値の信頼性は別問題です。

最後に、「漏れスペクトルがあるとパーセバルが破れる」と誤解すること。窓関数を使わない(=矩形窓を使う)DFTでは、信号周波数が整数bin に乗らないと「漏れスペクトル」が広く分布します。これは特定の周波数 bin での値が真の電力からずれる現象ですが、全周波数 bin の総和を取ると依然として時間域エネルギーと一致します(パーセバルは厳密に成立)。本ツールで f₀=10.5 のような非整数を入れることはできませんが、信号タイプを「ガウス」にすると広いスペクトルになっても E_t = E_f が成立する様子が観察できます。