Szereg Fouriera – szereg pozwalający rozłożyć funkcję okresową lub nieokresową, spełniającą warunki Dirichleta, na sumę funkcji trygonometrycznych. Szeregi Fouriera zostały wprowadzone w 1807 roku przez Josepha Fouriera w celu rozwiązania równania przewodnictwa ciepła dla metalowej płyty. Równanie to jest równaniem różniczkowym cząstkowym i nie da się go rozwiązać bezpośrednio dla większości funkcji; jednak rozkładając funkcję początkową na szereg Fourier łatwo znalazł rozwiązania równania przewodnictwa dla poszczególnych składowych harmonicznych, ponieważ pochodne funkcji trygonometrycznych dają proste wzory, a następnie obliczył rozwiązanie dla funkcji wejściowej, sumując rozwiązania dla jej składowych harmonicznych. W 1829 r. Dirichlet określił ściśle warunki, jakie muszą spełniać funkcje, by szereg Fouriera był do nich zbieżny.

Szeregi Fouriera są np. ściśle powiązane z transformatą Fouriera, odkrytą przez Fouriera, którą można wykorzystać do znalezienia informacji o częstotliwościach składowych funkcji nieokresowych.

Od czasów Fouriera odkryto wiele różnych podejść do definiowania i rozumienia szeregu Fouriera. Niektóre z bardziej wydajnych i eleganckich podejść opierają się na pomysłach i narzędziach matematycznych, które nie były dostępne w czasach Fouriera. Fourier pierwotnie zdefiniował szereg Fouriera dla funkcji argumentów rzeczywistych o wartościach rzeczywistych i użył funkcji sinus i cosinus w dekompozycji. Od tego czasu zdefiniowano wiele innych transformacji, rozszerzając jego początkowy pomysł na wiele zastosowań i tworząc dział matematyki zwany analizą Fourierowską.

Metoda Fouriera doprowadziła do przewrotu w matematyce i zainicjowała powstanie wielu nowych teorii. Dziś szeregi Fouriera mają wielkie znaczenie między innymi w fizyce, teorii drgań oraz przetwarzaniu sygnałów obrazu (kompresja jpeg) i dźwięku (kompresja mp3).

Definicje szeregu Fouriera

Definicja za pomocą funkcji sin i cos Niech dana będzie funkcja okresowa o okresie bezwzględnie całkowalna w przedziale . Trygonometrycznym szeregiem Fouriera funkcji nazywamy szereg funkcyjny postaci

o współczynnikach określonych wzorami:

Powyższe wzory po raz pierwszy opublikował Jeana-Baptiste Joseph Fourier. Niemniej jednak po raz pierwszy wyprowadził je Leonhard Euler (prac na ten temat nie opublikował). Wzory te noszą nazwę wzorów Eulera-Fouriera.

Wprowadzając dla uproszczenia oznaczenie w powyższych wzorach, gdzie to tzw. pulsacja lub częstość kołowa, otrzymamy:

Definicja za pomocą funkcji zespolonych Niech dana będzie funkcja okresowa o okresie bezwzględnie całkowalna w przedziale . Zespolonym szeregiem Fouriera funkcji nazywamy szereg funkcyjny

gdzie

Związek między współczynnikami rozwinięcia trygonometrycznego i zespolonego

Obliczanie szeregu Fouriera funkcji nieciągłej. Twierdzenie Dirichleta

Rozważmy funkcję piłokształtną:

Obliczając jej współczynniki szeregu Fouriera otrzymamy:

i ostatecznie

Można pokazać, że szereg Fouriera zbiega do funkcji we wszystkich punktach , w których funkcja jest ciągła, tj.

mały|Wykres funkcji signum, w punkcie x=0 nieciągłej w sposób odosobniony, nieusuwalny i pierwszego rodzaju (zwyczajny).|249x249px

Dla (i ogólnie dla ) szereg Fouriera zbiega do wartości 0. Wartość ta jest równa połowie sumy wartości granic lewo- i prawostronnych funkcji w punkcie . W punkcie funkcja nie została zdefiniowana. Jeżeli więc chcielibyśmy, by szereg był zbieżny do funkcji w tym punkcie (i ogólnie dla ), to należałoby uzupełnić jej definicję przyjmując:

Wniosek ten jest zawarty w twierdzeniu Dirichleta, które orzeka, iż

Jeżeli funkcja jest w przedziale ograniczona i ciągła lub posiada nieciągłości najwyższej 1-go rodzaju (tj. spełniające warunek: w punkcie nieciągłości istnieją granice funkcji lewo- i prawostronna) i w skończonej liczbie, to (1) szereg Fouriera zbiega do funkcji w punktach ciągłości (2) w punktach nieciągłości szereg zbiega do wartości równej połowie sumy granic lewo- i prawostronnej funkcji w tych punktach.

