Fourier transform: примеры (PYTHON)

Преобразование Фурье в Python: символьный анализ с fourier_transform
Раздел: SciPy, Обработка сигналов
fourier_transform(x, n, axis, norm, overwrite_x, workers): ndarray

Основные сведения о функции fourier_transform

Функция fourier_transform обычно применяется для вычисления непрерывного преобразования Фурье в библиотеке SymPy, предназначенной для символьной математики. Она позволяет аналитически получать частотные представления сигналов и функций. Основное применение включает анализ систем, обработку сигналов и решение дифференциальных уравнений.

Синтаксис: fourier_transform(f, t, omega)

Параметры:

  • f – выражение (функция времени t), которое преобразуется
  • t – переменная времени (исходная область)
  • omega – частотная переменная (целевая область)

Дополнительные параметры: noconds (логический, управляет выводом условий сходимости), simplify (функция упрощения результата).

Возвращаемое значение: кортеж (F, cond), где F – преобразование Фурье, cond – условия абсолютной сходимости (если noconds=False).

Примеры использования fourier_transform

Пример 1: Преобразование прямоугольного импульса

import sympy as sp
t, omega = sp.symbols('t omega', real=True)
a = sp.symbols('a', positive=True)
f = sp.Heaviside(t + a) - sp.Heaviside(t - a)
F = sp.fourier_transform(f, t, omega)
F
(2*sin(a*omega)/omega, Abs(omega) < oo)

Пример 2: Преобразование гауссовой функции с параметрами

sigma = sp.symbols('sigma', positive=True)
f = sp.exp(-t**2/(2*sigma**2))
F = sp.fourier_transform(f, t, omega, noconds=True)
sp.simplify(F)
sqrt(2)*sqrt(pi)*sigma*exp(-omega**2*sigma**2/2)

Похожие функции в Python

numpy.fft.fft – реализация быстрого преобразования Фурье (БПФ) для дискретных данных. Используется для численных вычислений с массивами. Предпочтительнее в задачах обработки реальных сигналов.

scipy.fft.fft – расширенная версия БПФ из SciPy с дополнительными возможностями (нормализация, работа с многомерными массивами).

sympy.integrals.transforms.inverse_fourier_transform – обратное преобразование Фурье в SymPy для возврата к временной области.

Аналоги в других языках программирования

JavaScript (библиотека math.js):

const math = require('mathjs');
const expr = 'exp(-t^2/(2*sigma^2))';
const result = math.fourier(expr, 't', 'omega');

MATLAB/Octave: встроенная функция fourier для символьных вычислений.

Java (Apache Commons Math): класс FastFourierTransformer работает с дискретными данными.

C# (MathNet.Numerics): методы Fourier.Forward и Fourier.Inverse для численного БПФ.

Типичные ошибки при использовании

Ошибка 1: Неопределенные символы без условий

t, omega = sp.symbols('t omega')
f = sp.exp(-sp.abs(t))
F = sp.fourier_transform(f, t, omega)
Приводит к сложному результату с условиями, если не заданы свойства символов.

Ошибка 2: Функции без аналитического преобразования

f = sp.sin(t**2)  
F = sp.fourier_transform(f, t, omega)
Возвращает выражение с невычисленным интегралом, так как преобразование может не существовать в закрытой форме.

Изменения в последних версиях

В SymPy 1.12 улучшена обработка условий сходимости для преобразований. Добавлена поддержка дополнительных упрощающих функций через параметр simplify. В SymPy 1.10 исправлены ошибки с преобразованием обобщенных функций (например, дельта-функции Дирака).

Расширенные примеры применения

Пример 1: Преобразование производной функции

Пример python
f = sp.sin(t)*sp.exp(-t**2)
F = sp.fourier_transform(sp.diff(f, t), t, omega, noconds=True)
sp.simplify(F)
-I*omega*sqrt(pi)*exp(-omega**2/4)*sinh(omega/2)

Пример 2: Использование с обобщенными функциями

Пример python
f = sp.DiracDelta(t - 3)
F = sp.fourier_transform(f, t, omega)
F
(exp(-3*I*omega), Abs(omega) < oo)

Пример 3: Свертка через преобразование Фурье

Пример python
f = sp.exp(-t**2)
g = sp.exp(-2*t**2)
F = sp.fourier_transform(f, t, omega, noconds=True)
G = sp.fourier_transform(g, t, omega, noconds=True)
sp.inverse_fourier_transform(F*G, omega, t, noconds=True)
sqrt(6)*exp(-3*t**2/2)/3

питон fourier_transform function comments

En
Fourier transform Compute Fourier transform (example from scipy)