Fourier Analysis and Hilbert Spaces
Introduction to Taylor series allowed us to approximate functions using power series. However, power series are local—they accurately represent a function only near a specific center point. Fourier Analysis provides a global alternative by decomposing functions into infinite sums of sinusoidal oscillations (sines and cosines).
The Fourier Series
For a periodic function with period that is piecewise smooth, we can represent it as a Fourier Series:
Euler-Fourier Formulas
The coefficients are determined by the orthogonality of the trigonometric functions:
Complex Form and Hilbert Spaces
In advanced analysis, we use the complex exponential form, which is more compact:
The Geometry of
Fourier analysis is most naturally understood in the context of the Hilbert Space of square-integrable functions.
- The inner product of two functions is .
- The functions form an orthonormal basis for this space.
Convergence: Dirichlet Conditions
A function is represented by its Fourier series at a point of continuity if it satisfies the Dirichlet conditions:
- is absolutely integrable over a period.
- has a finite number of maxima and minima within any finite interval.
- has a finite number of discontinuities, none of which are infinite.
At a point where has a jump discontinuity, the Fourier series converges to the average value: .
The Fourier Transform
When the period , the discrete sum becomes a continuous integral, known as the Fourier Transform: The inverse transform allows us to reconstruct the function:
Parseval’s Theorem
One of the most profound results in Fourier analysis is the preservation of “energy” between the space and frequency domains: In the continuous case, this is known as Plancherel’s Theorem: .
Python: Computing a Discrete Fourier Transform (DFT)
We can use the Fast Fourier Transform (FFT) algorithm to analyze the frequency components of a signal.
import numpy as np
# Create a signal with two frequencies: 50Hz and 120Hz
fs = 1000 # Sampling frequency
t = np.linspace(0, 1, fs)
signal = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 120 * t)
# Compute the FFT
fft_vals = np.fft.fft(signal)
frequencies = np.fft.fftfreq(len(t), 1/fs)
# Find the peak frequencies
indices = np.where(np.abs(fft_vals) > 100)
print(f"Detected frequencies: {frequencies[indices][:2]}")
Significance
Fourier analysis is the foundation of signal processing, acoustics, and quantum mechanics (where the position and momentum of a particle are Fourier transform pairs). It allows us to solve partial differential equations (like the Heat Equation and Wave Equation) by transforming them into simpler algebraic equations in the frequency domain.