Функция преобразование Фурье(DFT) работает не правильно?
def dft(list_of_values):
HEIGHT = max(list(map(lambda x: abs(x), list_of_values)))
MAX_HERZT = len(list_of_values)
total = list()
for hertz in range(1, MAX_HERZT + 1):
interval_total = list()
for values in enumerate(list_of_values):
interval_total.append(values[1] * HEIGHT * math.cos(math.pi * 2 * values[0] / hertz) - values[1] * HEIGHT * math.sin(math.pi * 2 * values[0] / hertz))
total.append(sum(interval_total))
total = list(map(lambda x: x / max(total), total))
g = list()
for i in total:
g.append(i)
g.append(i)
return g
k = 100
b = list()
for i in range(k):
b.append(i)
b.append(i)
b = b[1:] + [k - 1]
a = [random.randint(-1, 1) for i in range(k)]
plot = pg.plot(b, dft(a), fillLevel=0, brush=(0, 214, 0, 100))
plot.plot([0, k], [0, 0], pen=(255, 255, 255))
plot_2 = pg.plot([i for i in range(len(a))], [int(i) for i in np.fft.fft(a)], fillLevel=0, brush=(30, 144, 255))
plot_2.plot([0, k], [0, 0], pen=(255, 255, 255))
app = QtWidgets.QApplication([])
w = QtWidgets.QWidget()
w.resize(1200, 800)
layout = QtWidgets.QGridLayout()
w.setLayout(layout)
layout.addWidget(plot, 0, 0)
layout.addWidget(plot_2, 0, 1)
w.show()
app.exec()
Результат моей функция dft, отличается от результата функции numpy.fft.fft, при одинаковых входных данных. Что я сделал не так