Első projektfeladat
Gibbs-jelenség viselkedésének vizsgálata egyszerű négyszögjel esetén

Készítette: Unger Tamás István (Neptun: FTD1YJ)

1. Bevezetés

A Fourier-sorok jel- és rendszeranalízisben betöltött szerepe kiemelt jelentőségű. Mérnöki tanulmányaink során már elsajátítottuk a lineáris, időinvariáns rendszerek leírását tisztán szinuszos (koszinuszos) gerjesztések esetén. Megtanultuk, hogy a komplex számok algebrájával az ilyen rendszerek viszonylag könnyen kezelhetők, a válaszjel a komplex számokon végzett elemi matematikai műveletek segítségével meghatározható, a két mennyiség hányadosa pedig megadja a rendszer jellemzésére alkalmas átviteli függvényt is.

	A Fourier-sorok segítségével az ilyen típusú lineáris rendszerek esetén ez a vizsgálódás kiterjeszthető összetettebb gerjesztések esetére is, amennyiben a gerjesztés periodikus és Riemann-integrálható időfüggvény formájában adódik. Ebben az esetben a gerjesztést annak Fourier-sorával közelítjük, így visszavezetjük a problémát elemi szinuszos és koszinuszos jelekre, majd azokra külön-külön elvégezve a számításokat a válaszjel az egyes komponensek szuperpozíciójaként előállítható. 

	Ebben a dokumentumban bemutatom, mi az a Heaviside-féle egységugrás-függvény és miként állítható elő ilyen függvények lineáris kombinációjaként egy elemi négyszögjel. Ismertetem ennek az elemi négyszögjelnek a Fourier-sorát, interaktív módon bemutatom, hogy a felharmonikusok számának növelésével hogyan közelíti egyre jobban és jobban az eredeti függvényt annak Fourier-sora.

	A példán keresztül ismeretem a szakadási helyeken fellépő Gibbs-jelenséget is, valamint bemutatok egy, a jelenség hatásának visszaszorítására alkalmazható módszert, a σ-approximációt is.

2. A Heaviside-függvény

A Heaviside-függvény nem más, mint a jel- és rendszerelméletben rendkívül fontos szerepet játszó egységugrás, nevét Olivier Heaviside (1850-1925) angol autodidakta villamosmérnök-matematikus után kapta. Ez egy olyan ε=ε(t) függvény, melynek értéke 0, ha t<0 és 1, ha t>0, t=0-ban pedig elsőfajú szakadása van. 

	(Megjegyzés: bizonyos esetekben a függvényt Heaviside-féle theta-függvénynek hívják és logikusan θ(t)-vel jelölik. A Wolfram is ilyen bizonyos eset. Én viszont ebben a dokumentumban maradok az általam megszokott jelölésnél.)

	Természetesen a függvény szakadási helye eltolható pozitív és negatív irányba is. Az első grafikonon ezzel lehet kísérletezni a ε(t-τ) összefüggésben a τ változtatásával -3 és 3 között.

Manipulate[Plot[HeavisideTheta[t-τ], {t,-4,4}, AxesLabel-> {t, ε[t-τ]}, LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.01]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange->{{-4,4},{0,1}}, PlotLabel->"Az egységugrás és eltolása"], {τ,-3,3}]

Most már van egységugrás-függvényünk, készítsünk hát a segítségével egy egyszerű négyszögjel egyetlen periódusát. A jel magassága az egyszerűség kedvéért legyen egységnyi.  A jel periódusideje legyen T, és definiáljuk úgy a függvényt, hogy értéke T/1-ig 1, utána pedig nulla.  Így a négyszögjel periódusa előállítható az

s(t) = ε(t)-ε(t-T/2), t ∈ (0,T]

összefüggés segítségével.  Erre mutat szemléletes példát a második grafikon. A T periódusidő értéke 1 és 6 között változtatható, a grafikonon pedig minden esetben az aktuális négyszögjel egyetlen periódusa látható a T paraméter változtatásának függvényében.

Manipulate[Plot[HeavisideTheta[t]-HeavisideTheta[t-T/2], {t,-2,T}, AxesLabel-> {t, s[t]},  LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.01]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange->{{0,6},{0,1}},PlotLabel->"Egyszerű négyszögjel előállítása"], {T,1,6}]

3. Egyszerű négyszögjel Fourier-sora

Az biztos, hogy a fenti négyszögjel periodikus, de az is könnyen belátható, hogy a periódusának zárt intervallumán Riemann-integrálható is. Ebben az esetben közelíthető ez a függvény az