Uwaga 1: Z powyższego przykładu widać, że funkcja rozwijana w szereg Fouriera może nie być zdefiniowana w punktach nieciągłości 1-go rodzaju - brak wartości funkcji w tych punktach nie przeszkadza w obliczaniu współczynników Fouriera ani nie ma wpływu na ich wartość (bowiem wartości całek nie zależą od wartości funkcji na zbiorze miary zero, a takiej miary jest zbiór punktów nieciągłości funkcji).

Uwaga 2: Powyższy przykład prowadzi do rozwiązania tzw. problemu bazylejskiego.

Szereg Fouriera funkcji nieokresowej Funkcję nieokresową , określoną dla można rozwinąć w szereg Fouriera, obliczając współczynnika Fouriera jak dla funkcji okresowej o okresie . Szereg Fouriera jest zawsze funkcją okresową, nawet jeśli oryginalna funkcja nią nie jest. Jednak ograniczając się do wartości szeregu dla otrzymamy rozkład oryginalnej funkcji na szereg Fouriera.

Funkcja musi przy tym spełniać na przedziale zmienności te same warunki ograniczoności i ciągłości, co funkcja okresowa na przedziale .

Uwaga:

Jeżeli funkcja jest okresowa, to rozwinięcia w szereg Fouriera można dokonać na dowolnym przedziale , gdzie - dowolne przesunięcie powyższego zakresu; np. dla . Wtedy wystarczy obliczać całki na współczynniki rozwinięcia w innym zakresie. Analogicznie dotyczy to rozwinięć funkcji nieokresowych na innych przedziałach zmienności zmiennej

Dokładność aproksymacji funkcji szeregiem Fouriera. Efekt Gibbsa

Twierdzenie nt. dokładności aproksymacji Tw. Przy zastąpieniu funkcji przybliżoną sumą trygonometryczną

średni błąd kwadratowy

jest najmniejszy, jeżeli za współczynniki przyjmie się współczynniki Fouriera funkcji .

Przykład Powyższe twierdzenie orzeka, iż spośród wszystkich funkcji, przybliżających daną funkcję za pomocą skończonej kombinacji liniowej funkcji sinusoidalnych i kosinusoidalnych najmniejszy średni błąd kwadratowy uzyska się dla współczynników będących współczynnikami rozwinięcia danej funkcji w szereg Fouriera. Dla ilustracji pokazano tu przybliżenia funkcji (opisującej kat odchylania wahadła matematycznego od pionu) za pomocą dwóch funkcji o identycznych składowych harmonicznych, ale o różnych współczynnikach

(a) przybliżenie sumą częściową szeregu Fouriera funkcji , (b) przybliżenie funkcją , która jest rozwiązaniem przybliżenia równania nieliniowego ruchu wahadła za pomocą rozwinięcia w szereg Maclaurina członu nieliniowego tego równania:

gdzie: - amplituda drgań wahadła, , gdzie - okres drgań wahadła, słuszny dla dowolnych amplitud, - całka eliptyczna zupełna pierwszego rodzaju

Z obliczeń średniego błędu kwadratowego otrzymano:

(a) dla :

(a) dla :

Zwiększenie liczby wyrazów w liczeniu sumy częściowej Fouriera zmniejsza średni błąd kwadratowy; dla otrzymuje się . Widać stąd, iż analiza Fouriera stanowi skuteczne narzędzie znajdowania znakomitych aproksymacji rozwiązań równań różniczkowych.

Zależność aproksymacji od liczby wyrazów sumy aproksymującej Dokładność aproksymacji danej funkcji za pomocą szeregu Fouriera zależy od liczby wyrazów N szeregu - im więcej wyrazów sumy częściowej, tym mniejszy jest średni błąd kwadratowy. Pokazują to poniższe animacje. Efekt Gibbsa Dla funkcji nieciągłych pojawia się tzw. efekt Gibbsa w aproksymacji - w punktach nieciągłości (odcinki skoków pionowych) następują silne odchylenia funkcji aproksymującej od wartości średniej, pomimo że maleje średni błąd kwadratowy aproksymacji danej funkcji za pomocą sum częściowych szeregu Fouriera wraz ze wzrostem liczby wyrazów sumy aproksymującej. W związku z tym stosuje się różne techniki wygładzania lokalnego funkcji aproksymującej w pobliży punktów nieciągłości.mały|Funkcja (czerwona) to suma 6 funkcji sinus (niebieskie) i funkcja ich amplitud .|249x249px Widmo czyli amplitudy składowych harmonicznych Współczynniki szeregu Fouriera reprezentują amplitudy składowych harmonicznych , jakie zawiera dany sygnał. Zbiór tych współczynników nazywa się widmem danej funkcji.

Animacja obok pokazuje widmo funkcji, która ma jedynie składowe sinusoidalne widma.

