Я пытаюсь интегрировать, используя омега-арифметику, следовательно, в частотной области.То, что вы получаете при запуске прикрепленного скрипта, является правильной фазой (сравните «Интегрированный» и «Истинный»), но амплитуда неверна.Таким образом, я предполагаю, что отсутствует некоторая нормализация, но я не вижу, где и как.Это не что-то вроде коэффициента в два раза больше пи.Итак, просто скопируйте и вставьте скрипт, и вы поймете, что я имею в виду.Любая помощь высоко ценится.
import numpy as num
import matplotlib.pyplot as plt
# generate data
nsamples = 1000
deltat = 1.
f = 8
xin = f * 2.*num.pi*num.arange(nsamples)/float(nsamples)
x = num.sin(xin)
# frequency vector (i-omega)
w = num.fft.rfftfreq(nsamples, d=deltat)
iw = 1.j * w * 2. * num.pi
xfft = num.fft.rfft(x)
# experimenting with fftshift
# xfft = num.fft.fftshift(xfft)
# integration
with num.errstate(divide="ignore", invalid="ignore"):
xfft /= iw
# remove zero-frequency (DC) component
xfft[0] = 0.
# fft shift experimenting
# xfft = num.fft.ifftshift(xfft)
y = num.fft.irfft(xfft)
plt.figure()
plt.plot(x, label='input')
plt.plot(y, label='integrated')
plt.plot(-num.cos(xin), label='True')
plt.legend()
plt.show()