s(t)≃(Subscript[s, n])(t)=(Subscript[S, 0])+((∑_(k=1))^n)[(Subscript[(S^A), k])cos((k2π)/T)t+(Subscript[(S^B), k])sin ((k2π)/T)]

függvénysor segítségével közelíthető. Ha bizonyos t értékekre n -> ∞ esetén az (Subscript[s, n])(t) függvény egy meghatározott s(t) határértkhez tart, akkor azt mondjuk, hogy az adott függvénynek ezekre a t értékekre konvergens függvénysor-közelítése van. Az (Subscript[S, 0]), (Subscript[(S^A), k ])és (Subscript[(S^B), k]) konstasok definíció szerint a következőképpen határozhatók meg:

(Subscript[S, 0])=(1/T)(Subscript[(∫^T), 0]) s(t) dt,
(Subscript[(S^A), k])=(2/T)(Subscript[(∫^T), 0]) s(t)cos ((k2π)/T) dt,
(Subscript[(S^B), k])= (2/T)(Subscript[(∫^T), 0]) s(t)sin ((k2π)/T) dt.

Az értékek levezethetőek analitikus úton, ezt már a munkaterv dokumentumában megtettem, így nem ismételném meg. A Fourier-sor tehát a következőképpen adódik:

(Subscript[s, n])(t)= (1/2)+(∑_k) (2/(kπ))sin k ((2π)/T)t, k= 1,3,5,7, ..., (2l+1), l ∈ ℕ.

A közelítés a következő ábrán vizsgálható meg. A felharmonikusok száma egészen ötvenig növelhető. A futtatás során szépen látszik a Fourier-sor konvergenciája.

Manipulate[Plot[{HeavisideTheta[t]-HeavisideTheta[t-3], 0.5+Sum[(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}]}, {t,-1,6},AxesLabel-> {t, (Subscript[s, n])[t]},  LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.009]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange-> {{-1,6},{-0.2,1.2}}, PlotLabel->"Az egyszerű négyszögjel Fourier-sora"],{n,0,50,1}]

4. Gibbs-jelenség

A Gibbs-jelenség a Fourier-sorral történő közelítés hibája, amely az eredeti függvény szakadási helyeinél figyelhető meg. A villamosmérnöki szakzsargon egyébként csak túllövésként emlegeti. Hogy miért, az könnyen szemléltethető, ha megvizsgáljuk a közelítést úgy, hogy az ábrázolás során kifejezetten a szakadsi helyek környékére fókuszálunk.

Manipulate[Plot[{HeavisideTheta[t]-HeavisideTheta[t-3], 0.5+Sum[(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}]}, {t,-0.1,0.4},AxesLabel-> {t, (Subscript[s, n])[t]},  LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.009]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange-> {{-0.1,0.4},{0.5,1.15}},PlotLabel->"A Gibbs-jelenség"],{n,0,100,1}]

Jól látható, hogy amíg a szakadási helyek között szinte tökéletes pontossággal közelítjük a négyszögjelet (ebben az esetben maximálisan 100 felharmonikussal), addig a t = 0 szakadási pontnál a Fourier-sor közelítése túlnő az eredeti jelen, és ez a túlnövés a felharmonikusok számának növelésével sem szüntethető meg. Ezt hívjuk Gibbs-jelenségnek.

5. A σ-approximáció

A σ-approximáció a Gibbs-jelenség hatásának csökkentésére, visszaszorítására szolgál. Lényege egy úgynevezett σ-faktor alkalmazása, amely a

(Subscript[σ, n])=((sin((kπ)/n))/((kπ)/n))=sinc((kπ)/n)

alakban írható fel. A módosított Fourier-sor képlete így az

s(t)≃(Subscript[s, n])(t)=(Subscript[S, 0])+((∑_(k=1))^n)(Subscript[σ, n])[(Subscript[(S^A), k])cos((k2π)/T)t+(Subscript[(S^B), k])sin ((k2π)/T)]

alakban írható fel. Ennek a konkrét négyszögjelnek a vizsgálata során pedig a Fourier-sor képlete az

(Subscript[s, n])(t)= (1/2)+(∑_k) (Subscript[σ, n])(2/(kπ))sin k ((2π)/T)t, k= 1,3,5,7, ..., (2l+1), l ∈ ℕ.

