Разложение периодических функций в ряд Фурье.
По аналогии с дискретизацией сигнала во времени, приводящей к периодичности спектра, дискретизация непрерывного спектра приводит к рассмотрению периодических сигналов во времени. Дискретный спектр (дискретный набор коэффициентов Фурье) для функции \(x(t)\) может быть представлен в виде: \begin{equation} X_k = \frac{1}{T}\int\limits_{t_0}^{t_0+T}x(t)\cdot e^{-j\omega_0kt}dt \label{FourierCoe1} \end{equation} Где \(t_0\)-произвольный момент времени. Спектр (\(\ref{FourierCoe1}\)) определяет периодическую непрерывную функцию \(x(t)=x(t+\lambda T)\) следующим образом: \begin{equation} x(t) = \sum\limits_{k=-\infty}^{\infty}X_k\cdot e^{j\omega_0kt} \label{Fourier1} \end{equation} Где \(\omega_0=\frac{2\pi}{T}\)-частота, соответствующая периоду \(T\) повторения функции \(x(t)\). Выражение (\(\ref{Fourier1}\)) называется рядом Фурье (в отличие от интеграла Фурье и дискретного преобразования Фурье). Можно доказать, что для любой периодической функции \(x(t)\) удовлетворяющей условиям Дирихле ряд Фурье сходится к \(x(t)\): \begin{equation} \lim_{K\rightarrow \infty} \sum\limits_{k=-K}^{K}X_k\cdot e^{j\omega_0kt} = x(t) \label{FourierConvergence1} \end{equation}
Задание
Экспериментально исследовать сходимость разложения в ряд Фурье периодической функции \(x(t)\) с периодом \(T\), т.ч. \(x(t)=-1, \forall x\in \left[-T/2\ldots 0\right), +1 \forall x\in \left[0\ldots T/2\right] \).
Теоретическая часть
Определим коэффициенты Фурье для заданной функции: \begin{align} X_k = \frac{1}{T}\int\limits_{t_0}^{t_0+T}x(t)\cdot e^{-j\omega_0kt}dt= \frac{1}{T}\left(\int\limits_{-T/2}^{0}-e^{-j\omega_0kt}dt+\int\limits_{0}^{T/2}e^{-j\omega_0kt}dt\right)= \\ \frac{1}{T}\frac{1}{j\omega_0k}\left(e^{-j\omega_0kt}\bigg|_{-T/2}^0-e^{-j\omega_0kt}\bigg|_0^{T/2}\right)= \frac{1}{T}\frac{T}{j2\pi k}\left(1-e^{j\frac{2\pi}{T}kT/2}-e^{-j\frac{2\pi}{T}kT/2}+1\right)=\\ \frac{1}{j\pi k}\left(1-\cos(\pi k)\right) \label{FourierCoe2} \end{align}
Практическая часть
Написать программу для построения рядов Фурье заданной функции. Рассчитать ошибку аппроксимации в зависимости от количества членов ряда.
Пример реализации на языке Python
Литература
Рассмотрим дискретное преобразование Фурье для комплексной экспоненты \(e^{j\omega n}\): \begin{equation} X_k = \sum_{n=-\frac{N-1}{2}}^{\frac{N-1}{2}}e^{j\omega n}e^{-j\frac{2\pi}{N}kn}= \sum_{n=-\frac{N-1}{2}}^{\frac{N-1}{2}}e^{j(\omega-\frac{2\pi}{N}k)n}=\sum_{n=-\frac{N-1}{2}}^{\frac{N-1}{2}}e^{j\theta n} \label{Dft1} \end{equation} Где \(\omega\)-произвольное значение частоты в пределах \(0\ldots \pi\) и \(\theta=\omega-\frac{2\pi}{N}k\). Выражение (\(\ref{Dft1}\)) является суммой геометрической прогрессии \(b_n=b_{n-1}q\), где \(b_0=e^{-j\theta\frac{N-1}{2}}\) и \(q=e^{j\theta}\). Сумма \(N\) первых членов геометрической прогрессии: \begin{align} \sum_{n=-\frac{N-1}{2}}^{\frac{N-1}{2}}b_n = \frac{b_0(1-q^N)}{1-q}\bigg|_{b_0=e^{-j\theta\frac{N-1}{2}},q=e^{j\theta}} = \frac{e^{-j\theta \frac{N-1}{2}}(1-e^{j\theta N})}{1-e^{j\theta}}= \frac{e^{-j\theta \frac{N}{2}}(1-e^{j\theta N})}{e^{-j\theta \frac{1}{2}}(1-e^{j\theta})} \\ = \frac{e^{-j\theta \frac{N}{2}}-e^{j\theta \frac{N}{2}}}{e^{-j\frac{\theta}{2}}-e^{j\frac{\theta}{2}}}=\frac{-2\sin(\theta \frac{N}{2})}{-2\sin( \frac{\theta}{2})}=\frac{\sin(\theta \frac{N}{2})}{\sin( \frac{\theta}{2})} \label{GeometricProgression} \end{align}
Литература