Я пытаюсь вычислить производную некоторых данных, и я пытался сравнить вывод конечной разности и вывод спектрального метода. Но результаты очень разные, и я не могу точно понять, почему.
Рассмотрим пример кода ниже
import numpy as np
from scipy import fftpack as sp
from matplotlib import pyplot as plt
x = np.arange(-100,100,1)
y = np.sin(x)
plt.plot(np.diff(y)/np.diff(x))
plt.plot(sp.diff(y))
plt.show()
Это выводит следующий результат:
Оранжевый выход — это выход fftpack
. Не говоря уже о тонкостях, это просто для примера.
Итак, почему они такие разные? Разве они не должны быть (примерно) одинаковыми?
Я почти уверен, что разные амплитуды можно исправить с помощью ключевого слова fftpack.diff
периода, но я не могу понять, какой период является правильным (я думал, что это должен быть period=1
, но это не работает).
Кроме того, как я могу иметь свою собственную спектральную дифференциацию, используя numpy?