2013. 12. 6. 01:39 Mathematics
Continuously Updated Fourier Series
오늘 퓨리에 급수에 대해 생각하다가 특정 구간에 대해서만 급수전개를 하되 '그 구간이 계속 움직인다면 어떨까?'란 생각을 떠올렸다. 조금만 계산을 하면 유도할 수 있으니 누군가는 했겠지 하고 찾아봤는데 의외로 이 생각을 하는 사람이 별로 없는 모양이다. 하긴 이렇게 연속적으로 들어오는 신호를 변환할 때는 라플라스 변환을 쓰는 것이 일반적이긴 하다. 찾은 관련 내용은 특허 하나와 논문 두 개. 특허는 73년이고, 논문은 99년과 01년에 나온 상당히 최근의 내용.
http://www.google.com/patents/US3778606
http://www.sciencedirect.com/science/article/pii/S0165168498002096
http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=913845
위의 내용은 이산퓨리에변환(Discrete Fourier Transform)에 해당하는 내용이라 연속적인 경우에 대해서는 다루지는 않고 있다. 연속적인 경우를 다루기 위해 다음과 같은 '샘플링 구간을 한정지은 함수'를 정의하자.
\text{For a function }f\text{ defined on the real line, define}
\\\text{the restriction (or the sample) of }f\text{ as;}
\\\\f:\mathbb{R}\to\mathbb{R}
\\f_{\tau,T}:[0,\tau ]\to\mathbb{R}
\\f_{\tau,T}(x)=f(x+T)
\\\\\tau\text{ gives the length of the sample, and }T\text{ gives the}
\\\text{starting point of the sample.}
그리고 다들 대학 2학년때 지옥을 맛보는 공학수학 시간에 하는 것처럼 신나게 퓨리에 급수를 구한다. 따로 유도과정은 안 적겠다. 그런건 위키백과에도 잘 나오니까.
\text{The Fourier series of }f_{\tau,T}\text{ is given as follows:}
\\\\f_{\tau,T}(x)=a_0+\sum_n \left[a_n\cos(\frac{2n\pi}{\tau}x)+b_n\sin(\frac{2n\pi}{\tau}x)\right]
\\\\a_0(\tau,T)=\frac1\tau \int_0^\tau f_{\tau,T}(x)dx
\\a_n(\tau,T)=\frac2\tau \int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx
\\b_n(\tau,T)=\frac2\tau \int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx
이제 할 일은 간단하다. 구간이 계속 움직이는 경우(T가 계속 변하는 경우) 각 급수 성분은 어떻게 변하게 될까? 편미분을 쓰자.
\text{To update the series for continuously changing }T\text{,}
\\\text{just calculate the derivatives with respect to }T:
\\\\\frac{\partial}{\partial T}a_0(\tau,T)=\frac1\tau \frac{\partial}{\partial T}\int_0^\tau f_{\tau,T}(x)dx
\\=\frac1\tau \frac{\partial}{\partial T}\int_T^{T+\tau} f(x)dx=\frac1\tau\left[f(T+\tau)-f(T) \right ]
\\\frac{\partial}{\partial T}a_n(\tau,T)=\frac2\tau \frac{\partial}{\partial T}\int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \frac{\partial}{\partial T}\int_0^\tau f(x+T)\cos(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \int_0^\tau f'(x+T)\cos(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \left[ \left f(x+T)\cos(\frac{2n\pi}{\tau}x)\right|_0^\tau -\int_0^\tau f(x+T)\left[\cos(\frac{2n\pi}{\tau}x)\right]' dx \right]
\\=\frac2\tau \left[ f(T+\tau)-f(T)+\frac{2n\pi}{\tau}\int_0^\tau f(x+T)\sin(\frac{2n\pi}{\tau}x)dx \right]
\\\\=\frac2\tau \left[ f(T+\tau)-f(T)\right]+\frac{2n\pi}{\tau}b_n
\\\frac{\partial}{\partial T}b_n(\tau,T)=\frac2\tau \frac{\partial}{\partial T}\int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \frac{\partial}{\partial T}\int_0^\tau f(x+T)\sin(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \int_0^\tau f'(x+T)\sin(\frac{2n\pi}{\tau}x)dx
\\=\frac2\tau \left[ \left f(x+T)\sin(\frac{2n\pi}{\tau}x)\right|_0^\tau -\int_0^\tau f(x+T)\left[\sin(\frac{2n\pi}{\tau}x)\right]' dx \right]
\\=\frac2\tau \left[-\frac{2n\pi}{\tau}\int_0^\tau f(x+T)\cos(\frac{2n\pi}{\tau}x)dx \right]
\\\\=-\frac{2n\pi}{\tau}a_n
만약 주기가 그대로 맞아 떨어진다면 예상하는 것과 같이 단순히 위상만 변하는 식을 얻게 된다.
\text{If }f(x+\tau)=f(x)\text{ for }\forall x\text{, the above equations}
\\\text{are simplified and shows the phase dependence of Fourier series.}
\\\\\frac{\partial}{\partial T}a_n(\tau,T)=\frac{2n\pi}{\tau}b_n
\\\frac{\partial}{\partial T}b_n(\tau,T)=-\frac{2n\pi}{\tau}a_n
\\\\\therefore a_n(\tau,T)=A\sin(\frac{2n\pi}{\tau}T +\delta)
\\b_n(\tau,T)=A\cos(\frac{2n\pi}{\tau}T +\delta)
여기까지는 샘플링 구간을 움직일 때 해당하는 내용. 그렇다면 샘플링 구간을 확장시킬 때 새로운 정보를 어떻게 반영해야 할까? 이건 샘플링 구간의 길이에 대해 편미분하면 된다.
\text{To update the series for newly obtained information at}
\\T+\tau\text{, just calculate the derivatives with respect to }\tau:
\\\\\frac{\partial}{\partial\tau}a_0(\tau,T)=\frac{\partial}{\partial\tau}\left[\frac1\tau \int_0^\tau f_{\tau,T}(x)dx\right]
\\=-\frac1{\tau^2} \int_0^\tau f_{\tau,T}(x)dx+\frac1\tau \frac{\partial}{\partial\tau}\int_T^{T+\tau} f(x)dx
\\=\frac1\tau\left[f(T+\tau)-a_0\right]
\\\frac{\partial}{\partial\tau}a_n(\tau,T)=\frac{\partial}{\partial\tau}\left[\frac2\tau \int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx\right]
\\=-\frac2{\tau^2} \int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx+\frac2\tau \frac{\partial}{\partial\tau}\left[\int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx\right]
\\=-\frac{a_n}{\tau}+\frac2\tau \frac{\partial}{\partial\tau}\int_0^\tau f(x+T)\cos(\frac{2n\pi}{\tau}x)dx
\\=-\frac{a_n}{\tau}+\frac2\tau \left f(x+T)\cos(\frac{2n\pi}{\tau}x)\right|_{x=\tau}+\frac2\tau \int_0^\tau f(x+T)\frac{\partial}{\partial\tau}\cos(\frac{2n\pi}{\tau}x)dx
\\=-\frac{a_n}{\tau}+\frac{2f(T+\tau)}\tau+\frac{2n\pi}{\tau^2}\frac2\tau\int_0^\tau f(x+T)\sin(\frac{2n\pi}{\tau}x)dx
\\=\frac1\tau\left[ 2f(T+\tau)-a_n+\frac{2n\pi}\tau b_n\right ]
\\\frac{\partial}{\partial\tau}b_n(\tau,T)=\frac{\partial}{\partial\tau}\left[\frac2\tau \int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx\right]
\\=-\frac2{\tau^2} \int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx+\frac2\tau \frac{\partial}{\partial\tau}\left[\int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx\right]
\\=-\frac{b_n}{\tau}+\frac2\tau \frac{\partial}{\partial\tau}\int_0^\tau f(x+T)\sin(\frac{2n\pi}{\tau}x)dx
\\=-\frac{b_n}{\tau}+\frac2\tau \left f(x+T)\sin(\frac{2n\pi}{\tau}x)\right|_{x=\tau}+\frac2\tau \int_0^\tau f(x+T)\frac{\partial}{\partial\tau}\sin(\frac{2n\pi}{\tau}x)dx
\\=-\frac{a_n}{\tau}-\frac{2n\pi}{\tau^2}\frac2\tau\int_0^\tau f(x+T)\cos(\frac{2n\pi}{\tau}x)dx
\\=-\frac1\tau\left[b_n+\frac{2n\pi}\tau a_n\right ]
정리해보면 다음과 같은 관계식을 얻는다.
\text{For a function }f\text{ defined on the real line, its sample}
\\f_{\tau,T}\text{ - which has }\tau\text{ as the length and }T\text{ as the starting point - }
\\\text{has the following properties.}
\\\\f_{\tau,T}(x)=f(x+T)
\\f_{\tau,T}(x)=a_0+\sum_n \left[a_n\cos(\frac{2n\pi}{\tau}x)+b_n\sin(\frac{2n\pi}{\tau}x)\right]
\\a_0(\tau,T)=\frac1\tau \int_0^\tau f_{\tau,T}(x)dx
\\a_n(\tau,T)=\frac2\tau \int_0^\tau f_{\tau,T}(x)\cos(\frac{2n\pi}{\tau}x)dx
\\b_n(\tau,T)=\frac2\tau \int_0^\tau f_{\tau,T}(x)\sin(\frac{2n\pi}{\tau}x)dx
\\\frac{\partial}{\partial T}a_0(\tau,T)=\frac1\tau\left[f(T+\tau)-f(T) \right ]
\\\frac{\partial}{\partial T}a_n(\tau,T)=\frac2\tau \left[ f(T+\tau)-f(T)\right]+\frac{2n\pi}{\tau}b_n
\\\frac{\partial}{\partial T}b_n(\tau,T)=-\frac{2n\pi}{\tau}a_n
\\\frac{\partial}{\partial\tau}a_0(\tau,T)=\frac1\tau\left[f(T+\tau)-a_0\right]
\\\frac{\partial}{\partial\tau}a_n(\tau,T)=\frac1\tau\left[ 2f(T+\tau)-a_n+\frac{2n\pi}\tau b_n\right ]
\\\frac{\partial}{\partial\tau}b_n(\tau,T)=-\frac1\tau\left[b_n+\frac{2n\pi}\tau a_n\right ]
쓸만한 곳이 있는지는 모르겠는데 일단 실시간 퓨리에 변환에 유리하고(FFT를 한 샘플 버리고 한 샘플 채취할 때마다 행하는 것보다 위의 방법으로 업데이트 하는 방식이 더 빠르다. 전자는 N logN인데 이 경우엔 N 정도-위에서 언급한 논문에도 나와 있다.), 또 한 가지 쓸모를 생각해 본다면 FFT에서 생기는 샘플 갯수에 대한 제한 문제를 비껴나갈 방법이 될 지도 모르겠다는 것. FFT를 쓰려면 데이터의 개수가 2^N의 꼴로 나와야 한다고 알고 있는데 거기에서 더 많을 경우 추가 데이터를 날려버리거나 더 적을 경우 0으로 추가 데이터를 만들어 FFT를 실행한다고 알고 있다. 위 관계식은 연속함수에 대해 구한 것이긴 하지만 이산화하면 2^N개의 데이터로 FFT를 한 다음에 데이터를 추가해주거나 빼주는 방식으로 원래 값에 맞도록 보정하는 것이 가능해진다. DFT의 시간이 N^2이라고 알고 있는데 정확한 값을 N logN에서 N^2 사이의 값으로 구하는 것도 가능하다는 것.
샘플 구간의 중심을 0으로 두고 구간의 길이를 점차 늘이는 문제로도 확장해볼 생각이 있다. 이건 양자장론에서 cut-off 문제와도 관련이 있을 것 같아서 풀어보려고 생각중인 문제.
그런데 왜 이 간단한 걸 찾아도 안 보이지... 미분만 잘 하면 되잖아...
'Mathematics' 카테고리의 다른 글
Poincare Half Plane 푸앙카레 반평면 (2) (0) | 2014.05.25 |
---|---|
Poincare Half Plane 푸앙카레 반평면 (1) (0) | 2014.01.11 |
개드립의 마지막 정리 (0) | 2013.10.29 |
델타 분포 만들기 (6) | 2012.08.23 |
Lagrange Multipliers - 라그랑주 승수법 (7) | 2011.01.16 |