20.04.2017 Views

g1

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Najprej spoznajmo ukaz Manipulate, ki ga uporabimo za dinamično predstavitev raznih rezultatov.<br />

In[1]:=<br />

Manipulate[<br />

Plot[a (x - b)^2 + c, {x, -5, 5}, PlotRange {-20, 20}, PlotStyle Thick],<br />

{a, -3, 3}, {b, -3, 3}, {c, -3, 3}]<br />

a<br />

b<br />

c<br />

20<br />

Out[1]=<br />

10<br />

-4 -2 2 4<br />

-10<br />

-20


2 vaja3.nb<br />

Manipulate[<br />

Graphics[Polygon[{A, B, C}], PlotRange 5]<br />

, {{A, {0, 0}}, Locator}<br />

, {{B, {1, 4}}, Locator}<br />

, {{C, {2, 3}}, Locator}<br />

]<br />

Fourierova transformacija<br />

F(ω) = <br />

-∞<br />

∞<br />

f (t) ωt t<br />

f (t) = 1<br />

2 π -∞<br />

∞<br />

F(ω) -ωt ω<br />

∞<br />

F s (ω) = f (t) sin (ωt) t<br />

0<br />

∞<br />

F c (ω) = f (t) cos (ωt) t<br />

0<br />

inverzna formula<br />

Fourier - sin transformacija<br />

Fourier - cos transformacija<br />

1. Nariši graf funkcije<br />

f (t) = sin t , če<br />

0 , če<br />

0 ≤ t ≤ π<br />

t < 0 ali t > π


vaja3.nb 3<br />

Za definicijo zlepljene funkcije so primerni ukazi If , Which ali PieceWise .<br />

