History and Derivation of the Fast Fourier Transform
michaeljflynn.net
michaeljflynn.net
"The first machine computation with this algorithm known to the author was done by Vern Herbert, who used it extensively in the interpretation of reflection seismic data. He programmed it on an IBM 1401 computer at Chevron Standard Ltd., Calgary, Canada in 1962. Herbert never published the method. It was rediscovered and widely publicized by Cooley and Tukey in 1965." [1]
[1] Claerbout, J., 1985, Fundamentals of Geophysical Data Processing, p. 12.
Several chapters started off by describing a problem, explaining that ideally you'd do a Fourier transform, and then coming up with a special case hack that worked well enough and performed well enough to actually be done.
The FFT made all of this knowledge obsolete.
FT f(real) -> F(real)
DFS f(real) -> F(int)
DTFT f(int) -> F(real)
DFT f(int) -> F(int)
Only one of these, the DFT, is easily handled by a computer, but they all have an important role in both theory and practice. For example, why does JPEG use a Discrete Cosine Transform rather than a Discrete Fourier Transform? What are the pitfalls of approximating a continuous domain with discrete samples? Why are engineers obsessed with window functions? A continuous domain will lead you to the right answer. You can't easily understand the DFT (or FFT) without the FT and DFT. DFS has its own uses.To many (applied) mathematicians, the fact that a computer uses the FFT algorithm to compute a DFT is largely immaterial and not particularly worth mentioning, because they are more interested in the questions in the preceding paragraph than questions like "how many points can I take on X hardware while maintaining Y performance?"
[1] https://books.google.com/books?id=8sbS2Bi4BmIC&pg=PA396&lpg=...
Relevant for other learners is the digital signal processing lectures on Coursera, highly recommended with python notebooks and quizzes. https://www.coursera.org/learn/dsp
But there is already a different thing called a discrete cosine transform :)
import numpy as np
a = np.pi/2
print(a)
> 1.5707963267948966
print(a == a + 1e-15)
> False
print(a == a + 1e-16)
> True
print(np.sin(1e-16))
> 1e-16
print(np.cos(np.pi/2+1e-16))
> 6.12323399574e-17
print(np.sin(1e-16) == np.cos(np.pi/2+1e-16))
> FalseIf cosine is just sine rotated by 90°, then we really just use sines. Except we write cosine instead of a sine with a 90° rotation because it looks less confusing :)
The real goal is to arrive at the exponential representation, where the sines and cosines are absorbed into the exponential functions, which is later needed to write down the fourier integrals.
Your question boils down to preference. The two things you name are, in fact, equal. Math people just choose to write cos(x) instead of sin(x+pi/2)
Due to Euler's formula, there is a correspondence between a linear combination of e^(2 pi i n x) and e^(-2 pi i n x) and a linear combination of cos(2 pi n x) and sin(2 pi n x). In other words, both pairs of functions span the same subspace (with complex coefficients).
We need all of the exponentials to represent a periodic function, with positive and negative n, and so we need both cos and sin. If you leave out cos, you can only represent odd functions, and leaving out sin, even functions.
But: if your question is just why not just use sin(x) and sin(x-pi/2) instead of sin(x) and cos(x), well, it's the same thing. Just because you write cos(x) like sin(x-pi/2) doesn't mean it's not still cos(x)!
(Fun fact: cosine means "complementary sine," the sine of the complementary angle in the triangle.)
"In a recently published history of numerical analysis, H. H. Goldstine attributes to Carl Friedrich Gauss, the eminent German mathematician, an algorithm similar to the FFT for the computation of the coefficients of a finite Fourier series. Gauss' treatise describing the algorithm was not published in his lifetime; it appeared only in his collected works as an unpublished manuscript. "
[1] http://www.cis.rit.edu/class/simg716/Gauss_History_FFT.pdf
I'd put the Simplex method as a close 2nd.