Дискретное преобразование Фурье для нечетной функции

У меня есть начальная функция 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

Другие вопросы по тегам