주요 콘텐츠

FFT를 사용한 다항식 보간

고속 푸리에 변환(FFT)을 사용하여 소행성 궤도 데이터를 보간하는 삼각 다항식의 계수를 추정합니다.

수학적 측면에서의 FFT

FFT 알고리즘은 신호 처리 분야의 애플리케이션과 관련이 있지만, 보다 일반적으로는 수학 분야에서 고속 계산 툴로 사용할 수도 있습니다. 예를 들어, 데이터 세트를 보간하는 n차 다항식 c1xn+c2xn1+...+cnx+cn+1의 계수 ci는 일반적으로 간단한 선형 연립방정식을 푸는 방식으로 계산됩니다. 19세기 초 소행성 궤도를 연구하면서 카를 프리드리히 가우스(Carl Friedrich Gauss)는 문제를 여러 작은 하위 문제로 분리한 후 결과를 결합하는 방식으로 다항식 보간 함수의 계수를 계산하는 수학적 지름길을 발견했습니다. 그의 방법은 데이터의 이산 푸리에 변환을 추정하는 것과 동일했습니다.

소행성 데이터 보간

가우스는 그의 논문에서 팔라스라는 소행성의 궤도를 추정하는 접근 방식에 대해 설명했습니다. 이 방식은 다음 12개의 2차원 위치 데이터 점 xy로 시작합니다.

x = 0:30:330;
y = [408 89 -66 10 338 807 1238 1511 1583 1462 1183 804];
plot(x,y,'ro')
xlim([0 360])

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

가우스는 다음 형식의 삼각 다항식으로 소행성의 궤도를 모델링했습니다.

y=a0+a1cos(2π(x/360))+b1sin(2π(x/360))a2cos(2π(2x/360))+b2sin(2π(2x/360))a5cos(2π(5x/360))+b5sin(2π(5x/360))a6cos(2π(6x/360))

fft를 사용하여 다항식의 계수를 계산합니다.

m = length(y);
n = floor((m+1)/2);
z = fft(y)/m;

a0 = z(1); 
an = 2*real(z(2:n));
a6 = z(n+1);
bn = -2*imag(z(2:n));

원래 데이터 점 위에 보간 다항식을 플로팅합니다.

hold on
px = 0:0.01:360;
k = 1:length(an);
py = a0 + an*cos(2*pi*k'*px/360) ...
        + bn*sin(2*pi*k'*px/360) ...
        + a6*cos(2*pi*6*px/360); 

plot(px,py)

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

참고 문헌

[1] Briggs, W. and V.E. Henson. The DFT: An Owner's Manual for the Discrete Fourier Transform. Philadelphia: SIAM, 1995.

[2] Gauss, C. F. “Theoria interpolationis methodo nova tractata.” Carl Friedrich Gauss Werke. Band 3. Göttingen: Königlichen Gesellschaft der Wissenschaften, 1866.

[3] Heideman M., D. Johnson, and C. Burrus. “Gauss and the History of the Fast Fourier Transform.” Arch. Hist. Exact Sciences. Vol. 34. 1985, pp. 265–277.

[4] Goldstine, H. H. A History of Numerical Analysis from the 16th through the 19th Century. Berlin: Springer-Verlag, 1977.

참고 항목

도움말 항목