alakban adódik, ahol (Subscript[σ, n ])miatt előre meg kell határoznunk azt, hogy hány taggal közelítünk. Vizsgáljuk meg, miként működik ez a gyakorlatban.

Manipulate[Plot[{HeavisideTheta[t]-HeavisideTheta[t-3], 0.5+Sum[Sinc[k*Pi/n]*(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}]}, {t,-1,6},AxesLabel-> {t, (Subscript[s, n])[t]},  LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.009]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange-> {{-1,6},{-0.2,1.2}},PlotLabel->"A σ-approximációval javított F.-sor"],{n,1,50,1}]

A szakadási helyeken már így, messzebbről vizsgálva is jól látszik a σ-approximáció eredményessége, de azért fókuszáljunk csak rá az izgalmasabb részre.

Manipulate[Plot[{HeavisideTheta[t]-HeavisideTheta[t-3], 0.5+Sum[Sinc[k*Pi/n]*(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}]}, {t,-0.1,0.4},AxesLabel-> {t, (Subscript[s, n])[t]},  LabelStyle-> Directive[Bold, Black], PlotStyle-> {Blue, Thickness[0.009]}, ExclusionsStyle->{Blue, Thickness[0.01]}, PlotRange-> {{-0.1,0.4},{0.5,1.15}},PlotLabel->"Viszlát, Gibbs-jelenség!"],{n,1,50,1}]

6. Beszéljenek a számok...

A grafikonok alapján is látható, hogy milyen effektíven javítja a σ-faktor a Gibbs-jelenség hatását a Fourier-soros közelítés esetén, de azért az eredményeket célszerű számokkal is alátámasztani. Vizsgáljuk meg, hogy mekkora az eltéré egy viszonylag kis számú felharmonikust tartalmazó közelítés esetén σ-approximáció nélkül és σ-approximációval. A számértékek a maximális, ideális max(s(t))=1-től való eltérés abszolútértékét jelzi.

Eltérés σ-approximáció nélkül n=1 és n=10 között:

Manipulate[Abs[1-FindMaxValue[0.5+Sum[(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}],{t,1*10^-9}]],{n,1,10,1}, FrameLabel-> "Δ"]

Eltérés σ-approximációval n=1 és n=10 között:

Manipulate[Abs[1-FindMaxValue[0.5+Sum[Sinc[k*Pi/10]*(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}],{t,1*10^-20}]], {n,1,10,1}, FrameLabel-> "(Subscript[Δ, σ])"]

Nézzük meg ezt grafikusan is. Az első grafikon az Fourier-sor maximális hibájának abszolútértékét mutatja az eredeti négyszögjelhez képest a komponensek számának (n) függvényében. Itt is látható, hogy a komponensek növelésével csökken a hiba mértéke is, de a nulla (hibamentesség) felé viszonylag lassan közelít.

DiscretePlot[Abs[1-FindMaxValue[0.5+Sum[(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}],{t,1*10^-9}]],{n,1,10,1},PlotStyle-> {Blue, Thickness[0.009]}, AxesLabel-> {n, Δ[n]},PlotRange-> {{0,10},{0,0.11}}, PlotLabel->"Eltérés σ-approx. nélkül"]

Nézzük meg, hogyan alakul ez σ-approximáció alkalmazása esetén. A különbség (a csökkenés és a csökkenés gyorsaságának mértéke a komponensszám növelésével) jól látható.

DiscretePlot[Abs[1-FindMaxValue[0.5+Sum[Sinc[k*Pi/10]*(2/((2*k+1)*Pi))*Sin[(((2*k+1)*2*Pi)/6)*t], {k,0,n}],{t,1*10^-20}]], {n,1,10,1},PlotStyle-> {Blue, Thickness[0.009]}, AxesLabel-> {n, (Subscript[Δ, σ])[n]},PlotRange-> {{0,10},{0,0.11}}, PlotLabel->"Eltérés σ-approximációval"]

7. Összefoglalás

Munkám sorám bemutattam, mi az az egységugrás és hogy miként lehet a segítségével előállítani egy egyszerű négyszögjelet. Ismerettem a Fourier-sor fogalmát, meghatároztam és bemutattam az együtthatók meghatározását erre a konkrét esetre. Levezettem az egyszerű négyszögjel Fourier-sorát, bemutattam a közelítés és az annak hibájaként fellépő Gibbs-jelenséget. A σ-approximáció felhasználásával mutattam egy hatékony és jól használható alternatívát a szakadási helyeken jelentkező túllövések mértékének csökkentésre is.