Dalej pokazano widmo dla ogólnego przypadku.mały|538x538px|Funkcja , jej funkcja aproksymująca - suma wyrazów szeregu Fouriera oraz widmo czyli zestaw współczynników

Obliczenia numeryczne szeregu Fouriera Poniżej podano kod programu w języku Python, który:

(1) dla danej funkcji określonej na przedziale liczy współczynniki szeregu Fouriera ,

(2) oblicza funkcję, która aproksymuje funkcję ,

(3) rysuje wykres funkcji oraz funkcji aproksymującej

(4) rysuje widmo Fouriera, którego wartości są równe amplitudom składowych oraz szeregu Fouriera dla .

Przykładowy wykres uzyskany z programu pokazano obok.

Dane do programu:

– parametr określający wielkość przedziału , na jakim zadaje się funkcję (linia 9 kodu),

– liczba wyrazów szeregu Fouriera, które ma obliczyć program (linia 10 kodu),

– definicja funkcji (linia 13 kodu). # JK 2024.08.16 v.1 Program oblicza współczynniki szeregu Fouriera danej funkcji, # rysuje wykres funkcji i funkcji aproksymujacej, rysuje wykres widma

import numpy as np import matplotlib.pyplot as plt from scipy.integrate import quad

# Parametry L = np.pi # Okres (od -L do L) N = 10 # Liczba wyrazów w szeregu Fouriera

# Definicja funkcji f(x) = x def f(x): return x*x-0.5*x**3

# Współczynniki a_n i b_n a0 = (1 / L) * quad(f, -L, L)

def a_n(n): integrand = lambda x: f(x) * np.cos(n * np.pi * x / L) result, _ = quad(integrand, -L, L) return result / L

def b_n(n): integrand = lambda x: f(x) * np.sin(n * np.pi * x / L) result, _ = quad(integrand, -L, L) return result / L

# Rekonstrukcja funkcji z szeregu Fouriera def fourier_series(x, N): a0_term = a0 / 2 sum_terms = sum(a_n(n) * np.cos(n * np.pi * x / L) + b_n(n) * np.sin(n * np.pi * x / L) for n in range(1, N + 1)) return a0_term + sum_terms

# Zakres x dla wykresu x_values = np.linspace(-L, L, 500) f_values = f(x_values) fs_values = [fourier_series(x, N) for x in x_values]

# Obliczanie współczynników dla widma n_values = np.arange(1, N + 1) a_n_values = np.array([a_n(n) for n in n_values]) b_n_values = np.array([b_n(n) for n in n_values])

# Wykres funkcji i szeregu Fouriera plt.figure(figsize=(14, 6))

# Wykres funkcji i szeregu Fouriera plt.subplot(1, 2, 1) plt.plot(x_values, f_values, label="f(x) = x*x-0.5*x**3", color="blue") plt.plot(x_values, fs_values, label=f"Szereg Fouriera, N = {N}", color="red", linestyle="--") plt.title("Funkcja f(x) i jej szereg Fouriera") plt.xlabel("x") plt.ylabel("f(x)") plt.legend() plt.grid(True)

# Wykres widma Fouriera plt.subplot(1, 2, 2) plt.stem(n_values, np.abs(a_n_values), linefmt='b-', markerfmt='bo', basefmt='b-', label='a_n') plt.stem(n_values, np.abs(b_n_values), linefmt='r-', markerfmt='ro', basefmt='r-', label='b_n') plt.title("Widmo Fouriera") plt.xlabel("n") plt.ylabel("Amplituda") plt.legend() plt.grid(True)

plt.tight_layout() plt.show()

Twierdzenia o rozwinięciu funkcji w szereg Fouriera mały|Aproksymacja funkcji prostokątnej szeregiem Fouriera; N=50. Widoczny efekt Gibbsa w punktach skoków funkcji|249x249px mały|Aproksymacja funkcji piłokształtnej szeregiem Fouriera; N=50. Widoczny efekt Gibbsa w punktach skoków funkcji|249x249px mały|Aproksymacja funkcji trójkątnej szeregiem Fouriera; N=25. Tu brak efektu Gibbsa, gdyż funkcja nie ma punktów nieciągłości.|249x249px

Podane tu dwa zasadnicze twierdzenia dotyczą warunków rozwinięcia za pomocą szeregu Fouriera funkcji okresowej. Zakładamy, że funkcja ma okres i pulsację Twierdzenia poprzedzone są lematami, potrzebnymi do ich dowodów. Lemat I (całki pomocnicze) jest liczbą całkowitą

są liczbami naturalnymi

Lemat II

Dowód

więc mamy (biorąc cześć rzeczywistą i stosując podstawowe wzory trygonometryczne):

q. e. d.

Lemat III Jeżeli jest funkcją ciągłą w przedziale z wyjątkiem co najwyżej skończonej ilości punktów i bezwzględnie całkowalną w tym przedziale to

Twierdzenie (Eulera–Fouriera)