Π‘ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡ N+1-Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΊΠ»Π°ΡΡΠ° FIR (Finite Impulse Response ΠΈΠ»ΠΈ Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΎΠΉ). ΠΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΡΡΡ Π·Π°Π΄Π°ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠ°ΠΉΠ»Π΅ fir.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· N ΡΡΠ΅Π΅ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΈΠ»ΡΡΡΠ° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° Ρ ΠΎΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ Π²ΠΈΠ΄Π°:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ plots, Π½ΡΠΆΠ½ΡΠΉ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
> restart:with(plots):
Warning, the name changecoords has been redefined
ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°, Π²ΡΠ΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΡΡΡΡ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΡ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° Π² Π²ΠΈΠ΄Π΅ Π·Π°ΡΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π°Π½Π΄ΡΠ° Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 500 ΠΡ:
> N := 64: # Π§ΠΈΡΠ»ΠΎ ΡΠ΅ΠΊΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΠ° (Π½Π° 1 ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠΈΠ»ΡΡΡΠ°)
> fs := 10000: # Π§Π°ΡΡΠΎΡΠ° ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ
> fl := 2300: # ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ½Π°Ρ ΡΠ°ΡΡΠΎΡΠ°
> fh := 2700: # ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ½Π°Ρ ΡΠ°ΡΡΠΎΡΠ°
> m := 10: # 2^m > N - ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΡΡΠΈΡΠ»ΠΈΠΌ:
> Π’ := 2^m-1;
T := 1023> F1 : = evalf(fl/fs);
F1 := .2300000000> F2 := evalf(fh/fs);
F2 = .2700000000> Dirac(0) := 1: # Π€ΡΠ½ΠΊΡΠΈΡ ΠΠΈΡΠ°ΠΊΠ°
> fp1:=2*Pi*F1: fp2:=2*Pi*F2:
ΠΠ°Π΄Π°Π΄ΠΈΠΌ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°:
> g : = (sin(t*fp2)-sin(t*fp1))/(t*Pi);
ΠΡΡΠΈΡΠ»ΠΈΠΌ FIR ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠΈΠ»ΡΡΡΠ°
> Π‘ := (n) -> limit(g,t=n): h := aray(0..N): N2:=N/2:
> for n from 0 to N2 do h[N2-n]:= evalf(C(n)); n[N2+n] :=
h[M2-n]; od:
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ x(n) ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ y(n) ΡΠΈΠ³Π½Π°Π»ΠΎΠ²:
> Ρ := array(-N..Π’): y:= array(0..T):
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x(n) ΡΠ°Π²Π½ΡΠΌ 0 Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ 0 ΠΈ 1 Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ t>=0.
> for n from -M to -1 do x[n] := 0; od:
> for n from 0 to T do x[n] := Dirac(n); od:
ΠΡΡΠΈΡΠ»ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°.
> for n from 0 to Π’ do y[n] := sum(h[k]*x[n-k], k=0..N); od:
ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠΈΠ»ΡΡΡΠ°, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΈΠ³Π½Π°Π» Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΌΠ°Π»ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
> Ρ := [seq{[j/fs, y[j]], j=0..Π’)]:
> plot(Ρ, time=0..3*N/fs, labels=[time,output], axes=boxed,
xtickmarks=4, title=`ΠΠΌΠΏΡΠ»ΡΡΠ½Π°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΡΠΈΠ»ΡΡΡΠ°`, color=black);
ΠΠ½ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 11.33. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ± ΡΠ·ΠΊΠΎΠΏΠΎΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΈΠ»ΡΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ ΡΠ°ΡΡΠΎΡΡ fl ΠΈ fh ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ ΡΠΈΠ»ΡΡΡ ΠΏΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅Π·ΠΎΠ½Π°Π½ΡΠ½ΠΎΠΌΡ, Ρ ΠΎΡΡ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΠΎΠ½Π°Π½ΡΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
Π ΠΈΡ. 11.33. ΠΠΌΠΏΡΠ»ΡΡΠ½Π°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°
ΠΡΡΠΈΡΠ»ΠΈΠΌ ΠΠ§Π₯ ΡΠΈΠ»ΡΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΡΠΌΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡΡΡΠ΅. ΠΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ FFT:
> ro := array(1..Π’+1):io := array(1..Π’+1):
> for n from 0 to T do ro[n+1] := y[n]; io[n+1] := 0; od:
> FFT(m,ro,io):
ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ ΠΠ§Π₯ ΡΠΈΠ»ΡΡΡΠ°:
> Ρ := [seq( [j*fs/(Π’+1),abs(ro[j + 1]+io[j + 1]*I)], j=0..T/2)]:
> plot(p, frequency=0..fs/2, labels=[frequency,gain], title=`AΠ§X
ΡΠΈΠ»ΡΡΡΠ°`, color=black);
ΠΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 11.34. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈ Π²ΠΏΡΡΠΌΡ ΠΠ§Π₯ ΡΠΈΠ»ΡΡΡΠ° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΠ§Π₯ ΡΠ΅Π·ΠΎΠ½Π°Π½ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΈ β ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ ΡΠ·ΠΊΠΎΠ³ΠΎ ΠΏΠΈΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΡΠΎΡ fl ΠΈ fh ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΠ§Π₯ Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ ΠΈ ΡΠ΅Π·ΠΊΠΈΠΌΠΈ ΡΠΏΠ°Π΄Π°ΠΌΠΈ (Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΡΡΡ ΠΊ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ).
Π ΠΈΡ. 11.34. ΠΠ§Π₯ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°. ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π² Π²ΠΈΠ΄Π΅ Π·Π°ΡΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π°Π½Π΄ΡΠ° Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 500 ΠΡ ΠΈ ΡΠ°Π·ΠΌΠ°Ρ ΠΎΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ 2 Π:
> l := round(fs/2/500):
> for n from 0 by 2*1 to T do
> for n2 from 0 to l-1 do
> if n+n2 <= T then
> x[n+n2] := evalf(-l+rand()/10^12-0.5);
> fi;
> if n+n2+1 <= T then
> x[n+n2+1] := evalf(1+rand()/10^12-0.5);
> fi;
> od:
> od:
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡ. 11.35.
Π ΠΈΡ. 11.35. Π‘ΠΈΠ½ΡΠ΅Π·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»
ΠΡΡΠΈΡΠ»ΠΈΠΌ ΡΠ΅Π°ΠΊΡΠΈΡ ΡΠΈΠ»ΡΡΡΠ° Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»:
> for n from 0 to Π’ do
> y[n] : = sum(h[k]*Ρ [n-k], k=0..N);
> od:
ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°.
> Ρ := [seq([j/fs, x[j]], j=0..T)]: q:=[seq([j/fs, y[j]], j=0..T)]:
> plot(p, time=0..T/fs/4, labels=[time,volts], title= `ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»`, color=black);
> plot(q, time=0..T/fs/4, labels=[time, volts], title=`ΠΡΠ³ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»`, color=black);
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°ΜΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ. 11.36. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π²ΡΡΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΏΡΡΡΡ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, Π½ΠΎ ΡΡΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠ½ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ·ΠΊΠΎΠΏΠΎΠ»ΠΎΡΠ½ΠΎΡΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°.
Π ΠΈΡ. 11.36. ΠΡΠ΅ΠΌΠ΅Π½Π½Π°ΜΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°
ΠΡΡΠΈΡΠ»ΠΈΠΌ ΡΠΏΠ΅ΠΊΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ² ΠΌΠ°ΡΡΠΈΠ²Ρ Π²ΡΠ±ΠΎΡΠΎΠΊ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² ΠΏΡΡΠΌΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ FFT:
> ri := array(1..Π’+1): ii := array(1..Π’+1):
> for n from 0 to T do
> ri[n+1] := x[n]*2/T; ii[n+1] := 0;
> ro[n+1] := y[n]*2/T; io[n+1] := 0;
> od:
> FFT(m, ri, ii): FFT(m,ro,io):
ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ ΡΠΏΠ΅ΠΊΡΡΠ° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ² ΠΌΠ°ΡΡΡΠ°Π± ΠΏΠΎ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 0.5 Π:
> Ρ := [seq([j*fs/(T+1), abs(ri[j+1]+ii[j+1]*I)], j=0..T/2)]:
> q := [seq([j*fs/(T+1), abs(ro[j+1]+io[j+1]*I)], j=0..T/2)] :
> plot(p, frequency=0..fs/2, y=0..0.5, labels=[ΡΠ°ΡΡΠΎΡΠ°, V],
titles=`Π§Π°ΡΡΠΎΡΠ½ΡΠΉ ΡΠΏΠ΅ΠΊΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°`, color=black);
ΠΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 11.37. ΠΠ· Π½Π΅Π³ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΏΠ΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΡΠ°Π² Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌΠΈ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΠ°ΠΌΠΈ, Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠ±ΡΠ²Π°Π΅Ρ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠ° Π½ΠΎΠΌΠ΅ΡΠ° Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΠΈ. ΠΡΡΠ°Ρ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΠ° Π½Π° ΡΠ°ΡΡΠΎΡΠ΅ 2500 ΠΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΡΡΠΎΡΠ°ΠΌΠΈ ΡΠΈΠ»ΡΡΡΠ° 2300 ΠΈ 2700 ΠΡ. ΠΠ°ΠΌΠ΅ΡΠ½Ρ ΡΠ°ΠΊΠΆΠ΅ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΡΠ΅ ΡΠΏΠ΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΌΠ° ΡΠΈΠ³Π½Π°Π»Π° Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠ»ΡΡΡΠ°.
Π ΠΈΡ. 11.37. Π‘ΠΏΠ΅ΠΊΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ ΡΠΏΠ΅ΠΊΡΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°:
> plot(q, frequency=0..fs/2, y=0..0.5, labels=[ΡΠ°ΡΡΠΎΡΠ°, V],
title=`Π§Π°ΡΡΠΎΡΠ½ΡΠΉ ΡΠΏΠ΅ΠΊΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°`, color=black);
ΠΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 11.38. Π₯ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΎΠΉ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΈ ΠΏΡΠΈΠ»Π΅Π³Π°ΡΡΠ΅ΠΉ ΠΊ Π½Π΅ΠΉ ΡΠ·ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΎΡΡ ΡΡΠΌΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΊΡΡΠ°.
Π ΠΈΡ. 11.38. Π‘ΠΏΠ΅ΠΊΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ, ΡΡΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠ»ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΎΠΉ Π³Π°ΡΠΌΠΎΠ½ΠΈΠΊΠΈ Π·Π°ΡΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π°Π½Π΄ΡΠ°. ΠΠΎ ΠΎΠ±ΡΠ°Π·Ρ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΎΠ² ΡΠΈΡΡΠΎΠ²ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ².
11.3.5. ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΈ Π½Π° ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠΌ Π΄ΠΈΠΎΠ΄Π΅
Π ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π½ΠΎ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΈ. ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΅ΠΏΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Es, ΡΠ΅Π·ΠΈΡΡΠΎΡΠ° Rs, ΠΈΠ½Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ L ΠΈ ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠΎΠ΄Π°, ΠΈΠΌΠ΅ΡΡΠΈΠΉ N-ΠΎΠ±ΡΠ°Π·Π½ΡΡ Π²ΠΎΠ»ΡΡ-Π°ΠΌΠΏΠ΅ΡΠ½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΡ (ΠΠΠ₯) β ΡΠΌ. ΡΠ°ΠΉΠ» tdc. Π’ΡΠ½Π½Π΅Π»ΡΠ½ΡΠΉ Π΄ΠΈΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π΅ΠΌΠΊΠΎΡΡΡΡ Π‘, ΡΡΠΎ ΠΈΠΌΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΠΎΠΌ Π‘, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠΌΡ Π΄ΠΈΠΎΠ΄Ρ.
ΠΡΡΡΡ ΠΠΠ₯ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠΎΠ΄Π° Π·Π°Π΄Π°Π½Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
> restart;
> Π:=-3: Π°:=10: Π:=1*10^(-8): b:=20:
> Id:=Ud->A*Ud*exp(-a*Ud)+B*(exp(b*Ud-1));
Id := Ud βA UdΠ΅(-aUd) + Πe(bUd-1)ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊ ΠΠΠ₯:
> plot(Id(Ud), Ud=-.02..0.76, color=black);
ΠΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 11.39. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΠΠ₯ ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π·ΠΊΠΎ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Π°, Π½ΠΎ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠΊ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΎΡΡΠΎΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΠΈΠΎΠ΄Π΅. ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠ΅ΠΏΡ ΡΠΏΠΎΡΠΎΠ±Π½Π° Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΠΎΠΊΠ΅ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΡΠ½Π΅ΡΠ³ΠΈΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΡΡ ΡΠ΅ΠΏΡ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ Π² Π½Π΅ΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π ΠΈΡ. 11.39. ΠΠΠ₯ ΡΡΠ½Π½Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠΎΠ΄Π°
Π Π°Π±ΠΎΡΠ° ΡΠ΅ΠΏΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ:
di/dt= (Es-i(t) * Rs-u(t))/L
du/dt= (i(t)-Id(u(t))/C
ΠΡΡΡΡ Π·Π°Π΄Π°Π½ΠΎ Es=0,35 Π, Rs=15 ΠΠΌ, C=10β10-12, L=30β10-9 ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ tm=10β10-9. ΠΡΠ°ΠΊ, Π·Π°Π΄Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
> Es: = .35: Rs:=15: C:=10*10^(-12): L:=30*10^(-6): tm:=10*10^(-9):
Π‘ΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΡΠ΅ΠΏΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ dsolve:
> se:=diff(i(t),t) = (Es-i(t)*Rs-u(t)) /L,
difff(u(t), t) = (i(t)- Id(u(t))) / Π‘;
> F:=dsolve({se, i(0)=0, u(0)=0}, {i(t),u(t)}, type=numeric,
method-=classiccal, stepsize=10^(-11), output=listprocedure);
F := [t = (proc(t) β¦ end proc), u(t) = () i(t) = (proc(t) β¦ end proc)]ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ L ΠΈ Π‘ ΠΌΡ Π·Π°Π΄Π°Π»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°Π»ΡΠΉ ΡΠ°Π³ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ dsolve β stepsize=10^(-11) (Ρ). ΠΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°Π³Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡΠ»Π΅Π½Π½Π°Ρ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΈΡΠΊΠ°ΠΆΠ°ΡΡΠ°Ρ ΡΠΎΡΠΌΡ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ odeplot ΠΈ display ΠΏΠ°ΠΊΠ΅ΡΠ° plots ΠΏΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ u(t) ΠΈ 10βi(t) ΠΈ Π»ΠΈΠ½ΠΈΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΏΡΡΠΆΠ΅Π½ΠΈΡ Es ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ: