Быстрое преобразование Фурье — различия между версиями
(→Алгоритм построения БПФ) |
(→Алгоритм построения обратного БПФ) |
||
Строка 57: | Строка 57: | ||
Рассмотрим ДПФ в матричном виде: | Рассмотрим ДПФ в матричном виде: | ||
+ | <center> | ||
<tex> | <tex> | ||
\begin{pmatrix} | \begin{pmatrix} | ||
Строка 80: | Строка 81: | ||
y_{n-1} | y_{n-1} | ||
\end{pmatrix} | \end{pmatrix} | ||
− | </tex> | + | </tex></center> |
Отсюда можно найти вектор <tex>(a_0, a_1, \ldots ,a_{n-1}</tex>, умножив вектор <tex>(y_0, y_1, \ldots ,y_{n-1})</tex> на матрицу обратную матрице Вандермонда (матрица слева). | Отсюда можно найти вектор <tex>(a_0, a_1, \ldots ,a_{n-1}</tex>, умножив вектор <tex>(y_0, y_1, \ldots ,y_{n-1})</tex> на матрицу обратную матрице Вандермонда (матрица слева). | ||
− | <tex> | + | <center><tex> |
\begin{pmatrix} | \begin{pmatrix} | ||
a_0 \\ | a_0 \\ | ||
Строка 107: | Строка 108: | ||
y_{n-1} | y_{n-1} | ||
\end{pmatrix} | \end{pmatrix} | ||
− | </tex> | + | </tex></center> |
Непосредственной проверкой можно убедиться, что обратная матрица имеет вид: | Непосредственной проверкой можно убедиться, что обратная матрица имеет вид: | ||
− | <tex> | + | <center><tex> |
\dfrac{1}{n} | \dfrac{1}{n} | ||
\begin{pmatrix} | \begin{pmatrix} | ||
Строка 120: | Строка 121: | ||
\omega_n^0 & \omega_n^{-(n-1)} & \omega_n^{-2(n-1)} &\ldots & \omega_n^{-(n-1)(n-1)} | \omega_n^0 & \omega_n^{-(n-1)} & \omega_n^{-2(n-1)} &\ldots & \omega_n^{-(n-1)(n-1)} | ||
\end{pmatrix} | \end{pmatrix} | ||
− | </tex> | + | </tex></center> |
Получаем формулу для <tex>a_k</tex>: | Получаем формулу для <tex>a_k</tex>: | ||
− | <tex>a_k = \dfrac{1}{n}\sum \limits_{j=0}^{n-1} {y_j \omega_n^{kj}} </tex> | + | <center><tex>a_k = \dfrac{1}{n}\sum \limits_{j=0}^{n-1} {y_j \omega_n^{kj}} </tex></center> |
== См. также == | == См. также == |
Версия 19:43, 4 декабря 2016
Определение: |
Быстрое преобразование Фурье (англ. Fast Fourier Transform (FFT)) — это метод, позволяющий вычислять дискретное преобразование Фурье за время | .
Содержание
Описание задачи
Задача: |
Необходимо научиться вычислять прямое и обратное дискретное преобразование Фурье многочлена | степени за время .
Метод основывается на том, что степени одних комплексных корней единицы в степени дают другие.
Идея заключается в том, что сначала мы разделяем вектор коэффициентов на два вектора, рекурсивно вычисляем значение ДПФ для них, и объединяем их в одно ДПФ.
Алгоритм построения БПФ
Пусть имеется многочлен
степени , где . Если не является степенью двойки, добавим недостающие члены и положим коэффициенты равными нулю.Разделим
на два многочлена, где один будет с четными, а другой с нечетными коэффициентами:
Многочлен
получается из и следующим образом:
Мы разбили исходный многочлен на два многочлена, имеющих вдвое меньшую степень. Нам необходимо по вычисленным и за линейное время вычислить . Так как здесь используется идея "разделяй и властвуй", то асимптотическая оценка будет .
Пусть
и . Найдем вектор значений .- Из получаем значения для первой половины коэффициентов:
- Для второй половины получаем:
Заметим, что
, тогда:Таким образом, мы получили:
Алгоритм построения обратного БПФ
Пусть вектор
— значения многочлена степени в точках . Необходимо, по данному вектору восстановить коэффициенты многочлена.Рассмотрим ДПФ в матричном виде:
Отсюда можно найти вектор
, умножив вектор на матрицу обратную матрице Вандермонда (матрица слева).Непосредственной проверкой можно убедиться, что обратная матрица имеет вид:
Получаем формулу для
: