Как сказал @Cris Luengo, вам нужно взглянуть на шкалу оси Y, чтобы точно сравнить два графика.Еще один способ сделать это - отобразить обе вещи, которые вы пытаетесь сравнить, на одном и том же рисунке, как я сделал ниже.
Величина БПФ отображается с использованием логарифмической шкалы, иСовершенно очевидно, что использование меньшего числа значащих пи действительно приводит к снижению точности результата.Большинство значений не точно равны нулю, как и следовало ожидать при использовании чисел с плавающей запятой, но использование более значимых цифр дает улучшение на много порядков, что не сразу видно, когда БПФ отображаются отдельно.
используемый код:
import numpy as np
import matplotlib.pyplot as plt
t1 = np.arange(0., 1., .01)
values = {
'low':6.28318,
'higher':6.283185307179586,
'highest':2*numpy.pi,
}
styles = {
'low':'-',
'higher':'-',
'highest':'.-'
}
fig, ax_list = plt.subplots(3,1)
for name, tau in values.items():
y1 = np.sin(tau*5.*t1)
ffty = np.fft.fft(y1)
ax_list[0].plot(t1,y1, styles[name], label=name)
ax_list[1].plot(abs(ffty.real), styles[name],label=name)
ax_list[2].plot(abs(ffty.imag), styles[name], label=name)
[ax.legend() for ax in ax_list]
ax_list[0].set_title('time domain')
ax_list[1].set_title('real part')
ax_list[2].set_title('imaginary part')
ax_list[1].set_yscale('log')
ax_list[2].set_yscale('log')
plt.draw()