Функция преобразования Фурье в 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 вам нужно подобрать падающий экспоненциальный член по положительным реалам). У меня нет времени думать о правильности вычислений в этом случае.

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