Алгоритм быстрого преобразования Фурье: от Гаусса до Кули-Тьюки
Cooley–Tukey FFT algorithm
Алгоритм быстрого преобразования Фурье (FFT) Cooley-Tukey: принцип работы, снижение вычислительной сложности до O(N log N). Оптимизация DFT и комбинации с другими алгоритмами.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Алгоритм быстрого преобразования Фурье
Fast Fourier Transform algorithm
Алгоритм Кули–Туки, названный в честь Дж. В. Кули и Джона Туки, является наиболее распространенным алгоритмом быстрого преобразования Фурье (FFT). Он представляет дискретное преобразование Фурье (DFT) произвольного составного размера как N1 меньших DFT размеров N2, рекурсивно, чтобы сократить время вычисления до O(N log N) для сильно составных N (гладких чисел). Благодаря важности алгоритма, конкретные варианты и стили реализации получили собственные названия, как описано ниже. Поскольку алгоритм Кули–Туки разбивает DFT на более мелкие DFT, его можно произвольно комбинировать с любым другим алгоритмом для DFT. Например, алгоритм Радера или Блюштейна можно использовать для обработки больших простых множителей, которые не могут быть разложены алгоритмом Кули–Туки, или алгоритм разложения на простые множители можно использовать для повышения эффективности при выделении взаимно простых множителей. Алгоритм, вместе с его рекурсивным применением, был изобретен Карлом Фридрихом Гауссом. Кули и Туки независимо друг от друга заново открыли и популяризировали его 160 лет спустя.
The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re expresses the discrete Fourier transform (DFT) of an arbitrary composite size in terms of N1 smaller DFTs of sizes N2, recursively, to reduce the computation time to O(N log N) for highly composite N (smooth numbers). Because of the algorithm's importance, specific variants and implementation styles have become known by their own names, as described below. Because the Cooley–Tukey algorithm breaks the DFT into smaller DFTs, it can be combined arbitrarily with any other algorithm for the DFT. For example, Rader's or Bluestein's algorithm can be used to handle large prime factors that cannot be decomposed by Cooley–Tukey, or the prime factor algorithm can be exploited for greater efficiency in separating out relatively prime factors. The algorithm, along with its recursive application, was invented by Carl Friedrich Gauss. Cooley and Tukey independently rediscovered and popularized it 160 years later.
История
Этот алгоритм, включая его рекурсивное применение, был изобретен около 1805 года Карлом Фридрихом Гауссом, который использовал его для интерполяции траекторий астероидов Паллада и Юноны, но его работа не получила широкого признания (опубликована лишь посмертно и на неолатинском языке). Гаусс, однако, не анализировал асимптотическую сложность вычислений. Различные ограниченные формы алгоритма также неоднократно открывались заново на протяжении XIX и начала XX веков. По сообщениям, Туки пришел к этой идее во время заседания Научного консультативного комитета при президенте Кеннеди, обсуждавшего способы обнаружения ядерных испытаний в Советском Союзе с использованием сейсмометров, расположенных за пределами страны. Эти датчики генерировали бы сейсмологические временные ряды. Однако анализ этих данных требовал бы быстрых алгоритмов для вычисления дискретного преобразования Фурье (ДПФ) из-за большого количества датчиков и длительности измерений. Эта задача была критически важна для ратификации предлагаемого договора о запрещении ядерных испытаний, чтобы любые нарушения можно было обнаружить без необходимости посещения советских объектов. Другой участник заседания, Ричард Гарвин из IBM, разглядел потенциал метода и познакомил Туки с Кули. Однако Гарвин позаботился о том, чтобы Кули не знал об истинной цели исследования. Вместо этого Кули сообщили, что алгоритм необходим для определения периодичности спиновых ориентаций в трехмерном кристалле гелия-3. Впоследствии Кули и Туки опубликовали совместную статью, и широкое распространение алгоритма последовало незамедлительно благодаря одновременной разработке аналого-цифровых преобразователей, способных выполнять дискретизацию со скоростью до 300 кГц. Тот факт, что Гаусс описал тот же алгоритм (хотя и не анализировал его асимптотическую сложность), был осознан лишь спустя несколько лет после публикации работы Кули и Туки в 1965 году.
This algorithm, including its recursive application, was invented around 1805 by Carl Friedrich Gauss, who used it to interpolate the trajectories of the asteroids Pallas and Juno, but his work was not widely recognized (being published only posthumously and in Neo Latin). Gauss did not analyze the asymptotic computational time, however. Various limited forms were also rediscovered several times throughout the 19th and early 20th centuries. Tukey reportedly came up with the idea during a meeting of President Kennedy's Science Advisory Committee discussing ways to detect nuclear weapon tests in the Soviet Union by employing seismometers located outside the country. These sensors would generate seismological time series. However, analysis of this data would require fast algorithms for computing DFTs due to the number of sensors and length of time. This task was critical for the ratification of the proposed nuclear test ban so that any violations could be detected without need to visit Soviet facilities. Another participant at that meeting, Richard Garwin of IBM, recognized the potential of the method and put Tukey in touch with Cooley. However, Garwin made sure that Cooley did not know the original purpose. Instead, Cooley was told that this was needed to determine periodicities of the spin orientations in a 3 D crystal of helium 3. Cooley and Tukey subsequently published their joint paper, and wide adoption quickly followed due to the simultaneous development of Analog to digital converters capable of sampling at rates up to 300 kHz. The fact that Gauss had described the same algorithm (albeit without analyzing its asymptotic cost) was not realized until several years after Cooley and Tukey's 1965 paper.