Дискретное преобразование Фурье для нечетной функции
У меня есть начальная функция u(x,0) = -sin(x)
и я хочу вывести коэффициенты БПФ для решения с нечетной четностью в виде u(x,t) = $\sum_{k \geq 1} a_{k} sin (kx)$
, Я попытался использовать нормальное расширение функции с точки зрения $\exp{ikx}$
но это добавляет некоторую ошибку к решению.
Может ли кто-нибудь предложить мне процедуру фильтрации коэффициентов Фурье, которая остается нечетной по всему решению, используя numpy.fft.fft
?
1 ответ
Если функция по своей природе нечетна (как функции синуса), то только мнимая часть fft
Функция будет отлична от нуля. Я думаю, что ваша проблема в том, что ваша функция не является периодической, как должно быть, вы должны исключить последний пункт:
import numpy as np
x=np.linspace(-np.pi,np.pi,50,endpoint=False)
y=-np.sin(x)
yf=np.fft.fft(y)
even_part=yf.real
odd_part=yf.imag
Здесь только odd_part[1]
ненулевой Если ваша функция не странная и вы хотите ее принудительно использовать, вы можете использовать sdt
как я уже упоминал в комментариях, или добавьте обратную функцию в левой части, затем используйте fft
,
Еще один момент: если ваш ввод не сложный, то он быстрее и эффективнее в использовании rfft