Übungsaufgaben

12.7. Übungsaufgaben#

Exercise 12.4 (PA5.4 (Parsing): Zeit/Spannung aus Datei lesen)

Aufgabe: eine Messdatei mit zwei Spalten (Zeit \(t\), Spannung \(u\)) einlesen

Ziel ist:

  • Werte einlesen,

  • und anschließend Kennwerte bestimmen (z.B. wann die Spannung unter 90% bzw. 80% der Anfangsspannung fällt).

../../_images/k5_abb5.png

Abb. 12.9 Beispielplot der Messwerte (Aufgabensammlung PA5.4).#

Wir verarbeiten hier Textinhalt. Dieser Textinhalt kann z.B. aus einer Datei stammen. In unserem Fall hinterlegen wir den Text direkt im Programm in einer Textvariable. Ihre Aufgabe bleibt aber gleich: Iterieren Sie über Zeilen (lines) und parsen Sie t und u.

tt = []
uu = []

messw_aus_txt = """\
0   4.20
5   4.18
10  4.16
15  4.14
20  4.11
25  4.08
30  4.04
35  4.00
40  3.96
45  3.92
50  3.88
55  3.84
60  3.80
65  3.76
70  3.72
75  3.68
80  3.64
85  3.60
90  3.56
95  3.52
100 3.48
"""

lines = messw_aus_txt.strip().splitlines()

Wichtig (Praxis)

Diese Übungsaufgabe ist rein didaktisch gedacht. In der Praxis werden Sie in Python in der Regel keine eigenen Parser schreiben. Das Parsing von Dateien (z.B. txt, csv, png) sind weitgehend gelöste Probleme – verwenden Sie dafür bitte vorhandene, gut getestete Bibliotheken.

Sonst stehen Sie schnell – wie Julia – vor dem Problem, dass die Lösung nicht generisch ist, und Sie haben zusätzlich hohen Test- und Wartungsaufwand.

Zeitreihe plotten und Schwellen markieren

Exercise 12.5 (PA5.4 (Plot): 90% / 80% Schwellen)

Erweitern Sie das Einlesen aus PA5.4 so, dass Sie:

  • \(u_{90} = 0.9 \cdot u_0\) und \(u_{80} = 0.8 \cdot u_0\) bestimmen,

  • den ersten Zeitpunkt finden, an dem \(u < u_{90}\) bzw. \(u < u_{80}\) gilt,

  • und alles plotten (Messpunkte + horizontale Schwellenlinien).

import matplotlib.pyplot as plt

# tt, uu kommen aus dem Parsing-Schritt (PA5.4)

# TODO: u90/u80, t90/t80 bestimmen

plt.plot(tt, uu, "b+")
plt.plot([tt[0], tt[-1]], [u90, u90], "r-")
plt.plot([tt[0], tt[-1]], [u80, u80], "r-")
plt.grid(True)
plt.show()