"Есть ли практическое применение?" Определенно да, хотя бы для проверки кода и связанных ошибок.
«Теоретически, теория и практика совпадают. На практике они не совпадают». Итак, математически нет, как ответил Мэтт. Потому что (как уже ответили), (с точностью до потенциального коэффициента масштабирования). Однако это может быть полезно в вычислительном отношении, поскольку приведенное выше уравнение обычно реализуется с помощью дискретного преобразования Фурье и его быстрого аватара, FFT.F(F(x(t)))=x(−t)
Первая причина возникает из-за желания проверить, что реализация Фурье, независимо от того, написана ли она вами, кем-то другим или из библиотеки, делает то, что должна делать с вашими данными. Порядок выборки, коэффициенты масштабирования, ограничения на тип ввода (реалистичность, битовая глубина) или длина являются источниками потенциальных последующих ошибок для реализаций Фурье, таких как FFT. Поэтому в качестве проверки работоспособности всегда полезно проверять, что реализованные версии наследуют, хотя бы приблизительно, теоретические свойства. Как вы увидите, как показывает Мачупичу, вы не восстанавливаете реальный реверсированный ввод: часто мнимая часть не точно равна нулю, а реальная часть - это то, что ожидалось, но с небольшой относительной погрешностью из-за несовершенных компьютерных вычислений. (с плавающей точкой) в пределах машинно-зависимого допуска, Это видно по следующей картинке. БПФ применяется дважды к случайному сигналу с 32 выборками и переворачивается. Как видите, ошибка невелика, с использованием поплавков двойной точности.
Если ошибка не относительно мала, то в коде, который вы используете, могут быть ошибки.
Второй относится к огромным объемам данных или большому количеству повторных вычислений БПФ, как с томографией. Там предыдущие небольшие относительные ошибки могут накапливаться и распространяться, и даже вызывать вычислительные расхождения или ошибки, некоторые детали здесь . Это видно по следующей картинке. Для не очень длинного сигнала ( выборок) мы выполняем следующие итерации:
где обозначает БПФ. Показанная цифра является субдискретизированной И мы вычисляем максимальную ошибкуна каждой итерации.Икс01 е 6Икск + 1= R e ( f( ф( ф( ф( хК) ) )))
еМакс | ИксК- х0|
Как видите, порядок величины ошибки изменился из-за размера сигнала. Плюс максимальная ошибка неуклонно увеличивается. После итераций он остается достаточно маленьким. Но вы можете догадаться, что при кубе умножение на умножение на вокселей и миллионах итераций эта ошибка может стать незначительной.10001000 × 1000 × 1000
Ограничение ошибки и оценка ее поведения по итерациям может помочь выявить такое поведение, а затем уменьшить его путем соответствующего определения порога или округления.
Дополнительная информация: