Skip to content

Commit

Permalink
Update 2025-03-07-FFT의 알고리즘적 이해.md
Browse files Browse the repository at this point in the history
  • Loading branch information
CookieBean authored Mar 9, 2025
1 parent 3205e2f commit 575fd78
Showing 1 changed file with 24 additions and 17 deletions.
41 changes: 24 additions & 17 deletions _posts/2025-03-07-FFT의 알고리즘적 이해.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,12 @@ $$

적당한 $x_0, ..., x_{n-1}$을 구하는것부터 시작하자. 지금은 조금 어색할 수 있지만, 우선 아래와 같이 $x_j$들을 정하자.

> 문자 $i$는 복소수를 표기하는데 사용해야 하므로 인덱스를 $j$로 바꾸었다.
{: .prompt-info}

$$
\begin{equation}
x_j = e^{ij\frac{2\pi}{n}}
x_j = e^{j\frac{2\pi i}{n}}
\end{equation}
$$

Expand All @@ -135,28 +138,31 @@ $$

$$
\begin{equation}
f_{even} = a_{n-2}x^{\frac{n-2}{2}} + a_{n-4}x^{\frac{n-4}{2}} + ... + a_2x + a_0
f_{even}(x) = a_{n-2}x^{\frac{n-2}{2}} + a_{n-4}x^{\frac{n-4}{2}} + ... + a_2x + a_0
\end{equation}
$$
$$
\begin{equation}
f_{odd} = a_{n-1}x^{\frac{n-1}{2}} + a_{n-3}x^{\frac{n-3}{2}} + ... + a_3x + a_1
f_{odd}(x) = a_{n-1}x^{\frac{n-1}{2}} + a_{n-3}x^{\frac{n-3}{2}} + ... + a_3x + a_1
\end{equation}
$$

로 두면 아래를 얻는다.

$$
\begin{equation}
f(e^{ij\frac{2\pi}{n}}) = f_{even}(e^{ij\frac{4\pi}{n}}) + e^{e^{ij\frac{2\pi}{n}}}f_{odd}(e^{ij\frac{4\pi}{n}})
f(e^{\frac{2\pi i}{n}}) = f_{even}(e^{j\frac{4\pi i}{n}}) + e^{j\frac{2\pi i}{n}}f_{odd}(e^{j\frac{4\pi i}{n}})
\end{equation}
$$

따라서, $\frac{n}{2}$차 식인 $f_{even}$과 $f_{odd}$에 대해 $e^{ij\frac{4\pi}{n}}, (j=0, ..., n-1)$의 함수값을 계산하면 원래 $f$의 함수값을 알아낼 수 있다. 여기서 처음 $x_i$를 위처럼 정의한 이유가 등장하는데, $e^{ij\frac{4\pi}{n}}$는 $j$가 $\frac{n}{2}$를 넘어가는 순간 같은값으로 겹치게 된다. 즉,
> 어색하게 보일 수 있지만, 대표적으로 $2^2 = 4$인 예시로 살펴보자. $f(x) = x^3 + 2x^2 + 3x + 4$와 같이 $f(x)$가 정의되어 있다면, 짝수차항인 $2x^2 + 4$와 홀수차항인 $x^3 + 3x$를 나누어서 $f(x) = 2x^2 + 4 + x(x^2 + 3)$으로 쓸 수 있다. 이때, $f_{even}(x) = x+4$, $f_{odd}(x) = x+3$으로 정의하면 위 식은 $f(x) = f_{even}(x^2) + xf_{odd}(x^2)$가 된다. 이와 동일하게 일반적으로 정의한 방식이 위 단락의 방식이다.
{: .prompt-info}

따라서, $\frac{n}{2}$차 식인 $f_{even}$과 $f_{odd}$에 대해 $e^{j\frac{2\pi i}{n}}, (j=0, ..., n-1)$의 함수값을 계산하면 원래 $f$의 함수값을 알아낼 수 있다. 여기서 처음 $x_i$를 위처럼 정의한 이유가 등장하는데, $e^{j\frac{2\pi i}{n}}$는 $j$가 $\frac{n}{2}$를 넘어가는 순간 같은값으로 겹치게 된다. 즉,

