Численное интегрирование с использованием омега-арифметики в NumPy - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь интегрировать, используя омега-арифметику, следовательно, в частотной области.То, что вы получаете при запуске прикрепленного скрипта, является правильной фазой (сравните «Интегрированный» и «Истинный»), но амплитуда неверна.Таким образом, я предполагаю, что отсутствует некоторая нормализация, но я не вижу, где и как.Это не что-то вроде коэффициента в два раза больше пи.Итак, просто скопируйте и вставьте скрипт, и вы поймете, что я имею в виду.Любая помощь высоко ценится.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...