Дискретное преобразование Фурье для нечетной функции - PullRequest
0 голосов
/ 12 июня 2018

У меня есть начальная функция u(x,0) = -sin(x), и я хочу вывести коэффициенты БПФ для решения с нечетной четностью в виде u(x,t) = $\sum_{k \geq 1} a_{k} sin (kx)$.Я попытался использовать обычное расширение функции в терминах $\exp{ikx}$, но это добавляет некоторую ошибку в решение.

Может кто-нибудь предложить мне процедуру фильтрации коэффициентов Фурье, которая остается нечетной по всему решению, используя numpy.fft.fft?

1 Ответ

0 голосов
/ 12 июня 2018

Если функция по своей природе нечетна (как функции синуса), то только мнимая часть функции 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

...