$$
\begin{equation}
e^{ij\frac{2\pi}{n}} = e^{i(j+n/2)\frac{2\pi}{n}} = e^{ij\frac{2\pi}{n}} e^{2\pi i} = e^{ij\frac{2\pi}{n}}
e^{j\frac{2\pi i}{n}} = e^{(j+n/2)\frac{2\pi i}{n}} = e^{j\frac{2\pi i}{n}} e^{2\pi i} = e^{j\frac{2\pi i}{n}}
\end{equation}
$$

Expand Down Expand Up @@ -186,10 +192,10 @@ $$
A
=
\begin{bmatrix}
e^{(n-1)\cdot i\frac{2\pi}{n}n} & e^{(n-1)\cdot i\frac{2\pi}{n}(n-1)} & \cdots & 1 \\
e^{(n-2)\cdot i\frac{2\pi}{n}n} & e^{(n-2)\cdot i\frac{2\pi}{n}(n-1)} & \cdots & 1 \\
e^{(n-1)\cdot \frac{2\pi i}{n}n} & e^{(n-1)\cdot \frac{2\pi i}{n}(n-1)} & \cdots & 1 \\
e^{(n-2)\cdot \frac{2\pi i}{n}n} & e^{(n-2)\cdot \frac{2\pi i}{n}(n-1)} & \cdots & 1 \\
\vdots & \vdots & \ddots & \vdots \\
e^{0\cdot i\frac{2\pi}{n}n} & e^{0\cdot i\frac{2\pi}{n}(n-1)} & \cdots & 1
e^{0\cdot \frac{2\pi i}{n}n} & e^{0\cdot \frac{2\pi i}{n}(n-1)} & \cdots & 1
\end{bmatrix}
\end{equation}
$$
Expand All @@ -204,23 +210,23 @@ $$
\end{equation}
$$

에 곱하는것과 마찬가지임은 위 증명과정에서도 등장했다. 이제 행렬 $A$를 거듭제곱한 $B = A^2$의 각 원소를 구해보면 아래와 같다. ($p, q$는 $1$부터 시작)
에 곱하는것과 마찬가지임은 위 증명과정에서도 등장했다. 이제 행렬 $A$를 거듭제곱한 $B = A^2$의 각 원소를 구해보면 아래와 같다.

$$
\begin{equation}
B_{pq} = \sum_{k=0}^{n-1}{A_{pk}A_{kq}} = \sum_{k=0}^{n-1}{e^{(n-p)\cdot i\frac{2\pi}{n}(n-k)}e^{(n-k)\cdot i\frac{2\pi}{n}(n-q)}} = \sum_{k=0}^{n}e^{\frac{2\pi i k}{n}(p+q)}
B_{pq} = \sum_{k=0}^{n-1}{A_{pk}A_{kq}} = \sum_{k=0}^{n-1}{e^{(n-p)\cdot \frac{2\pi i}{n}(n-k)}e^{(n-k)\cdot \frac{2\pi i}{n}(n-q)}} = \sum_{k=0}^{n}e^{\frac{2\pi i}{n}k(p+q)}
\end{equation}
$$

$p + q$가 $n$의 배수인 경우에 등비수열의 합을 잘 계산하면 ($\omega = e^{\frac{2\pi}{n}(p+q)}$)
$p + q$가 $n$의 배수가 아닌 경우에 등비수열의 합을 잘 계산하면 ($\omega = e^{\frac{2\pi}{n}(p+q)}$)

$$
\begin{equation}
B_{pq} = \frac{\omega^n - 1}{\omega - 1} = 0
\end{equation}
$$

한편 $p + q$가 $n$의 배수가 아닌 경우에는
한편 $p + q$가 $n$의 배수인 경우에는

$$
\begin{equation}
Expand All @@ -235,10 +241,11 @@ $$
A^2
=
\begin{bmatrix}
0 & 0 & \cdots & n \\
0 & 0 & \cdots & 0 \\
0 & 0 & \cdots & 0 & n \\
0 & 0 & \cdots & n & 0 \\
\vdots & \vdots & \ddots & \vdots \\
n & 0 & \cdots & 0
0 & n & \cdots & 0 & 0 \\
n & 0 & \cdots & 0 & 0
\end{bmatrix}
\end{equation}
$$
Expand All @@ -263,7 +270,7 @@ $$
\end{equation}
$$

를 얻으므로, 이로부터 계수를 완벽하게 복원해 낼 수 있다.
를 얻으므로, 이로부터 $h(x)$의 계수를 완벽하게 복원해 낼 수 있다.

$$
\begin{equation}
Expand Down

0 comments on commit 575fd78

Please sign in to comment.