Не уверен, почему вы думаете, что вы должны получить аналитическое выражение. DFFT в NUmPy явно асимметричен, и если вы посмотрите на формулу для A k здесь , вы можете ясно увидеть, что для A 0 вы должны получить сумму вход. Кроме того, иметь гауссовский интервал от [-sigma ... sigma] не правильно.
Вот модифицированный пример
import numpy as np
import matplotlib.pyplot as plt
N = 4001
t = np.linspace(-4.0, 4.0, N)
print((t[0], t[2000], t[4000]))
g = np.exp(-t*t)
print(np.sum(g)) # sum of input
h = np.fft.fft(g, norm=None)
print(h[0]) # should be the same as sum of input
и печатает
(-4.0, 0.0, 4.0)
886.2269119018041
(886.226911901804+0j)
Вы можете сделать обратное преобразование и построить его
q = np.fft.ifft(h, norm=None)
plt.plot(t, g, label = "Gauss")
plt.show()
plt.plot(t, np.abs(q), label = "dFFT Gauss")
plt.show()
f = np.fft.fftfreq(N)
plt.plot(f, np.angle(h), f, np.abs(h))
plt.show()
и получите