길이 L인 주기 영역의 균일 격자 N점에서 주어진 실수 장 uj의 에너지 스펙트럼을 계산한다. 학습된 시뮬레이터가 작은 규모를 뭉개는지(고파수 에너지 부족) 또는 비물리적 진동을 만드는지(고파수 에너지 과잉)를 보는 기본 지표다.
이산 Fourier 계수를 u^m=N1∑juje−2πijm/N으로 정의한다(np.fft.rfft(u) / N). 함수 energy_spectrum(u, L)을 완성해 (k, E)를 반환한다.
k: shape (N//2 + 1,), 파수 km=2πm/L, m=0,1,…,N/2
E: shape (N//2 + 1,), 모드 m이 담는 에너지
E0=21∣u^0∣2,Em=∣u^m∣2 (0<m<N/2),EN/2=21∣u^N/2∣2 (N 짝수).
0<m<N/2에서 계수가 두 배인 것은 음의 파수 −m의 몫을 합쳤기 때문이다. 이렇게 정의하면 Parseval 등식
m∑Em=N1j∑2uj2
이 성립한다. 우변은 격자점 평균 운동에너지다. N은 짝수라고 가정한다.
테스트는 다음을 확인한다.
- 무작위 장에서 Parseval 등식이 성립한다.
- u=Asin(3⋅2πx/L)이면 에너지가 m=3 하나에 모이고 그 값은 A2/4이다.
- 상수 장 u=c이면 E0=c2/2이고 나머지는 0이다.
- L=2π이면 파수가 정수 0,1,…,N/2이다.