Numerik von Differenzialgleichungen

Werbung
Thomas
Westermann
Computersimulation
Mit einer Einführung in die Systemanalyse:
Modellbildung, Simulation, Interpretation
c Thomas Westermann 20.4.2017
Thomas Westermann
Hochschule Karlsruhe - Technik und Wirtschaft
Moltkestr. 30
Fakultät EIT
76133 Karlsruhe
Homepage zur Veranstaltung:
http://www.home.hs-karlsruhe.de/˜weth0002/ —> Veranstaltungen —> Computersimulation
Email: [email protected]
c Das Copyright sämtlicher Materialien liegt beim Autor. Materialien dürfen zum privaten Gebrauch
oder zu Studienzwecken heruntergeleden werden. Eine Vervielfältigung, Verbreitung oder Bereitstellung
für Dritte bedarf der ausdrücklichen Genehmigung des Autors.
Inhaltsverzeichnis
1
Simulation des Frequenzverhaltens für RCL-Schaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . 1
b
1.1 Berechnung der Übertragungsfunktion UUbA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
0
1.1.1 Spannungsteiler = Kette aus einem Glied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Kette aus zwei Gliedern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Kette aus drei Gliedern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Dimensionierung von Hoch- und Tiefpässen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Ortskurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Bode-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2
Simulation des Zeitverhaltens für elektrische RCL-Schaltungen . . . . . . . . . . . . . . . . . . . .
2.1 Physikalische Gesetzmäßigkeiten der Bauelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Aufstellen der DG einer Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Lösen der DG mit dem Euler-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Einfache Beispiele mit L, C, R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Reihenschaltung von Spule L und Widerstand R . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 Reihenschaltung von Kapazität C und Widerstand R . . . . . . . . . . . . . . . . . . . . . . .
2.4.3 Reihenschaltung von R, C und L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.4 Parallelschwingkreis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.5 Parallelschwingkreis mit realen Spulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Aufstellen der DG für Filterschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Aufstellen der DG für einen Tiefpass (TP2PiCLC) . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Simulation von mechanischen Systemen mit Massenpunkten . . . . . . . . . . . . . . . . . . . . . . 29
4
Simulation geladener Teilchen in elektromagnetischen Feldern . . . . . . . . . . . . . . . . . . . . . 33
5
Signal- und Systemanalyse mit der FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1 Grundlegende Formeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Eigenschaften der DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Berechnung der DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4 FFT mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Signalanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.2 Systemanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
17
18
19
19
19
20
20
21
22
22
25
26
35
35
37
39
41
41
41
VI
6
Inhaltsverzeichnis
Signal- und Systemanalyse mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1 FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich von der Anzahl der
Abtastpunkte ab? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Das Hanning-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Die Prozedur plot fft mit der Option Hanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Maximal erfassbare Frequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5 Frequenzauflösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6 Analyse von Messdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7 System-Analyse mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
43
45
47
49
50
51
54
1.
Simulation des Frequenzverhaltens für
RCL-Schaltungen
Im Folgenden werden wir eine Systematik entwickeln, wie man die komplexe Übertragungsfunktion
für beliebig lange Ketten sukzessive berechnet, wenn die Schaltung aus R−, C− oder L−Elementen
aufgebaut ist. Im Anschluss daran werden einige Spezialfälle für Tiefpass, Hochpass, Bandpass und
Bandsperren diskutiert. Das Ziel ist es anschließend, nicht nur zu gegebener Schaltung die Übertragungsfunktion zu bestimmen, sondern zu gegebener Grenzfrequenz für einen Hoch- oder Tiefpass eine
Dimensionierung der einzelnen Elemente der Kette vorzunehmen. Dabei soll die Übertragungsfunktion
bA
U
b einen möglichst glatten Verlauf im Arbeitsbereich besitzen.
U
0
Qualitativ werden für die Filter folgende Verläufe von | UUbA | gefordert:
b
0
Abb. 1.1. Übertragungsverhalten von Tiefpass, Hochpass, Bandpass und Bandsperre
Zur Realisierung werden wir nur Ketten betrachten, die sich aus Π- oder T -Gliedern zusammensetzen:
Abb. 1.2. Schaltungen, die auf T-Gliedern basieren
Abb. 1.3. Schaltungen, die auf Π-Gliedern basieren
2
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
Die Übertragungsfunktion ist definiert als das Verhältnis von Ausgangs- zu Eingangsspannung, wenn
b0 = U0 eiωt angenommen wird:
die Eingangsspannung als komplexe Wechselspannung U
H(ω) =
bA
U
.
b0
U
Diese komplexe Übertragungsfunktion lässt sich dann graphisch über den Betrag |H(ω)| und die Phase
ϕ(ω) darstellen:
H(ω) = |H(ω)|eiϕ(ω)
p
mit |H(ω)| = H(ω) · H ∗ (ω) und tan(ϕ(ω)) = Im(H(ω))
Re(H(ω)) .
Man beachte, dass für den folgenden Algorithmus die einzelnen Elemente bzw. Kettenglieder noch nicht
spezifiziert werden; d.h. die Formeln gelten sowohl für Π- als auch für T -Glieder gleichermaßen. Für
die Impedanzen (Quer- und Längsimpedanzen) muss dann konkret für die jeweilige Schaltung noch
RΩ (ohmscher Widerstand)
iωL (Impedanz einer Spule mit Induktivität L)
1
iωC (Impedanz eines Kondensators mit Kapazität C)
gesetzt werden.
Tabelle: Filterschaltungen
Tiefpässe aus T -Glieder bestehend:
Hochpässe aus T -Glieder bestehend:
Tiefpässe aus Π-Glieder bestehend:
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
Hochpässe aus Π-Glieder bestehend:
Bandpässe aus Π-Glieder bestehend:
Bandpässe aus Π-Glieder bestehend:
Bandpässe aus T -Glieder bestehend:
Bandsperren aus T -Glieder bestehend:
3
4
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
1.1 Berechnung der Übertragungsfunktion
bA
U
b0
U
1.1.1 Spannungsteiler = Kette aus einem Glied
z1 = Längsimpedanz
y1 = Querimpedanz
bA
U
y1 I
y1
=
=
b
z
I
+
y
I
z
1
1
1 + y1
U0
1.1.2 Kette aus zwei Gliedern
Wir betrachten zunächst die zweite Masche und ersetzen
diese durch einen Ersatzwiderstand
1
y1 (z2 + y2 )
y1p = 1
=
1
y 1 + z2 + y 2
y1 + z2 +y2
Für die verbleibende Masche können wir die Spannungsteilerregel anwenden:
b1
y1p
U
=
b
y1p + z1
U0
Damit kennen wir die Spannung, die bei y1p abfällt und
können nun nochmals die Spannungsteilerregel auf die 2.
Masche anwenden:
b2
U
y2
=
b
y
+ z2
2
U1
Zusammenfassung:
z1 , z 2
Längsimpedanzen
y1 , y 2
Querimpedanzen
y1p = y1 · (y2 + z2 )/(y1 + y2 + z2 )
u1 = u0 · y1p /(z1 + y1p )
u2 = u1 · y2 /(z2 + y2 )
1.1 Berechnung der Übertragungsfunktion
1.1.3 Kette aus drei Gliedern
Man ersetzt die Schaltung sukzessive von rechts
nach links durch Ersatzwiderstände, so dass zum
Schluss nur noch eine Masche mit einem Parallelwiderstand übrig bleibt.
y2p =
y2 (y3 + z3 )
y 2 + y 3 + z3
y1p =
y1 (y2p + z2 )
y2 + y2p + z2
Anschließend wendet man nun von links nach
rechts die Spannungsteilerregel an
→
b1
U
y1p
=
b
y
1p + z1
U0
→
→
Zusammenfassung
z1 , z 2 , z 3
Längsimpedanzen
y1 , y 2 , y 3
Querimpedanzen
y2p = y2 · (y3 + z3 )/(y2 + y3 + z3 )
y1p = y1 · (y2p + z2 )/(y1 + y2p + z2 )
U1 = U0 · y1p /(y1p + z1 )
U2 = U1 · y2p /(y2p + z2 )
U3 = U2 · y3 /(y3 + z3 )
b2
y2p
U
=
b
y
2p + z2
U1
→
b3
y3
U
=
.
b
y
3 + z3
U2
bA
U
b0
U
5
6
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
1.1.4 Beispiele mit Maple
Wir berechnen die komplexe Übertragungsfunktion für (1) einen Hochpass, (2) einen Tiefpass, (3)
einen Bandpass und (4) eine Bandsperre mit Maple. Die zugehörigen Maple-Worksheets können durch
Anklicken gestartet und anschließend ausgeführt werden.
HP2TCLC Hochpass, der aus zwei T -Gliedern besteht.
TP2PiCLC Tiefpass, der aus zwei Π-Gliedern besteht.
BP2PiLCp Bandpass, der aus zwei Π-Gliedern besteht.
BS2TLCp Bandsperre, die aus zwei T -Gliedern besteht.
1.1 Berechnung der Übertragungsfunktion
bA
U
b0
U
7
(1.) Hochpass: 2-T-CLC-Glieder HP2TCLC
-------R-----C-------------1/2 C-----------C------|
|
|
L
L
R
|
|
|
--------------------------------------------------> Z1:= R + 1/(I*w*C):
> Z2:= 1/(I*w*C/2):
> Z3:= 1/(I*w*C):
> Y1:= I*w*L:
> Y2:=I*w*L:
> Y3:=R:
> Y2p:= Y2*(Y3+Z3)/(Y2+Y3+Z3):
> Y1p:= Y1*(Y2p+Z2)/(Y1+Y2p+Z2):
> u1:= Y1p/(Y1p+Z1):
> u2:= u1*Y2p/(Y2p+Z2):
> u3:= u2*Y3/(Y3+Z3):
> wiu3:=argument(u3):
> beu3:=abs(simplify(u3));
1
beu3 := w5 L2 C 3 R/(I w5 L2 C 3 R + 2 w4 L2 C 2 − 4 I w3 L C 2 R − 3 w2 L C + R2 w4 C 3 L
2
− R2 w2 C 2 + 2 I R w C + 1)
Die Übertragungsfunktion ist eine gebrochenrationale Funktion in w mit höchstem Exponent 5, da die
Schaltung 5 Energiespeicher besitzt. Die graphische Darstellung des Betrags der Übertragungsfunktion
erhält man durch
> R:=1000: C:=5.28e-9: L:=3.128e-3:
> titel:=‘Übertragungsfunktion HP2TLCL‘:
> plot( beu3,w=0..400000,title=titel,thickness=2);
bertragungsfunktion HP2TLCL
0.5
0.4
0.3
0.2
0.1
0
100000
200000
w
300000
400000
Für R=1000 Ohm, C=5.28e-9 F, L=3.128e-3 H erhält man die Grenzfrequenz wg=175000 1/s.
Die graphische Darstellung der Phase erhält man durch
> plot( wiu3,w=0..400000,thickness=2);
8
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
(2.) Tiefpass: 2-Pi-CLC-Glieder: TP2PiCLC
-------R----------------------- L-----------------L------------|
|
|
|
C
2 C
C
R
|
|
|
|
---------------------------------------------------------------(kr=0.8; kf=1.3)
> Z1:= R:
> Z2:= I*w*L:
> Z3:= I*w*L:
> Y1:= 1/(I*w*C):
> Y2:= 1/(I*w*2*C):
> Y3:= 1/(I*w*C+1/R):
> Y2p:= Y2*(Y3+Z3)/(Y2+Y3+Z3):
> Y1p:= Y1*(Y2p+Z2)/(Y1+Y2p+Z2):
> u1:= Y1p/(Y1p+Z1):
> u2:= u1*Y2p/(Y2p+Z2):
> u3:= u2*Y3/(Y3+Z3):
> wiu3:=argument(u3):
> beu3:=abs(simplify(u3));
beu3 :=
1 R/(−I R + 4 I w2 L C R + w L − 2 I R w4 L2 C 2 − w3 L2 C + 2 w C R2
2
− 3 R2 C 2 L w3 + w5 L2 C 3 R2 )
> R:=2500: C:=1e-9: L:=10e-3:
> titel:=‘Übertragungsfunktion TP2PiCLC‘:
> plot( beu3,w=0..1000000,title=titel,thickness=2);
> titel:=‘Phase TP2PiCLC‘:
> plot( wiu3,w=0..1000000,title=titel,thickness=2);
bertragungsfunktion TP2PiCLC
Phase TP2PiCLC
0.5
3
0.4
2
1
0.3
0
0.2
–1
0.1
0
–2
–3
200000
400000 w 600000
800000
Die Grenzfrequenz ist wg=445000 1/s.
1e+06
200000
400000 w 600000
800000
1e+06
1.2 Dimensionierung von Hoch- und Tiefpässen
9
1.2 Dimensionierung von Hoch- und Tiefpässen
Bisher haben wir diskutiert, wie man zu einer gegebenen Kette die Übertragungsfunktion berechnet
und dabei die Grenzfrequenz ωg bestimmt. Jetzt werden wir den anspruchsvolleren Weg: Wir geben die
Grenzfrequenz ωg und den Widerstand R vor. Gesucht sind dann die passenden Werte für L und C.
Wenn man die folgenden Voraussetzungen macht, kann man durch gezieltes Probieren mit Maple sehr
gute Resultate gewinnen.
Voraussetzungen:
(1) Der Aufbau der Kette erfolgt entweder durch identische Π− oder T −Glieder.
(2) Alle Y - und Z- Impedanzen bestehen aus reinen Blindwerten (also nur L und C; kein R). Dies
ist zwar nicht realisierbar, aber es kann zunächst von verlustlosen Spulen ausgegangen werden.
Nachdem angepasste Betriebsparameter gefunden sind, kann der Einfluss von Spulenwiderständen
berücksichtigt werden.
(3) Der Innenwiderstand Ri ist gleich dem Lastwiderstand RA (Leistungsanpassung der Schaltung bzw.
Spannungsteilerregel).
Generelle Formeln
(1) Skalierung der Grenzfrequenz: Die Grenzfrequenz ωg bei Hoch- oder Tiefpass ist definiert als die
Frequenz bei der |H(ω)| auf √12 des Durchlasswertes abnimmt. Es gilt der Zusammenhang
ωg =
k
√f ,
LC
(1.1)
wenn kf eine schaltungsspezifische Konstante darstellt.
(2) Skalierung des Widerstandes: Der Zusammenhang zwischen Widerstand und L, C lautet
R = kR ·
q
L
C,
(1.2)
wenn kR eine schaltungsspezifische Konstante darstellt.
Um die schaltungsspezifischen Konstanten kf und kR zu bestimmen, wählen wir für eine erste
Simulation L = C = 1. Denn dann entnimmt man bei gegebener Schaltung den angepassten
Widerstand R bei dem die Übertragungsfunktion einen möglichst glatten Verlauf besitzt. Damit
erhält man den Skalierungsfaktor kR . Aus dem Übertragungsverhalten liest man den Skalierungsfaktor kf ab, der im Falle L = C = 1 genau der Grenzfrequenz entspricht.
10
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
Vorgehensweise zur Dimensionierung:
(1) Simulation Man setze L = C = 1 und variiere R1 = RA solange bis ein möglichst glatter
Frequenzgang gefunden wird ⇒ Ran (angepasster Widerstand). Gesucht sind dann zu gegebener
Kreisfrequenz ωg und vorhandenem Widerstand R die zugehörigen Größen von L und C. Die Übertragungsfunktion wird nun so skaliert werden, dass das Übertragungsverhalten gleich bleibt:
(2) Skalierung von L und C bei gegebenem ωg und R
(1.1) · (1.2)
(1.2)
(1.1)
ωg · R = kR · kf ·
1
⇒ C=
C
R
kR
=
·L⇒ L=
ωg
kf
kf ·kR
ωg ·R
kf ·R
ωg ·kR
(1.3)
(1.4)
(3) Bestimmt man zu den berechneten Werten wiederum die Übertragungsfunktion, dann hat die qualitativ den gleichen Verlauf wie für die Parameter L = C = 1, nur jetzt mit der Grenzfrequenz
ωg .
Beispiel: Gesucht ist ein Hochpass bestehend aus einem Π-Glied, der bei einem Widerstand von R =
500Ω eine Grenzfrequenz von ωg = 1000s−1 besitzt:
Abb. 1.4. Π-Glied
Mit
z1 = R,
z2 =
1
,
iωC
y1 = iωL,
y2 =
1
R
1
1
+ iωL
folgt
y1p =
und
y1 (y2 + z2 )
y 1 + y 2 + z2
y1p
y1p + z1
y2
u2 = u1 ·
.
y 2 + z2
u1 =
(1) Um die schaltungsspezifischen Konstanten kf und kR zu bestimmen, setzen wir L = C = 1. Durch
Variation von R im Bereich R = 0.5 . . . 1.5 erhalten wir für R = 0.8 einen glatten Verlauf der
Übertragungsfunktion. Aus dem Schaubild der Übertragungsfunktion lesen wir die Grenzfrequenz
ωg = 0.57 ab.
⇒ kR = 0.8
und
kf = 0.57
1.2 Dimensionierung von Hoch- und Tiefpässen
11
(2) Damit ergeben sich die Dimensionierungen für L und C:
0.57 · 0.8
= 0.912 · 10−6 F
1000 · 500
0.57 · 500
(II) : L =
= 0.355H
0.8 · 1000
(I) : C =
1.2.1 Beispiele mit Maple
In den beiden folgenden Worksheets werden einen Hochpass und ein Tiefpass skaliert. Die zugehörigen
Maple-Worksheets können durch Anklicken gestartet und anschließend ausgeführt werden.
(1.) Tiefpass: Gegeben sei ein Tiefpass, der aus zwei Π-Glieder zusammengesetzt ist. Gesucht sind L
und C, so dass er bei R = 1000Ω eine Grenzfrequenz von ω = 200001/s besitzt.
(2.) Hochpass: Gegeben ist ein Hochpass, der aus einem Π-Glied zusammengesetzt ist. Gesucht sind L
und C, so dass er bei R = 500Ω eine Grenzfrequenz von ω = 10001/s besitzt.
12
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
Beispiel mit Maple: Skalierung eines Tiefpasses.
Gegeben sei ein Tiefpass, der aus zwei Pi-Glieder zusammengesetzt ist. Um die Übertragungsfunktion des
Tiefpasses zu berechnen, verwenden wir die Prozedur kette. Hierzu setzen wir für die Längsimpedanzen
> Z[1] := R: Z[2] := I*w*L: Z[3] := I*w*L:
und für die Querimpedanzen
> Y[1] := 1/(I*w*C): Y[2] := 1/(I*w*2*C): Y[3]:= 1/(I*w*C +1/R ):
Als Eingangsspannung wählen wir
> U0 := 1:
Da der Tiefpass aus 3 Gliedern besteht, ist n=3 und der Aufruf lautet
> kette(U0,Z,Y,3);
−1
I R/(−I R + 4 I w2 L R C + w L − 2 I R w4 L2 C 2 − w3 L2 C + 2 R2 w C − 3 w3 L C 2 R2
2
+ w5 L2 C 3 R2 )
Die Übertragungsfunktion ist eine komplexe gebrochenrationale Funktion in w mit dem höchsten auftretenden Exponent 5: Die Kette enthält 5 unabhängige Energiespeicher. Zur Dimensionierung der Lund C-Teile setzen wir zunächst
> C:=1: L:=1:
und zeichnen die Übertragungsfunktion 3-dimensional
> plot3d(abs(H), w=0..2, R=0..2,axes=boxed);
0.5
0.4
0.3
0.2
0.1
0
0
0
0.5
0.5
R
1
1
1.5
1.5
2
2
w
1.2 Dimensionierung von Hoch- und Tiefpässen
13
Die Übertragungsfunktion hat bei R ≈ 0.9 einen glatten Verlauf. Wir zeichnen daher H(w) für 0.7 ≤
R ≤ 1.1 detaillierter:
> with(plots):
> r:=0.7: dR:=0.1:
>
>
>
>
>
>
>
for i from 1 to 4
do
titel:=convert(r,string):
p||i:=plot( abs(subs(R=r,H)), w=0..2, thickness=2,title=titel);
r:=r + dR:
od:
display([seq(p||i,i=1..4)],insequence=true);
Aus dem Graphen entnimmt man die Grenzfrequenz
> kf := 1.4 :
bei dem optimalen Widerstand
> kr := 0.8 :
Bestimmung von L und C für R=500 und w g=20000:
> R := 1000 : wg := 20000 :
> C := kf ∗ kr /(wg ∗ R);
> L := kf /kr ∗ R/wg ;
C := .5600000000 10−7
L := .08750000000
Die Übertragungsfunktion für diese angepassten Dimensionierungen ist:
> plot( abs(H), w=0..40000, thickness=2, title=‘Übertragungsfunktion‘);
bertragungsfunktion
0.5
0.4
0.3
0.2
0.1
0
10000
20000
w
30000
40000
14
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
1.3 Ortskurven
Eine zu Betrag und Phase alternative graphische Darstellung der Übertragungsfunktion ist die sog.
Ortskurve. Bei dieser Darstellung von H(ω) werden der Betrag |H(ω)| und der Phasenwinkel ϕ(ω)
gleichzeitig in ein Schaubild im Polar-Koordinatensystem gezeichnet. Der Betrag entspricht dem Radius
und der Phasenwinkel dem Winkel. Dabei variieren |H(ω)| und ϕ(ω) gleichzeitig als Funktion von ω.
Für unser Beispiel des Hochpasses mit einem Π-Glied ist
–0.2
–0.1
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0.1
0.2
0.3
–0.2
(a) L = C = 1. ω variiert von 0 . . . 2.
–0.1
0
0.1
0.2
0.3
(b) L = 0.4H, C = 0.9 · 10−6 F . ω variiert
von 0 . . . 3000.
Abb. 1.5. Ortskurven
Die beiden Ortskurven sind für die entsprechenden ω-Parameterbereiche identisch. In Maple wird die
Ortskurve dargestellt entweder durch den Befehl
> plot([Re(H(ω)), Im(H(ω)), ω = 0 . . . 2]);
wobei Re(H(ω)) bzw. Im(H(ω)) für den Realteil bzw. Imaginärteil der komplexen Funktion H(ω)
steht oder
> with(plots):
> polarplot([abs(H(ω)), argument(H(ω)), ω = 0..2]);
wenn abs(H(ω)) der Betrag und argument(H(ω)) die Phase von H(ω) bedeutet.
1.3 Ortskurven
15
Für die anfangs des Kapitels diskutierten Beispiele des (1) Hoch-, (2) Tief-, (3) Bandpasses bzw. (4)
der Bandsperre ergeben sich die folgenden Ortskurven:
0.4
0.4
0.2
0.2
–0.4
0
–0.2
–0.4
–0.2
0.2
0.4
0.2
–0.2
–0.2
–0.4
–0.4
(a) Hochpass HP2TLCL
–0.4
–0.2
(b) Tiefpass TP2PiCLC
0.4
0.4
0.2
0.2
0
0.2
–0.4
0.4
–0.2
0
–0.2
–0.2
–0.4
–0.4
(c) Bandpass BP2PiLCr
0.2
0.4
(d) Bandsperre BS2TLCp
Abb. 1.6. Ortskurven
Beobachtung des Phasenwinkels: Beim Variieren der Frequenz von 0 bis ∞ wandert der Phasenwinkel
über N · 90◦ . Dabei ist N die Anzahl der Energiespeicher.
16
1 Simulation des Frequenzverhaltens für RCL-Schaltungen
1.4 Bode-Diagramm
Eine weitere Möglichkeit das Übertragungsverhalten H(ω) graphisch darzustellen besteht darin den
Betrag der Übertragungsfunktion, |H(ω)|, oder die Phase, argument(H(ω)), als Funktion von ω zu
zeichnen.
> plot(abs(H(ω)), ω = 0..ωmax );
> plot(argument(H(ω)), ω = 0..ωmax );
Zu dieser Darstellung hat sich in den Anwendungen eine alternative Möglichkeit durchgesetzt, nämlich
der 10-er Logarithmen des Betrags bei logarithmischer Skalierung der ω-Achse zu zeichnen, dem sog.
Bode-Diagramm. Genau gesagt wird
20 dB log10 (|H(ω)|)
bei logarithmischer Skalierung der ω-Achse aufgetragen. In Maple wird das Bode-Diagramm realisiert
durch den Befehl
> with(plots);
> semilogplot(20*log[10](abs(H(ω)), ω = 0.1..ωmax );
Man beachte dabei, dass ω nicht bei 0 beginnen darf, da eine logarithmische Skalierung der ω-Achse
vorgenommen wird und log(0) nicht definiert ist!
6.05
6.10
6.15
6.20
6.25
6.30
6.35
1.
.1e2
.1e3
.1e4
w
.1e5
1e+05 1e+06
Abb. 1.7. Bode-Diagramm
2.
Simulation des Zeitverhaltens für elektrische
RCL-Schaltungen
Im Folgenden werden für elektrische Schaltungen, die sich aus RCL-Gliedern zusammensetzen die zugehörigen Differenzialgleichungen aufgestellt, die dann mit Hilfe des Rechners gelöst werden. Das Ziel
ist für beliebige Eingangssignale die zugehörigen Ausgangssignale zu berechnen.
2.1 Physikalische Gesetzmäßigkeiten der Bauelemente
Widerstand:
U (t) = R · I(t)
Der Strom durch den Widerstand R ist I(t) =
R.
Spule mit Induktivität L:
1
R U (t),
wenn U (t) der Spannungsabfall am Widerstand
U (t) = L dI(t)
dt
Fließt durch eine Spule L ein Strom I, so ist der Spannungsabfall an der Spule U proportional
Proportionalitätskonstante bezeichnet man mit Induktivität L: U (t) = L dI(t)
dt .
Kondensator mit Kapazität C:
dI
dt .
Die
I(t) = C dUdt(t)
Liegt am Kondensator die Spannung U (t), so ist die auf dem Kondensator liegende Ladung Q(t) =
C · U (t), wenn C die Kapazität des Kondensators ist. Wegen I = dQ
dt folgt für den Strom durch den
Kondensator I(t) = C · dUdt(t) . Natürlich fließt der Strom nicht durch den Kondensator, sondern auf der
einen Seite fließt Ladung zu, auf der anderen Seite fließt Ladung ab.
2.2 Aufstellen der DG einer Schaltung
(1) Jedem Energiespeicher wird eine Zustandsvariable zugeordnet:
Jedem Kondensator Ci wird seine Spannung Ui , jeder Spule Li wird ihr Strom Ii als
Zustandsvariable zugeordnet. Den Widerständen wird keine Zustandsvariable zugeordnet, da
Widerstände keine Energiespeicher, sondern nur Energieverbraucher darstellen.
(2) Der Maschensatz und der Knotensatz werden auf die Schaltung angewendet. Das Ziel ist für jede Zustandsvariable eine DG 1. Ordnung zu erhalten. Sind Spule und Kondensator in Reihe
geschaltet, wird formal ein weiterer Knoten eingeführt.
(3) In der Regel führt die Vorgehensweise zu je einer DG für jede Zustandsvariable, die außer der
! Achtung: Manchmal
Ableitung der Zustandsvariablen keine weiteren Ableitungen enthält. 4
sind aber mehrere Ableitungen 1. Ordnung in einer DG vorhanden. Dann muss noch ein lineares
Gleichungssystem gelöst werden, damit man die gewünschte Struktur erhält.
18
2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen
2.3 Lösen der DG mit dem Euler-Verfahren
Gegeben ist die DG mit Anfangsbedingung
y 0 (t) = f (t, y(t)) + Ue (t)
y(0) = y0 .
Nach dem Eulerschen-Streckenzug-Verfahren kann diese DG schrittweise gelöst werden:
y(ti+1 ) = y(ti ) + y 0 (ti ) · dt
bzw. kurz
y neu = y alt + (y 0 )alt · dt.
Abb. 2.1. Euler-Verfahren
Dies liefert bei gegebener Funktion Ue (t) und Anfangsbedingung y(0) = y0 den folgenden Algorithmus
zum numerischen Lösen der DG:
y = y0
for t from tmin by dt to tmax do
y = y + (f(t,y) + Ue(t)) * dt
end do
Um anschließend die numerische Lösung zeichnen zu können, speichern wir zu jedem Zeitpunkt sowohl
den Zeitpunkt t als auch den Funktionswert y in einer Liste ab. Der so erweiterte Algorithmus lautet
dann
y=y0
data[0] = [tmin, y]
i=1
for t from
y = y +
data[i]
i = i +
end do
tmin by dt to tmax do
(f(t,y) + Ue(t)) * dt
= [t+dt, y]
1
2.4 Einfache Beispiele mit L, C, R
2.4 Einfache Beispiele mit L, C, R
2.4.1 Reihenschaltung von Spule L und Widerstand R
Energiespeicher: L
Zustandsvariable: I
U0 = UR + UL = R · I + L dI
dt
Maschensatz:
⇒
dI
dt
→ DG für I
= (U0 − RI)/L
U0 = A · sin(2πf t)
i=1
I=0
for t from tmin by dt to tmax
do
I = I + (U0 − RI)/L · dt
data[i] = [t + dt, I]
i=i+1
end do
Algorithmus:
2.4.2 Reihenschaltung von Kapazität C und Widerstand R
Energiespeicher: C
Zustandsvariable: U
U0 = UR + U = R · I + U = R · C dU
dt + U
Maschensatz:
⇒
Algorithmus:
dU
dt
= (U0 − U )/(R · C)
→ DG für U
U0 = A · sin(2πf t)
U =0
for t from tmin by dt to tmax
do
U = U + (U0 − U )/(R · C) · dt
...
end do
19
20
2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen
2.4.3 Reihenschaltung von R, C und L
I
R
K
L
U0
C
Zwei Energiespeicher: L, C
Zwei Zustandsvariable: I, U
U
Maschensatz:
U0 = UR + UL + U = R · I + L dI
dt + U
Knotensatz für K:
I=C·
⇒
dI
dt
dU
dt
dU
dt
= (U0 − U − RI)/L
= I/C
→ DG für I
→ DG für U
U0 = A · sin(2πf t)
U = 0 und I = 0
for t from tmin by dt to tmax
do
I = I + (U0 − U − RI)/L · dt
U = U + I/C · dt
...
end do
Algorithmus:
2.4.4 Parallelschwingkreis
K
R
I
U0
C
L
M1
U
Zwei Energiespeicher: L, C
Zwei Zustandsvariable: I, U
M2
Maschensatz für M1 : U0 = UR + U = R · I0 + U
Knotensatz für K:
I0 = I + C dU
dt
Maschensatz für M2 : L dI
dt = U
! Achtung: Man beachte, dass in den Gleichungen die Größe I0 auftritt, die keinem Energiespeicher
4
zugeordnet ist. Daher muss sie aus den Gleichungen eliminiert werden, indem wir sie durch die Gleichung
des Knotensatzes ersetzen. Zum Schluss erhalten wir zwei DG für die beiden Energiespeicher:
2.4 Einfache Beispiele mit L, C, R
⇒ U0 = R(I + C dU
dt ) + U
und
21
L dI
dt = U
bzw.
dU
dt
⇒
dI
dt
= ((U0 − U )/R − I)/C
= U/L
U0 = A · sin(2πf t)
I = 0 und U = 0
for t from tmin by dt to tmax
do
U = U + ((U0 − U )/R − I)/C · dt
I = I + U/L · dt
...
end do
Algorithmus:
Typische Anwendung dieser Schaltung: Bezüglich der Spannung U wirkt die Schaltung als Bandpass:
Hohe Frequenzen werden wegen der Wirkung von C, tiefe Frequenzen werden wegen der Wirkung von
1
L nicht durchgelassen. Nur ein Frequenzband um die mittlere Frequenz ω = √LC
kommt durch.
2.4.5 Parallelschwingkreis mit realen Spulen
K
I
R
Zwei Energiespeicher: L, C
Zwei Zustandsvariable: I, U
L
U0
C
M1
RL
RA
U
M2
Maschensatz für M1 : U0 = UR + U = R · I0 + U
Knotensatz für K:
I0 = I + C dU
dt +
U
RA
Maschensatz für M2 : L dI
dt + RL I = U
! Achtung: Man beachte, dass wie im Falle des Parallelschwingkreises in den Gleichungen die Größe
4
I0 auftritt, die keinem Energiespeicher zugeordnet ist. Daher muss sie aus den Gleichungen eliminiert
werden, indem wir sie wieder durch die Gleichung des Knotensatzes ersetzen. Zum Schluss erhalten wir
zwei DG für die beiden Energiespeicher, die analog dem idealen Schwingkreis gelöst werden.
⇒
dU
dt
dI
dt
= ((U0 − U )/R − I − U/RA )/C
= (U − RL I)/L
22
2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen
2.5 Aufstellen der DG für Filterschaltungen
2.5.1 Aufstellen der DG für einen Tiefpass (TP2PiCLC)
Gegeben ist der Tiefpass, der sich aus zwei Π-Gliedern zusammensetzt, TP2PiCLC:
Abb. 2.2. Tiefpass
Der Tiefpass besteht aus 5 Energiespeicher C1 , C2 , C3 , L1 , L2 ; diesen Energiespeichern werden 5 Zustandsvariablen U1 , U2 , U3 , I1 , I2 zugeordnet. Systematisches Anwenden der Maschenregel und Knotenregel liefert die folgenden Gleichungen, wenn die physikalischen Gesetzmäßigkeiten UΩ = R · I
(Ohmsches Gesetz), IC = C · U̇ (Strom am Kondensator), UL = L · I˙ (Spannungsabfall an der
Spule) berücksichtigt werden:
M1: U0 = RI0 + U1
K1: I0 = C1 U˙1 + I1
M2: U1 = L1 I˙1 + U2
K2: I1 = C2 U˙2 + I2
M3: U2 = L2 I˙2 + U3
K3: I2 = C3 U˙3 + U3 /R
! Achtung: I0 muss ersetzt werden, da es
4
keinem Energiespeicher zugeordnet ist!
Dies sind zunächst 6 Gleichungen, wobei Gleichung M1 keine DG darstellt. In dem zu lösenden System
dürfen als Variablen nur die 5 Zustandsvariablen U1 , U2 , U3 ; I1 , I2 vorkommen, sonst keine. Also muss
aus den Gleichungen M1 und K1 die Variable I0 eliminiert werden, da sie keinem Energiespeicher zugeordnet ist. Daher setzen wir Gleichung K1 in Gleichung M1 ein. Somit erhalten wir 5 DG 1. Ordnung:
U˙1 = ((U0 − U1 )/R − I1 )/C1
I˙1 = (U1 − U2 )/L1
U˙2 = (I1 − I2 )/C2
I˙2 = (U2 − U3 )/L2
U˙3 = (I2 − U3 /R)/C3
Man beachte, dass pro DG nur eine Ableitung vorkommt und wir somit durch das Euler-Verfahren den
folgenden Algorithmus zur Lösung des Systems erhalten
2.5 Aufstellen der DG für Filterschaltungen
23
Algorithmus:
U0 = . . . vorgegeben (s.u.)
U1 = 0, I1 = 0, ... (Alle unbekannte Größen initialisieren)
for t from tmin by dt to tmax
do
U1 = U1 + ((U0 − U1 )/R − I1 )/C1 · dt
I1 = I1 + (U1 − U2 )/L1 · dt
U2 = U2 + (I1 − I2 )/C2 · dt
I2 = I2 + (U2 − U3 )/L2 · dt
U3 = U3 + (I2 − U3 /R)/C3 · dt
...
end do
Bemerkungen:
(1) Man beachte, dass die DG in der Reihenfolge ihres Auftretens bei der physikalischen Modellierung
gelöst werden sollten, also von der Eingangsspannung zur Ausgangsspannung.
(2) Indem die Variablen im Algorithmus nicht mit U1neu und U1alt bezeichnet werden, erspart man sich
die Umbenennung dieser Variablen und in die folgenden Gleichungen werden immer die aktuellen
(also neu berechneten) Daten berücksichtigt.
Wir wählen L1 = L2 = 1; C1 = C3 = 1; C2 = 2; R = 0.8 (kf = 1.314) (siehe Kapitel über die
Übertragungsfunktion). Für die numerische Rechnung wählen wir ∆t = 0.005, tmax = 90.
(1.) Für die Eingangsspannung setzen wir
U0 (t) = 1. · sin(ωt) mit ω = 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0
und erhalten für die Amplitude der Ausgangsspannung
Abb. 2.3. Ausgangssignal für das Eingangssignal u0 = 1 · sin(ωt) mit ω = 1
ω
UA
0.5
0.5
0.75
0.5
1.0
0.5
1.25
0.42
1.5
0.17
1.75
0.065
2.0
0.029
Man erkennt, dass die Ausgangsamplitude bei Frequenzen zwischen 1.25 und 1.5 drastisch abfällt.
24
2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen
Abb. 2.4. Sprung S(t)
(2.) Um einen Einschaltvorgang zu simulieren, setzen wir als Eingangsspannung U0 (t) = S(t). Dabei ist S(t) die Sprungfunktion.
Für negative Zeiten hat die Funktion den Wert 0 und springt bei
t = 0 auf den Wert 1. In Maple wird diese Funktion mit Heaviside(t)
bezeichnet. Der Wert an der Stelle t = 0 muss explizit angegeben
werden.
Das zur Sprungfunktion gehörende Antwortsignal ist unten abgebildet.
Da dieses die Reaktion des Systems auf die Sprungfunktion ist, nennt
man das Antwortsignal die Sprungantwort:
Abb. 2.5. Sprungantwort
1/T
0
T
t
Abb. 2.6. Impulsstoß
(3.) Wählen wir als weiteres Eingangssignal (Eingangsspannung)
einen Impulsstoß mit Breite T und Höhe 1/T . Damit regen wir
das System impulsartig an. Der Impulsstoß lässt sich in Maple mit
1
T (S(t) − S(t − T )) bzw.
> U0 (t) := 1/T*(Heaviside(t)-Heaviside(t-T));
> Heaviside(0):=0;
realisieren. Die Ausgangsspannung nennt man zugehörig die Impulsantwort.
Abb. 2.7. Impulsantwort für T = 0.5
2.5 Aufstellen der DG für Filterschaltungen
25
2.5.2 Beispiele mit Maple
Wir stellen die Differenzialgleichungen für (1) einen Hochpass, (2) einen Tiefpass, (3) einen Bandpass
und (4) eine Bandsperre auf und lösen diese mit Maple. Die zugehörigen Maple-Worksheets können
durch Anklicken gestartet und anschließend ausgeführt werden.
HP2TLCL Hochpass, der aus zwei T -Gliedern besteht.
TP2PiCLC Tiefpass, der aus zwei Π-Gliedern besteht.
BP2PiLCp Bandpass, der aus zwei Π-Gliedern besteht.
BS2TLCp Bandsperre, die aus zwei T -Gliedern besteht.
26
2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen
2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple
1. Aufstellen der DG
> eq1:= R*(C1*dU1 + I1) = Ue-U1;
> eq2:= U1 = L1*dI1 + U2;
> eq3:= I1 = C2*dU2 +I2;
> eq4:= U2 = L2* dI2 + U3;
> eq5:= I2 = C3* dU3 +U3/R;
eq1 := R (C1 dU1 + I1 ) = Ue − U1
eq2 := U1 = L1 dI1 + U2
eq3 := I1 = C2 dU2 + I2
eq4 := U2 = L2 dI2 + U3
eq5 := I2 = C3 dU3 +
U3
R
2. Auflösen der DG nach den Ableitungen
> sol:=solve({eq1,eq2,eq3,eq4,eq5}, {dU1,dU2,dU3,dI1,dI2});
> assign(sol);
sol := {dU2 = −
−I1 + I2
−U1 + U2
−U2 + U3
−I2 R + U3
, dI1 = −
, dI2 = −
, dU3 = −
,
C2
L1
L2
C3 R
R I1 − Ue + U1
}
dU1 = −
R C1
Parameter und Anfangsbedingungen
> R:=0.8: C1:=1: C2:=C1*2: C3:=C1: L1:=1:L2:=L1:
> U1:=0: U2:=0: U3:=0: I1:=0: I2:=0:
Eingangsfunktion
> Ue:=sin(w*t): w:=1.: #Wechselspannung
> Heaviside(0):= 0:
> Ue:=Heaviside(t): #Sprungfunktion
> T:=0.5: Ue:=Heaviside(t)-Heaviside(t-T):
3. Lösen der DG mit dem Euler-Verfahren
> tmax:=90:
> dt:=tmax/500:
> i:=0:
> for t from 0 by dt to tmax
> do i:=i+1:
> U1:=U1 + dt*dU1:
> I1 := I1 + dt* dI1:
> U2:= U2 + dt * dU2:
2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple
>
>
>
>
>
I2:= I2 + dt * dI2:
U3:= U3 + dt * dU3:
data1[i]:=[t,U3]:
data2[i]:=[t,Ue]:
od:
4. Darstellen der Lösung
> plot([seq(data1[n],n=1..i)], thickness=2);
Systemreaktion für eine Wechselspannung als Eingangssignal bei w=1:
0.4
0.2
0
20
40
60
80
–0.2
–0.4
Systemreaktion für eine Sprungfunktion als Eingangssignal:
0.5
0.4
0.3
0.2
0.1
0
20
40
60
80
Systemreaktion für eine Impulsfunktion als Eingangssignal:
0.08
0.06
0.04
0.02
0
–0.02
20
40
60
80
27
3.
Simulation von mechanischen Systemen mit
Massenpunkten
Die Modellierung von mechanischen Systemen mit Massenpunkten gestaltet sich einfacher als die der
elektrischen Filterschaltungen, da sie sich allgemein durch das Newtonsche Bewegungsgesetz beschreiben lassen:
Beschleunigungskraft = Masse * Beschleunigung
= Summe aller angreifenden Kräfte
→
m·−
r 00 =
Pn
i=1
−
→
Fi ,
wobei die Bewegungsgleichungen (=DG 2. Ordnung) komponentenweise angegeben werden. Z.B. für
die x-Komponente gilt
n
X
m · x00 =
(Fi )x = Fx
i=1
Diese DG 2. Ordnung transformiert man durch Einführung der Geschwindigkeit (vx = x0 ) in ein System
von zwei DG 1. Ordnung:

1
vx0 = ax = Fx 
m

x0 = vx
Wendet man auf jede einzelne DG das Euler-Verfahren an, so erhält man den Algorithmus
1
vx = vx + Fx dt
m
x = x + vx dt
t = t + dt
Im allgemeinen 3-dimensionalen Fall erhält man somit 6 DG 1. Ordnung für die 6 unbekannten Größen
x(t), y(t), z(t), vx (t), vy (t), vz (t):
1
vx = vx + Fx dt
m
1
vy = vy + Fy dt
m
1
vz = vz + Fz dt
m
x = x + vx dt
y = y + v dt
y
z = z + vz dt
t = t + dt
30
3 Simulation von mechanischen Systemen mit Massenpunkten
Beispiel: Schwingung eines 2-Federn-Masse-Systems
D1
D2
m1
x(t)
Abb. 3.1. 2-Federn-Masse-System
Eine Masse wird auf vertikaler Unterlage mit 2 Federn eingespannt. Die Ruhelage wird bei x = 0
festgelegt. Lenkt man den Massenpunkt aus der Ruhelage nach rechts um x aus, so wirken auf die
Masse m sowohl die Rückstellkraft der Feder D1 als auch von D2 . Beide Kräfte zeigen nach links, also
in negative x-Richtung. Damit gilt nach dem Newtonschen Bewegungsgesetz
m · x00 = −D1 x − D2 x
Berücksichtigt man noch eine Reibungskraft, die der Geschwindigkeit entgegen wirkt, FR ∼ −v = −x0 ,
erhält man
D1 + D2
x00 (t) = −
· x(t) − γ · x0 (t).
m
Dies führt auf den folgenden Algorithmus zum Lösen des DG Systems 1. Ordnung
v = v + (−(D1 + D2 )/m · x − γ · v) dt
x = x + v dt
t = t + dt
mit den Anfangsbedingungen x(0) = x0 und v(0) = 0. Dieser Algorithmus zusammen mit der numerischen Lösung ist im ersten Teil des zugehörigen Maple-Worksheet umgesetzt.
3 Simulation von mechanischen Systemen mit Massenpunkten
31
Beispiel: Schwingung eines 2Massen-3Federn-Systems
D1
m1
D2
x 1(t)
m2
D3
x 2(t)
Abb. 3.2. 2Massen-3Federn-Systems
Zwei Massen m1 und m2 werden gemäß obigem Bild durch 3 Federn (mit Federkonstanten D1 , D2 , D3 )
gekoppelt. Die Auslenkungen aus der Ruhelage werden mit x1 (t) für Masse m1 und x2 (t) für Masse m2
bezeichnet. Lenkt man die Massen m1 und m2 aus, so wirken die Federn D1 und D3 auf die absoluten
Auslenkungen x1 bzw x2 . Für die Feder D2 geht jedoch die relative Auslenkung x1 − x2 ein. Es gelten
die Bewegungsgleichungen
m1 · x001 (t) = −D1 · x1 (t) − D2 (x1 (t) − x2 (t)) − γ · x01 (t)
m2 · x002 (t) = −D3 · x2 (t) − D2 (x2 (t) − x1 (t)) − γ · x02 (t)
wenn man eine lineare geschwindigkeitsabhängige Reibungskraft berücksichtigt. Zur numerischen Lösung führt man die beiden Geschwindigkeiten v1 (t) = x01 (t) und v2 (t) = x02 (t) ein und erhält ein DG
System 1. Ordnung der Form
D2
D1 + D2
γ
x1 (t) +
x2 (t) −
v1 (t)
m1
m1
m1
x01 (t) = v1 (t)
v10 (t) = −
D3 + D2
D2
γ
x2 (t) +
x1 (t) −
v2 (t)
m2
m2
m2
x02 (t) = v2 (t).
v20 (t) = −
Dieses DG System führt auf den folgenden Algorithmus
x1=0.1, x2=0, v1=0, v2=0
(Initialisierung)
for t from 0 by dt to tmax do
v1 = v1 + dt*(-(D1+D2)/m1*x1 + D2/m1*x2 - gamma/m1*v1)
v2 = v2 + dt*(-(D3+D2)/m2*x2 + D2/m2*x1 - gamma/m2*v2)
x1 = x1 + dt * v1
x2 = x2 + dt * v2
end do
32
3 Simulation von mechanischen Systemen mit Massenpunkten
Auslenkung Masse 1
Auslenkung Masse 2
0.1
0.1
0.05
0.05
0
20
40
60
80
100
0
0.05
0.05
–0.1
–0.1
20
40
60
80
100
Man erkennt als Schwingungsform eine Schwebung: Masse m1 schwingt maximal; Masse m2 ist zunächst noch in Ruhe. Über die Feder D2 wird aber Energie von Masse m1 auf die Masse m2 übertragen,
diese beginnt zu schwingen. In dem Maße wie die Schwingung von Masse m2 zunimmt, nimmt gleichzeitig die Energie von m1 ab bis m1 sogar zur Ruhe kommt und m2 maximal schwingt. Dann kehrt
sich der Prozess um.
Dieser Algorithmus zusammen mit der numerischen Lösung ist im zweiten Teil des zugehörigen MapleWorksheet umgesetzt.
4.
Simulation geladener Teilchen in
elektromagnetischen Feldern
Die Bewegung von elektrisch geladenen Teilchen (Masse m, Ladung q) in elektrischen und magnetischen
Feldern ist bestimmt durch die Lorentz-Kraft
−
→
→ → −
−
→
F L = q( E + −
v × B ).
Zur Bestimmung der magnetischen Kraft berechnen wir


ex vx Bx vy Bz − vz By
→
−
→
−
v × B = ey vy By = −vx Bz + vz Bx 
ez vz Bz vx By − vy Bx
und erhalten als Bewegungsgleichungen

  
00

x(t)
Ex
vy Bz − vz By
m y(t) = q(Ey  + −vx Bz + vz Bx ).
z(t)
Ez
vx By − vy Bx
Spezialfall: Das Magnetfeld besitzt nur eine z-Komponente (Bx =
0, By = 0, Bz = B0 ), d.h. es wirkt nur in z-Richtung. Dann erhält
man
m · x00 (t) = q · Ex + q · B0 · vy
m · y 00 (t) = q · Ey − q · B0 · vx
m · z 00 (t) = q · Ez .
V0
B=B0 eZ
Abb. 4.1. Magnetfeld
Führt man wie im mechanischen Fall die Geschwindigkeit als zusätzliche Größe ein (vx , vy , vz ) gilt
q
Ex +
m
q
= Ey −
m
q
= Ez
m
= vx
= vy
= vz
vx0 =
vy0
vz0
x0
y0
z0
q
· B0 · vy
m
q
· B0 · vx
m
34
4 Simulation geladener Teilchen in elektromagnetischen Feldern
Das führt auf den Algorithmus
q
q
Ex +
· B0 · vy ) dt
m
m
q
q
vy = vy + ( Ey −
· B0 · vx ) dt
m
m
q
vz = vz + Ez dt
m
x = x + vx dt
y = y + vy dt
z = z + vz dt
t = t + dt
vx = vx + (
1. Fall: Bewegung eines geladenen Teilchens nur im Magnetfeld. Dann ist das elektrische Feld kom→
−
plett Null, E = 0. Die Bewegung ist dann in der (x,y)-Ebene eine Kreisbahn. Die Geschwindigkeit in
z-Richtung bleibt konstant, da vz0 = 0:
2
1.5
3
2.5
2
1.5
1
0.5
0
0
1
0.5
–1
–0.5
0.5
0
1
0.5
1.5
2
0
1
(a) Flugbahn des Teilchens
5
10
15
20
25
30
(b) Nur die y-Komponente
2. Fall: Bewegung eines geladenen Teilchens in elektrischen und magnetischen Feldern. Die Kreisbahn
wird dann durch eine Beschleunigung überlagert.
0
–10
–20
–30
–40
160
–120
–80
–40
0
120
100
80
60
40
20
0
Abb. 4.2. Flugbahn des Teilchens
5.
Signal- und Systemanalyse mit der FFT
5.1 Grundlegende Formeln
Motivation: Gegeben ist ein Zeitsignal, welches nur in Form von diskreten Werten (t0 , f0 ), (t1 , f1 ),
. . . , (tn−1 , fn−1 ) vorliegt. Gesucht sind die Frequenzen und zugehörigen Amplituden, die in diesem
Signal enthalten sind.
Abb. 5.1. Zeitsignal
Kontinuierliche Signale: Die Formeln für die Fourieranalyse (Fourierreihen für periodische Signale,
Fouriertransformation für beliebige Zeitsignale) setzen voraus, dass die Funktion f (t) als kontinuierliches
Signal in Form einer Funktionsvorschrift vorliegt. Gehen wir zur Wiederholung der Formeln zunächst
von einem T-periodischen Signal aus.
Abb. 5.2. T-periodisches Signal
Dann lassen sich die komplexen Fourierkoeffizienten cm der Fourierreihe bestimmen durch
cm
1
=
T
Z
0
T
f (t)e−imω0 t dt;
mit
w0 =
2π
.
T
36
5 Signal- und Systemanalyse mit der FFT
cm sind die komplexen Fourierkoeffizienten; sie geben bis auf den Faktor 2 an mit welcher komplexen
Amplitude (Betrag und Phase) die Frequenz ωm = mω0 im Signal enthalten ist. In einem periodischen
Signal sind also nur die diskreten Frequenzen
ω0 , 2ω0 , 3ω0 , . . . , mω0
enthalten, der Frequenzabstand beträgt
∆ω = ω0 =
Diskretes Signal: Kommen wir nun zu dem Fall, dass
f in Form einer Abtastung vorliegt. Dann gibt es zu
f nur diskrete Funktionswerte zu den gegebenen Zeiten t0 , t1 , . . . , tN −1 , aber keine explizite Funktionsvorschrift. Wir setzen f T-periodisch fort und können die komplexen Fourierkoeffizienten näherungsweise bestimmen durch
Abb. 5.3. diskretes Signal
cm =
Z
1
T
cm ≈
T
f (t)e−imω0 t dt ≈
0
T
Mit tn = n∆t = n N
und ω0 =
2π
T
2π
.
T
N −1
1 X
f (tn )e−imω0 tn ∆t.
T n=0
folgt weiter
N −1
N −1
2π
2π
T T
1 X
1 X
fn e−im T n N
fn e−imn N
=
T n=0
N
N n=0
{z
}
|
DF T
Man nennt
PN −1
n=0
2π
fn e−imn N
die diskrete Fouriertransformation (DFT). Sie gibt bis auf einen Normierungsfaktor ( N2 ) )1 an, mit
welcher Amplitude die Frequenz mω0 im Signal näherungsweise enthalten ist. Wieder erhält man ein
diskretes Spektrum mit den Frequenzen ω0 , 2ω0 , 3ω0 , . . . mit dem Frequenzabstand ∆ω = 2π
T .
Zugang über die Fouriertransformation: Wir vergleichen die eben erhaltene Formel für die DFT mit
der Fouriertransformation:
Z ∞
Z T
−iωt
F (ω) =
f (t)e
dt =
f (t)e−iωt dt
−∞
≈
N
−1
X
0
f (tn )e−iωtn ∆t
n=0
Dies ist zunächst eine kontinuierliche Funktion in ω. Speziell für die diskreten ω-Werte ωm = mω0 gilt
aber
1
Man beachte, dass die komplexen Fourierkoeffizienten bis auf den Faktor
√ 2 dem Amplitudenspektrum
der periodischen Funktion entsprechen (siehe Mathematik III) Am = a2m + b2m = 2|cm |
5.2 Eigenschaften der DFT
F (mω0 ) ≈
N
−1
X
2π
fn e−im T
T
nN
n=0
≈
37
T
N
N −1
2π
T X
fn e−imn N
N n=0
{z
}
|
DF T
F (mω0 ) stimmt also bis auf den Faktor
T
N
mit der DFT überein:
F (mω0 ) = T cm .
Im Folgenden kürzen wir die Formel für die DFT mit dem Symbol Fc
m ab. Diese zwar etwas laxe aber
eindeutige Schreibweise soll daran erinnern, dass bis auf den Normierungsfaktor N2 der Betrag |Fc
m | dem
c
reellen Amplitudenspektrum der Funktion f entspricht; Fm aber auch bis auf einen Normierungsfaktor
T
N dem Wert der Fouriertransformation an der Stelle mω0 entspricht:
Fc
m :=
N
−1
X
2π
fn e−imn N
(DFT)
(5.1)
n=0
Fc
m wird im Folgenden auch als das Spektrum bezeichnet.
5.2 Eigenschaften der DFT
(1)
Für m ≥ N wiederholen sich die Spektren:
F\
m+N =
N
−1
X
n=0
2π
fn e−i(m+N )n N =
N
−1
X
n=0
2π
fn e−imn N · e|−in2π
{z }
=1
= Fc
m
D.h. für m ≥ N erhält man keine neue Frequenzinformation, sondern das Spektrum wiederholt sich
periodisch.
38
(2)
5 Signal- und Systemanalyse mit der FFT
Ist f ein reelles Signal, dann liegt das Spektrum symmetrisch (bis auf komplexe Konjugation)
zu N2 :
\
F
N −k =
N
−1
X
2π
fn e−i(N −k)n N =
n=0
n=0
=
N
−1
X
N
−1
X
2π
fn eikn N · e|−in2π
{z }
=1
wπ
ck
fn e−ikn N = F
n=0
D.h. für m ≥ N2 erhält man keine neue Frequenzinformation, sondern die Amplituden sind komplex
konjugiert symmetrisch um N2 .
(3)
Folgerung: Zu N Messwerten f0 , f1 , . . . , fN −1 kann man durch die DFT höchstens die Amplituden zu den Frequenzen ω0 , . . . , ω N ablesen, wobei die höchste
2
noch erkennbare Frequenz ω N = N2 ω0 = N2 2π
ist.
T
2
Die Abtastfrequenz beträgt
ωa = 2πfa = 2π
1
N
2π
= 2π = N
∆t
T
T
⇒ ωa = 2 ω N
2
Diese Folgerung besagt, dass die Abtastfrequenz ωa mindestens doppelt so groß sein muss als die
maximal im Signal enthaltene Frequenz, um sie durch die Analyse zu erkennen (=Abtasttheorem von
Shannon).
! Achtung: Man beachte, dass die Abtastfrequenz ωa echt größer sein muss als 2ωmax , da
4
ωa = 2ωmax nicht ausreicht, wie das folgende Beispiel zeigt:
Beispiel: Wählt man als Signal sin(2πt), so ist die Frequenz ω = 2π. Tastet man das Signal mit der
doppelten Frequenz ωa = 4π ab, so entspricht dies den Funktionswerten zu den Zeit mit ∆t = 21 .
sin(2πt) ⇒ ωmax = 2π ⇒ ωa = 4π ⇒ ∆t =
2π
1
=
ωa
2
Damit erhält man als abgetastete Funktionswerte nur die Werte Null, welche das Signal natürlich nicht
repräsentieren.
Abb. 5.4. Falsche Abtastung eines Sinussignals
5.3 Berechnung der DFT
39
(4) Die inverse DFT erhält man über die Formel
f (tn ) =
N
−1
X
2π
ck eikn N =
N −1
1 X c ikn 2π
Fk e N .
N
k=0
k=0
Man beachte, dass sich die inverse DFT im Wesentlichen mit der gleichen Formel berechnet wie die
DFT selbst, denn es gilt
N −1
1 X c −ikn 2π
N
fn =
Fk e
N
k=0
ck die DFT und nimmt davon das komplex konjugierte.
D.h. man bildet von F
ck komplexe Größen darstellen, programmiert man die DFT gleich allgemein für komplexe AbtastDa F
werte, obwohl man sie für die Analyse reeller Signale so allgemein nicht benötigte. Bei der Verwendung
von Programmroutinen zur Berechnung der DFT muss man daher beachten, dass im Falle von reellen
Signalen der Imaginärteil auf Null gesetzt werden muss!
5.3 Berechnung der DFT
(1.) Einfacher Algorithmus zur Berechnung der DFT: Gegeben sind N diskrete Messwerte
f0 , f1 , . . . , fN −1 . Gesucht ist Fc
m , d.h. die komplexe Amplitude zur Frequenz ωm :
Fc
m =
N
−1
X
2π
fn e−imn N =
n=0
=
N
−1
X
n=0
N
−1
X
n=0
fn cos(mn
fn (cos(mn
2π
2π
) − i · sin(mn ))
N
N
N
−1
X
2π
2π
fn sin(mn ).
)−i
N
N
n=0
Zur Berechnung der Amplitude Fc
m für ωm wird folgende Schleife abgearbeitet:
re := 0;
im := 0;
for n from 0 to N-1
do
re := re + f[n] * cos( m*n*2*Pi/N ):
im := im + f[n] * sin( m*n*2*Pi/N ):
end do:
Am := 2 * sqrt(re^2 + im^2):
Für jede Frequenz muss obige Schleife mit anderem m durchlaufen werden. Bei 1000 Messwerten müssen für die Bestimmung einer Amplitude 1000 Sinus- und Kosinusausdrücke ausgewertet werden →
sehr, sehr zeitaufwendig.
40
5 Signal- und Systemanalyse mit der FFT
(2.) Schneller Algorithmus zur Berechnung der DFT: FFT
Die FFT ist ein schneller Algorithmus, um
Fc
m =
N
−1
X
2π
fn e−imn N
für m = 0, . . . , N − 1
n=0
auszurechnen. Voraussetzung hierfür ist, dass
N = 2k
Zusammenfassung
(1) Sind f0 , f1 , . . . , fN −1 gegebene Messwerte mit N = 2k , dann erhält man mit der FFT die
Amplituden zu den Frequenzen
ω0 , ω 1 , . . . , ω N ,
2
d.h. bis zur maximalen Frequenz
∆ω =
2π
T
ωN =
2
N
2 ω0
=
N 2π
2 T .
Der Frequenzabstand beträgt
.
(2) Um die Frequenzauflösung zu erhöhen (d.h. kleineres ∆ω), vergrößert man T .
(3) Um die maximale Frequenz zu vergrößern wird bei festem T die Anzahl der Abtastungen N
erhöht.
(4) Die DFT bzw. FFT liefern komplexwertige Größen. Um das reelle Amplitudenspektrum zu
erhalten, geht man zum Betrag über.
q
2
c 2
Am = 2 Re(Fc
m ) + Im(Fm )
(5) Die FFT funktioniert nur, wenn die Anzahl der Messwerte eine Potenz von 2 darstellt: N = 2k .
(6) Um vorhandene Programmroutinen zur FFT auf reellwertige Signale anzuwenden, muss der
Imaginärteil auf Null gesetzt werden.
5.4 FFT mit Maple
41
5.4 FFT mit Maple
Im folgenden Kapitel wird die Signal- und Systemanalyse mit Maple durchgeführt und die Ergebnisse
diskutiert. Es zeigt sich, dass erst durch die geeignete Wahl der Abtastparameter eine aussagekräftige
Interpretation möglich wird.
5.4.1 Signalanalyse
Im Worksheet FFT wird eine Signalanalyse mit Maple durchgeführt. Es werden dabei die folgenden
Aspekte diskutiert:
(1) FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich von der Anzahl der Abtastpunkte
ab?
(2) Analyse mit dem Hanning-Filter.
(3) Die Prozedur plot fft mit der Option Hanning-Fenster.
(4) Maximal erfassbare Frequenz.
(5) Frequenzauflösung.
(6) Analyse von Messdaten.
5.4.2 Systemanalyse
Im Worksheet sys ana wird eine Frequenzanalyse eines Tiefpasses, der aus zwei Π-Gliedern zusammengesetzt ist (TP2PiCLC), durchgeführt.
6.
Signal- und Systemanalyse mit Maple
6.1 FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich
von der Anzahl der Abtastpunkte ab?
Wie der Spektralbereich von der Anzahl der Abtastpunkte abhängt, sei am Beispiel der Funktion
sin(2 π t) demonstriert:
> restart:
> f:=t -> evalf(sin(2*Pi*t)): #Definition der Funktion
> plot(f(t),t=0..10.1,color=black, thickness=2);
1
0.5
0
2
4
6
8
10
t
–0.5
–1
(1.) Abtastung der Funktion: Die Abtastung der Funktion f(t) erfolgt im Intervall [0..10.1] an den
Stellen t=i*dt mit dt=T/N.
> m:=8: N:=2bm; #Festlegung der Abtastrate
> T:=10.1: dt:=evalf(T/N): #Festlegung des Zeitintervalls
> for i from 1 to N
> do fd[i] := f((i-1)*dt):
> imd[i]:= 0:
> end do:
N := 256
44
6 Signal- und Systemanalyse mit Maple
(2.) Berechnung der DFT mit der FFT: Mit dem Maple-Befehl FFT wird das komplexe Spektrum der
Funktion berechnet
> FFT(m, fd, imd);
256
(3.) Graphische Darstellung des Spektrums: Die Aufbereitung der Daten erfolgt dadurch, dass wir
von den komplexen Größen (fd, imd) zum Betrag übergehen und sie als Funktion der Frequenzen
w=0..N/2*w0 darstellen. Der Skalierungsfaktor, mit dem die Transformierten multipliziert werden, ist
2/N.
> for i from 1 to N/2
> do daten[i]:= [2*3.14/T*(i-1), 2/N*sqrt(fd[i]b2+imd[i]b2)]:
> end do:
Für den plot-Befehl stellen wir die Daten als Liste von Wertepaaren [[x1, y1], [x2, y2], ..., [xn, yn]] bereit:
> plot([seq(daten[i],i=1..N/2)], labels=[”w”,” ”],color=’red’, thickness=2);
0.8
0.6
0.4
0.2
0
20
40
w
60
80
Aufgabe: Man variiere die Abtastrate N=64, 256, 1024, 2048 und vergleiche die Ergebnisse. Anschließend stelle man für die Fälle N=256, 1024, 2048 nur den Bereich w=0..20 dar.
Zusammenfassung: Durch Variation der Abtastrate N ändert man bei festem T nur w max; die
Frequenzauflösung bleibt dabei erhalten; insbesondere wird die Linie bei w=6.28 durch Vergrößerung von N nicht schärfer dargestellt!
Aufgabe: Man variiere bei festem N=256 die Abtastzeit T : T=10.1, T=20.1, T=30.1. Wie ändert
sich die Breite der Spektrallinie? Man wähle T=10 und N=256. Warum erhält man mit T=10 genau
eine Linie mit der DFT? → Hanning-Fenster → plot fft
6.2 Das Hanning-Fenster
45
6.2 Das Hanning-Fenster
Problem: Wenn man periodische Signale in einem Zeitfenster betrachtet, welches nicht mit der Periode
zusammenfällt, dann schneidet man das Signal mit einem falschen T ab. Denn wählt man z.B. für die
Sinusfunktion nicht ein Vielfaches von 2 Pi
> T:=8.4:
> plot(sin(t), t=0..T);
1
0.5
0
2
4
6
8
t
–0.5
–1
so wird das Signal für die Analyse nun periodisch mit der Periode T=8.4 fortgesetzt. Damit kommt es
aber genau an der Stelle t=T zu einer Sprungstelle im periodisch fortgesetzten Signal.
> signal:=piecewise(0<t and t<T, sin(t), T<t and t<2*T, sin(t-T), 0):
> plot(signal,t=0..2*T, discont=true);
1
0.5
0
2
4
6
8
10
12
14
16
t
–0.5
–1
Die Fourierkoeffizienten einer periodischen Funktion mit Sprungstelle verhalten sich wie ∼1/n, d.h.
Oberfrequenzen dominieren in dem Signal, obwohl diese Frequenzen in dem ursprünglichen Sinus nicht
vorhanden sind. Außerdem besitzt das Signal im Intervall [0, T] einen Gleichanteil, da der lineare
Mittelwert ungleich Null ist
> 1/T*int(sin(t), t=0..T);
.1808676968
Ausweg: Um beide künstlichen Effekte (=Abschneide-Effekte) zu eliminieren, multipliziert man das
Signal mit einer Funktion, die bei t=0 und t=T Null ist, nämlich mit der Funktion 1 − cos( 2 Tπ t )
46
6 Signal- und Systemanalyse mit Maple
> plot([sin(t), 1-cos(2*Pi/T*t)], t=0..T);
2
1.5
1
0.5
0
2
4
t
6
8
–0.5
–1
Im unten angegebenen Bild ist sowohl das Signal (rot), die Funktion 1 − cos( 2 Tπ t ) (grün) sowie das
amplitudenmodulierte Signal (blau) eingezeichnet. Die FFT wird nun anstatt von dem ursprünglichen
Signal nun von dem amplitudenmodulierten Signal berechnet.
> plot([sin(t),1-cos(2*Pi/T*t),sin(t)*(1-cos(2*Pi/T*t))], t=0..8.2, color=[red, green,blue], thickness=[1,1,3]);
2
1
0
2
4
t
6
8
–1
–2
Man bezeichnet dieses Vorgehen als Hanning-Filter (Siehe auch den nächsten Abschnitt: Die Prozedur
plot fft und Hanning-Fenster). Die Modulationsfunktion ist so gewählt, dass sie das ursprüngliche Signal
an den Enden glatt auf Null drückt und der Mittelwert der Funktion 1 ergibt.
> 1/T*int((1-cos(2*Pi/T*t)),t=0..T);
1.000000000
6.3 Die Prozedur plot fft mit der Option Hanning
47
6.3 Die Prozedur plot fft mit der Option Hanning
Wir tasten das Signal sin(2 π t) nochmals ab und verwenden die Prozedur plot fft, um eine Frequenzanalyse durchzuführen
> f:=t -> evalf(sin(2*Pi*t)): #Definition der Funktion
> plot(f(t),t=0..10.5,color=black, thickness=2);
1
0.5
0
2
4
6
8
10
t
–0.5
–1
(1.) Abtastung der Funktion: Die Abtastung der Funktion f(t) erfolgt im Intervall [0..10.5] an den
Stellen t = i ∗ dt mit dt = T /N .
> m:=8: N:=2bm; #Festlegung der Abtastrate
> T:=10.5: dt:=evalf(T/N): #Festlegung des Zeitintervalls
> for i from 1 to N
> do fd[i] := f((i-1)*dt):
> end do:
(2.) Berechnung der DFT und die graphische Darstellung des reellen Spektrums mit der Prozedur
plot fft: Die Prozedur plot fft wird aus dem lokalen Verzeichnis eingelesen. Dazu kopiert man sich die
Datei prozeduren.m in das lokale Verzeichnis und liest die Prozedur ein mit
> read(prozeduren.m);
Ist die Datei in einem anderen Verzeichnis als das Maple-Worksheet, das man gerade verwendet, dann
muss man den vollen Pfad angeben mit
> read(E://verz1//verz2//prozeduren.m);
Die Transformation und die Aufbereitung der Daten erfolgt nun durch > plot fft(fd, m, T);
1. Argument: Abgetastete Werte als Liste [f1, f2, ..., fN]
2. Argument: m: 2ˆm ist die Anzahl der Abtastungen
3. Argument: Abtastzeit
Das berechnete Spektrum ist richtig zu interpretieren, indem eine dominierende Frequenz, nämlich
w=6.2, im Signal enthalten ist. Das berechnete Spektrum ist aber falsch zu interpretieren, indem zum
48
6 Signal- und Systemanalyse mit Maple
0.6
0.5
0.4
A
0.3
0.2
0.1
0
10
20
30
40
w
50
60
70
Abb. 6.1. FFT ohne Hanning-Filter
einen das Signal aber auch einen Gleichstromanteil besitzt, da die Amplitude bei w=0 nicht Null ergibt.
Und zum anderen auch höhere Frequenzen im Signal vorkommen.
Beides rührt von dem falschen Abschneiden der periodischen Funktion her. Durch das falsche Abschneiden kommt es bei der Stelle T dann zu einem Sprung → hohe Frequenzen kommen in der Fourierreihe
vor (siehe Mathe III) und das Signal hat auch einen Offset → es gibt einen Gleichspannungsanteil →
Amplitude bei w=0. Legt man über das Zeitfenster nun ein Hanning-Fenster (die Funktion bügelt die
Abtastwerte bei t=0 und bei t=T zu Null) treten beide oben beschriebenen Effekte nicht mehr auf.
Das Hanning-Fenster ist als Option in der plot fft Routine berücksichtigt:
> plot fft(fd, m, T, Hanning);
0.8
0.6
A
0.4
0.2
0
10
20
30
40
w
50
60
70
Abb. 6.2. FFT ohne Hanning-Filter
Diskussion: Durch Verwendung des Hanning-Fensters werden Frequenzen, die künstlich in der
Analyse durch das Abschneiden des Signals bzw. dem endlichen Zeitfensters erscheinen, eliminiert.
6.4 Maximal erfassbare Frequenz
49
6.4 Maximal erfassbare Frequenz
Gegeben ist ein Signal, das sich aus mehreren Frequenzen zusammensetzt. Gesucht wird die Abtastung,
bei dem die größte im Signal enthaltene Frequenz noch aufgelöst wird. Vorgegeben ist eine Überlagerung
von Sinusfunktionen mit den Frequenzen 1 Hz, 2 Hz, 3 Hz und 4 Hz.
> f:=t -> evalf(sin(2*Pi*1*t) + sin(2*Pi*2*t) + sin(2*Pi*3*t) + sin(2*Pi*4*t) ):
> plot(f(t),t=0..10,color=black, thickness=2);
3
2
1
0
2
4
6
8
10
t
–1
–2
–3
(1.) Abtastung der Funktion f(t) an den Stellen t=i*dt mit dt=T/N.
> m:=6: N:=2bm:
> T:=10.1: dt:=evalf(T/N):
> for i from 1 to N
> do fd[i] := f((i-1)*dt):
> end do:
(2.) Berechnung der FFT
> read(prozeduren.m):
> plot fft(fd, m, T);
1
0.8
0.6
A
0.4
0.2
0
5
10
w
15
50
6 Signal- und Systemanalyse mit Maple
Diskussion: Aus dem Diagramm entnimmt man zwar, dass im Signal 4 Frequenzen vorkommen, aber
wie man aus der Definition des Signals erkennen kann ist eine davon falsch dargestellt. Letztendlich liegt
es daran, dass die höchste im Signal auftretende Frequenz nicht richtig abgetastet wird und daher in den
kleineren Frequenzbereich gespiegelt wird ( Aliasing-Effekt). Um dies zu verdeutlichen/zu verstehen,
führe man die folgenden Aufgaben durch:
Aufgabe: Man variiere die Abtastrate N=64, 128, 256, 512, 1024 und vergleiche die Ergebnisse mit
N=256. → Aliasing-Effekt
Zusammenfassung: Durch Variation der Abtastrate N ändert man bei festem T nur wmax .
Ist N zu klein gewählt, werden nicht mehr alle Frequenzen des Signals richtig erfasst. Nach dem
Abtasttheorem muss die Abtastfrequenz wa > 2ws = 2∗25 1/s gewählt werden, um die Frequenz
25 1/s noch zu erfassen. Aus wmax = 2π/T N folgt für eine Auflösung der Frequenz von 25 1/s:
N > 80.
6.5 Frequenzauflösung
Gegeben ist wieder ein Signal, das sich aus mehreren Frequenzen zusammensetzt. Gesucht ist der
Abtastungsparameter, bei dem alle Frequenzen getrennt aufgelöst werden. Diese Untersuchung sei am
Beispiel der Überlagerung von 4 Sinusfunktionen mit den Frequenzen 1.0 Hz, 1.2 Hz, 2.3 Hz und 2.7
Hz durchgeführt.
> f:=t->evalf(sin(2*Pi*1.0*t) + sin(2*Pi*1.2*t) + sin(2*Pi*2.3*t) + sin(2*Pi*2.7*t)):
> plot(f(t),t=0..15,color=black, thickness=2);
3
2
1
0
–1
2
4
6
8
10
12
14
t
–2
–3
(1.) Abtastung der Funktion f(t) an den Stellen t=i*dt mit dt=T/n.
> m:=8: N:=2bm;
> T:=5.1: dt:=evalf(T/N):
6.6 Analyse von Messdaten
51
> for i from 1 to N
> do fd[i] := f((i-1)*dt):
> end do:
(2.) Berechnung der FFT
> read(prozeduren.m):
> plot fft(fd, m, T);
1
0.8
A
0.6
0.4
0.2
0
20
40
60
80
w
100
120
140
Diskussion: Aus dem Diagramm entnimmt man, dass im Signal 3 Frequenzen vorkommen, aber wie
man aus der Definition des Signals erkennen kann ist dies falsch, da 4 Frequenzen festgelegt werden.
Letztendlich liegt es daran, dass zwei Frequenzen unter einem Peak liegen, d.h. die Auflösung nicht
hoch genug ist. Um dies zu verdeutlichen/zu verstehen, führe man die folgenden Aufgaben durch:
Aufgabe: Man variiere T und N so, dass eine gute Auflösung der 4 Frequenzen gewährleistet ist.
Zusammenfassung: Um die Auflösung des Spektrums zu erhöhen, d.h. einzelne Spektrallinien
eines Signals besser auflösen zu können, muss die Messdauer T erhöht werden. Die Anzahl der
Abtastungen N hat keinen Einfluss auf die Auflösung!
6.6 Analyse von Messdaten
Die plot fft-Routine kann auch verwendet werden, um Messdaten zu analysieren: In der Textdatei
daten1.txt sind Messdaten abgespeichert. Die erste Spalte besteht aus den Zeitwerten ti , die zweite
Spalte aus den abgetasteten Funktionswerten. Diese Daten kann man z.B. auch mit einem Texteditor
anschauen. Mit dem readdata-Befehl kann man diese Daten in Maple einlesen und einer Variablen
zuweisen. Es ist beim Einlesen zu beachten, dass sich die Datei in dem Verzeichnis befindet, aus dem
man Maple gestartet hat. Dann kann man einen lokalen Namen verwenden
liste:=readdata(daten1.txt, 2):
52
6 Signal- und Systemanalyse mit Maple
Ansonsten muss der globale Dateiname angegeben werden, z.B.
liste:=readdata(E://verz1//verz2//daten1.txt, 2):
In jedem Fall aber muss als zweites Argument eine 2 gesetzt werden. Die 2 steht für eine 2-spaltige
Datei.
> liste:= readdata(”daten1.txt”,2):
Mit
> liste[10];
[0.001757812500, −2.580593604]
kann man z.B. die 10. Zeile ansteuern: die erste Zahl steht für den Zeitpunkt, die zweite Zahl für den
abgetasteten Funktionswert zu diesem Zeitpunkt. Mit
> N:=nops(liste);
N := 256
lässt man sich die Anzahl der Messdaten angeben. Die Messzeit kann man damit bestimmen, indem
man in die N.-te Zeile geht (liste[N]) und von dieser letzten Zeile die erste Zahl
> T:= liste[N][1];
T := 0.04980468750
(1.) Graphische Darstellung der Messdaten
> plot(liste);
10
5
0
0.01
0.02
0.03
0.04
0.05
–5
–10
(2.) Anwenden der plot fft-Routine: Man beachte, dass bei der plot-fft-Routine ja nur die diskreten
Funktionswerte benötigt werden und nicht die Paare (t i, f i). Daher bestimmt man zuerst fd als die
zweite Spalte der Liste und setzt bei N=256 Daten m auf 8
> fd:= [seq( liste[i][2],i=1..N )]:
> m:=8:
> read(prozeduren.m):
> plot fft(fd, m, T);
6.6 Analyse von Messdaten
8
6
A
4
2
0
5000
w 10000
15000
Man kann aus dem Diagramm 3 Frequenzen ablesen: w1 = 5000, w2 = 10000, w3 = 12000.
53
54
6 Signal- und Systemanalyse mit Maple
6.7 System-Analyse mit Maple
Die DFT (und deren schnelle Umsetzung FFT) wird messtechnisch sowohl zur Analyse von Signalen (→
Signalanalyse) als auch zur Bestimmung des Übertragungsverhaltens von Systemen (→ Systemanalyse)
intensiv verwendet. Die Signalanalyse mit der FFT stellt sich schematisch dar als
Signal —-> FFT —-> Spektrum
Die Systemanalyse mit der FFT lässt sich schematisch im folgenden Diagramm darstellen:
Signal
—->
SYSTEM
—->
Systemreaktion
↓
↓
Spektrum des
Einganssignals
Spektrum des
Ausgangssignals
Die Systemfunktion (=Übertragungs- oder Transferfunktion) ist das Verhältnis vom Spektrum des Ausgangssignals zum Spektrum des Eingangssignals
FFT(g)
G(w)
=
F(w)
FFT(f )
wenn f(t) das Eingangssignal und g(t) das zugehörige Ausgangssignal bzw. G(w) das Spektrum des
Ausgangs- und F(w) das Spektrum des Eingangssignals ist.
H(w) =
Beispiel: Frequenzanalyse eines Tiefpasses. Gegeben ist ein Tiefpass, der aus zwei Pi-Gliedern zusammengesetzt ist (TP2PiCLC).
(1.) Bestimmung der diskreten Impulsantwort: Um die diskreten Werte der Impulsantwort zu erhalten, lösen wir numerisch die das Netzwerk beschreibenden DG. Die numerischen Werte der Impulsantwort entsprechen den abgetasteten Werten der Ausgangsspannung U3 (=Ausgangssignal).
6.7 System-Analyse mit Maple
Aufstellen der DG
> restart:
> eq1:= R*(C1*dU1 + I1) = Ue-U1;
> eq2:= U1 = L1*dI1 + U2;
> eq3:= I1 = C2*dU2 +I2;
> eq4:= U2 = L2* dI2 + U3;
> eq5:= I2 = C3* dU3 +U3/R;
eq1 := R (C1 dU1 + I1 ) = Ue − U1
eq2 := U1 = L1 dI1 + U2
eq3 := I1 = C2 dU2 + I2
eq4 := U2 = L2 dI2 + U3
eq5 := I2 = C3 dU3 +
U3
R
und Auflösen der DG nach den Ableitungen
> sol:=solve({eq1,eq2,eq3,eq4,eq5}, {dU1,dU2,dU3,dI1,dI2});
> assign(sol);
I2 R − U3
R I1 − Ue + U1
, dU3 =
,
R C1
C3 R
U2 − U3
I1 − I2
U1 − U2
dI2 =
, dU2 =
, dI1 =
}
L2
C2
L1
sol := {dU1 = −
Die Parameter der Bauelemente und die Anfangsbedingungen werden festgelegt
> R:=0.8: C1:=1: C2:=C1*2: C3:=C1: L1:=1:L2:=L1:
> U1:=0: U2:=0: U3:=0: I1:=0: I2:=0:
Für die Eingangsfunktion wählen wir eine Näherung an den Delta-Impuls
> t0:=0.5:
> Heaviside(0):=1:
> Ue:=(Heaviside(t)-Heaviside(t-t0))/t0:
> plot(Ue, t=0..90, numpoints=500, thickness=2);
2
1.5
1
0.5
0
20
40
60
t
80
55
56
6 Signal- und Systemanalyse mit Maple
Lösen der DG mit dem Euler-Verfahren. Damit von den diskreten Werten im Anschluss die FFT gebildet
werden kann, setzen wir die Anzahl der Zeitschritte als Zweierpotenz
> m:=9: N:=2bm:
> T:=90.: dt:=T/N:
> t:=0:
> for i from 1 to N
> do
> data1[i]:=[t,U3]: #diskrete Impulsantwort
> data2[i]:=[t,Ue]: #diskretes Eingangssignal
> U1:=U1 + dt*dU1:
> I1 := I1 + dt* dI1:
> U2:= U2 + dt * dU2:
> I2:= I2 + dt * dI2:
> U3:= U3 + dt * dU3:
> t:=t+dt:
> end do:
Graphische Darstellung der Impulsantwort
> plot([seq(data1[n],n=1..N)]);
0.2
0.15
0.1
0.05
0
20
40
60
80
–0.05
(2.) Systemanalyse: Um die FFT anwenden zu können, benötigen wir die diskreten Funktionswerte fd
des Ausgangs- bzw. Eingangssignals. Die Imaginärteile imd sind jeweils auf Null zu setzen.
> for i from 1 to N
> do
> fd1[i] := data1[i][2]: #Ausgangssignal
> imd1[i] := 0.:
> fd2[i] := data2[i][2]: #Eingangssignal
> imd2[i] := 0.:
> end do:
6.7 System-Analyse mit Maple
57
Mit der schnellen Fouriertransformation berechnen wir die DFT sowohl des Eingangs- als auch des
Ausgangssignals berechnet
> FFT(m, fd1, imd1);
> FFT(m, fd2, imd2);
Wir bilden anschließend das Verhältnis von Ausgangs- zu Eingangsspektrum, H(w), und zeichnen den
Betrag dieses Verhältnisses als Funktion von w :
> for i from 1 to N
> do H[i]:= evalc( (fd1[i]+I*imd1[i]) / (fd2[i]+I*imd2[i])):
> end do:
> for i from 1 to N
> do daten[i]:= [2*3.14/T*(i-1), abs(H[i])]
> end do:
> plot([seq(daten[i], i=1..N/2)], labels=[‘w‘,“], color=red, thickness=2);
0.5
0.4
0.3
0.2
0.1
0
2
4
6
8
10
12
14
16
18
w
Diskussion: Der Graph der Übertragungsfunktion hat qualitativ den gleichen Verlauf wie der analytisch
über komplexe Rechnung berechnete mit der gleichen Grenzfrequenz wg = 1.4.
Aufgabe: Führen Sie Simulationen durch, bei denen Sie die Impulsbreite t0 variieren.
Herunterladen