Функция преобразования Фурье в Sympy возвращает неожиданный результат
Я думаю, что Симпи делает ошибку в вычислении преобразования Фурье функции триггера. Например:
from sympy import fourier_transform, sin
from sympy.abc import x, k
print fourier_transform(sin(x), x, k)
Ожидаемый ответ через Mathematica
но Sympy возвращает 0. Иногда функция работает очень хорошо, так как fourier_transform(Heaviside(t)*cos(t),t,omega)
а также fourier_transform(Heaviside(t)*sin(t),t,omega)
верните правильный ответ. Я думаю, что Симпи, возможно, использует преобразование Лапласа для вычисления преобразования Фурье.
2 ответа
SymPy вычисляет преобразование Фурье, буквально вычисляя интеграл. Я бы посчитал это ошибкой, поэтому не стесняйтесь открывать для нее проблему.
Можете добавить noconds=False
к процедурам преобразования, чтобы найти, при каких условиях интеграл преобразования сходится. Как говорит asmeurer, мы буквально вычисляем определяющий интеграл, поэтому вы никогда не увидите появления дельта-функций. В случае преобразования Фурье cos
условия - это запутанный способ сказать "никогда", который, к сожалению, симпит не признает. (Т.е. алгоритм говорит что-то вроде "интеграл равен нулю, если бла", и бла никогда не выполняется.)
Для преобразования Фурье ступенчатой функции условия, по-видимому, говорят, что это работает, если z имеет отрицательный аргумент (угол), не слишком большой. Обратите внимание, что это действительно, когда интеграл преобразования сходится (b/c вам нужно подобрать падающий экспоненциальный член по положительным реалам). У меня нет времени думать о правильности вычислений в этом случае.