A = Piecewise[{{Sin [t], 0


4 vaja3.nb<br />

d = FourierTransform[A, t, ω]<br />

1 + π ω<br />

2 π 1 - ω 2 <br />

B = A * Exp[iωt]<br />

iωt Sin[t] 0 ≤ t ≤ π<br />

0 True<br />

c = Integrate[B, {t, -Infinity, Infinity}]<br />

2 iωt<br />

InverseFourierTransform[d, ω, t]<br />

1<br />

2 1<br />

Sign[π - t] + 1<br />

Sign[t] Sin[t]<br />

1<br />

2<br />

1<br />

Sign[π - t] + 1<br />

Sign[t]<br />

Sin[t]<br />

Integrate[c * Exp[-iωt], {ω, -Infinity, Infinity}]<br />

1<br />

2 1<br />

Sign[π - t] + 1<br />

Sign[t] Sin[t]<br />

∞<br />

Razlika med rešitvama je v ne čisto enakih definicijah transformirane in inverzne funkcije.<br />

Tu so tri različne konvencije, ki jih razni avtorji uporabljajo :<br />

∞<br />

F(ω) = f (t) ωt t f (t) = 1 ∞<br />

-∞<br />

2 F(ω) -tω ω (Tomšič, Slivnik)<br />

π -∞<br />

F(ω) =<br />

1 2 π<br />

∞<br />

f (t) ωt t f (t) = 1<br />

-∞<br />

2 π<br />

∞<br />

F(ω) -tω ω<br />

-∞<br />

(Wolfram Mathematica)<br />

F(ω) =<br />

1 2 π<br />

∞<br />

f (t) -ωt t f (t) = 1<br />

-∞<br />

2 π<br />

∞<br />

F(ω) tω ω<br />

-∞<br />

(Kreyszig)<br />

Program Mathematica se tem konvencijam prilagaja z opcijo FourierParameters.<br />

Mi torej uporabljamo FourierParameters {1, 1}<br />

3. Uporabi ukaz Manipulate in prikaži grafa funkcije<br />

f (t) = e -t^2/a in njene Fourierove transformiranke v isti koordinatni sistem za vrednosti parametra a ∈ [1, 5].


vaja3.nb 5<br />

In[6]:= Clear[t, b, c, d, ω]<br />

ba = Exp[-t^2 / d]<br />

ca = FourierTransform[ba, t, ω]<br />

Plot[{b, c}, {t, -4, 4}]<br />

Manipulate[Plot[{b, c}, {t, -4, 4}], {d, 1, 5}]<br />

Out[7]=<br />

- t2<br />

d<br />

Out[8]=<br />

- d ω2<br />

4<br />

2<br />

1<br />

d<br />

1.0<br />

0.5<br />

Out[9]=<br />

-4 -2 2 4<br />

-0.5<br />

-1.0<br />

Out[10]=<br />

4. Z ukazom Plot nariši graf funkcije<br />

f (t) = e-t/10 sin (10 t) , če t ≥ 0<br />

0 , če t < 0<br />

in nariši graf gostote spektra F(ω) z ukazom LogLogPlot na intervalu ω ∈ [0.1 , 100] !<br />

Primeri nalog za preverjanje<br />

5. Poišči Fourierovo transformacijo F(ω) funkcije f (t) = - t<br />

Koliko je F(4) ?<br />

Rezultat : 0.117647<br />

In[12]:= t = 4<br />

Out[12]= 4


6 vaja3.nb<br />

In[21]:= f = FourierTransform[Exp[-Abs[t]], t, ω]<br />

d = FourierTransform[Exp[-4], t, ω]<br />

N[d, 7]<br />

Out[21]=<br />

Out[22]=<br />

Out[23]=<br />

2 π DiracDelta[ω]<br />

4<br />

2 π DiracDelta[ω]<br />

4<br />

0.04591050 DiracDelta[ω]<br />

6. Funkcija θ(t) je enotna stopnica. V Mathematici se imenuje UnitStep.<br />

f (t) = θ(t - 3) - θ(t - 5) , g (t) = ( 1 - t ) ( θ(t - 1) - θ(t + 1) )<br />

Koliko je vrednost konvolucije h (t) = ( f * g) (t) v času t = 4.5 ?<br />

Rezultat : -0.875<br />

7. Poišči inverzno Fourierovo transformacijo funkcije F(ω) = -2 ω .<br />

Koliko je f (1 / 2) ?<br />

Rezultat : 0.149793<br />

8. Poišči Fourier - kosinusno transformacijo F c (ω) funkcije f (t) = θ(t - 2) - θ(t - 6) .<br />

Nato poišči ničle funkcije F c (ω) . Koliko je najmanjša pozitivna ničla ?<br />

Rezultat : 0.392699<br />

Analiza konvolucije funkcije f (t) s konstanto<br />

Naloga je odkriti, kakšno preoblikovanje poljubne funkcije f (t) predstavlja konvolucija te funkcije<br />

z naslednjo konstantno funkcijo. Kakšen je vpliv parametra σ ?<br />

konst (t) = 1<br />

2 σ<br />

, če t ≤ σ<br />

0 , če t > σ<br />

Izpeljemo :<br />

∞ t+σ<br />

( f *konst) (t) = f (u) konst(t - u) u = 1/(2 σ) f (u) u =<br />

-∞<br />

t-σ<br />

1/(2 σ)* ( ploščina pod krivuljo f (u) na intervalu t - σ < u < t + σ ) =<br />

povprečna vrednost funkcije f (u) na tem intervalu


vaja3.nb 7<br />

In[28]:= konst[t_, σ_] = Which[t < -σ, 0, t < σ, 1 / (2 σ), True, 0];<br />

Plot[konst[t, 0.2], {t, -2, 2}, PlotStyle Thick]<br />

(*kvluc[t_,σ_]=Integrate[f[u]konst[t-u,σ],{u,-∞,∞}];*)<br />

kvluc[t_, σ_] := 1 Integrate[f[u], {u, t - σ, t + σ}];<br />

2 σ<br />

2.5<br />

2.0<br />

Out[29]=<br />

1.5<br />

1.0<br />

0.5<br />

-2 -1 1 2<br />

Za primer vzemimo naslednjo nezvezno funkcijo f (t).<br />

In[24]:=<br />

Clear[f]<br />

f[t_] = Which[t < 0, 0, t < 1, 1, t < 2, 2, True, 3];<br />

graff = Plot[f[t], {t, -3, 6}, PlotStyle Thick, AspectRatio Automatic]<br />

(* formula za ploščino pod f[t] v širini 2σ okrog t *)<br />

plosc[t_, σ_] := Block[{ogli, n},<br />

ogli = {{t + σ, f[t + σ]}, {t + σ, 0}, {t - σ, 0}, {t - σ, f[t - σ]}};<br />

For[n = Max[Ceiling[t - σ], 0], n ≤ Min[Floor[t + σ], 3], n++,<br />

ogli = Join[ogli, {{n, n}, {n, f[n]}}];]<br />

Print[ogli];<br />

Polygon[ogli]<br />

]<br />

6<br />

5<br />

4<br />

Out[26]=<br />

3<br />

2<br />

1<br />

-2 2 4 6


8 vaja3.nb<br />

V naslednjem ukazu Manipulate:<br />

Z miško vlečemo neodvisno spremenljivko t po abscisni osi.<br />

Rdeča pika sledi vrednosti konvolucije (f*konst)(t).<br />

Zeleno je obarvana ploščina pod funkcijo f na intervalu ( t-σ , t+σ ).<br />

Parameter σ lahko spreminjamo.<br />

In[32]:=<br />

Manipulate[<br />

Show[<br />

graff, (* graf funkcije *)<br />

Graphics[<br />

{FontSize 18,<br />

Text["t", {tt 〚1〛 , -0.4}],<br />

Text[StringJoin["σ= ", ToString[σ]], {-2.5, 2.5}],<br />

{RGBColor[0.8, 1, 0.8], plosc[tt 〚1〛 , σ]}, (* zelena plosčina *)<br />

{RGBColor[1, 0, 0], Disk[{tt 〚1〛 , kvluc[tt 〚1〛 , σ]}, 0.1]}} (* rdeča pika *)<br />

], PlotRange {{-3, 6}, {-0.5, 3.5}}, AspectRatio Automatic,<br />

ImageSize {800, 300}, TicksStyle Directive[14],<br />

Ticks {{-2, -1, 1, 2, 3, 4, 5}, {1, 2, 3}}],<br />

{σ, 0.1, 1}, {{tt, {-1, -0.2}}, {-1, -0.5}, {4, 0}, Locator, Appearance None}]<br />

Out[32]=<br />

V naslednjem ukazu sta prikazana grafa funkcije in konvolucije s konstanto.<br />

Opazujmo vpliv parametra σ !<br />

In[33]:=<br />

Manipulate[<br />

Show[<br />

graff,<br />

Plot[kvluc[t, σ], {t, -3, 6}, PlotStyle {Red, Thick}, AspectRatio Automatic]<br />

], {σ, 0.01, 1}]<br />

Out[33]=<br />

Odgovor :<br />

Konvolucija neke funkcije f (t) z dano konstantno funkcijo predstavlja glajenje<br />

funkcije.<br />

f*konst je zvezna funkcija in se prilega funkciji f . Parameter σ pomeni stopnjo<br />

glajenja.<br />

Konvolucija dane funkcije f (t) s konstanto oz. Gaussovo krivuljo<br />

σ<br />

1<br />

2 π<br />

- t2<br />

2 σ 2


vaja3.nb 9<br />

In[34]:= σ = 0.1;<br />

f[t_] := Which[t < 0, 0, t < 1, 1, t < 2, 2, True, 3];<br />

Konst[t_] := Which[t < -σ, 0, t < σ, 1 / (2 σ), True, 0];<br />

Gauss[t_] := Exp[-t^2 / (2 σ ^2)] / (σ Sqrt[2 Pi]);<br />

KvlucKonst[t_] :=<br />

NIntegrate[Konst[u] f[t - u], {u, -5 σ, 5 σ}, AccuracyGoal 4, PrecisionGoal 4];<br />

KvlucGauss[t_] := NIntegrate[Gauss[u] f[t - u],<br />

{u, -5 σ, 5 σ}, AccuracyGoal 4, PrecisionGoal 4];<br />

Show[GraphicsArray[{<br />

{Plot[Konst[t], {t, -3, 3},<br />

PlotStyle -> AbsoluteThickness[2], AspectRatio Automatic,<br />

TicksStyle Directive[14], PlotRange All],<br />

Plot[KvlucKonst[t], {t, -3, 4}, PlotStyle -> AbsoluteThickness[2],<br />

AspectRatio Automatic, TicksStyle Directive[14]]},<br />

{Plot[Gauss[t], {t, -3, 3}, PlotStyle -> AbsoluteThickness[2],<br />

AspectRatio Automatic, TicksStyle Directive[14], PlotRange All],<br />

Plot[KvlucGauss[t], {t, -3, 4}, PlotStyle -> AbsoluteThickness[2],<br />

AspectRatio Automatic, TicksStyle Directive[14]]}<br />

}]]<br />

GraphicsArray: GraphicsArray is obsolete. Switching to GraphicsGrid.<br />

Out[40]=<br />

5<br />

4<br />

3<br />

2<br />

1<br />

-3 -2 -1 1 2 3<br />

4<br />

3<br />

2<br />

1<br />

-3 -2 -1 1 2 3<br />

3.0<br />

2.5<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

-3 -2 -1 1 2 3 4<br />

3.0<br />

2.5<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

-3 -2 -1 1 2 3 4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!