programmieren_wise_24_25/Lectures/06 22.11.2024.md
2024-11-21 17:56:00 +01:00

10 KiB

parent tags
Lecture
Lecture

Content

  • Lösungen MatPlotLib, NumPy

  • Ausgabe - SciPy

  • Bernoulli Distributions

  • Binomial Distributions

  • Normal Distributions

  • Regression

Aufgabe - Erster eigener Plot Square Root

Analog zu voheriger Erklärung plotten Sie im folgenden die Funktion Square Root, Mathematisch definiert als f(x) = \sqrt x; \quad x \geq 0.

Gehen Sie dabei wie folgt vor:

  1. Definieren Sie einen geeigneten Linespace für die Zahlenraum 0...100. (Tipp: Achten Sie auf die Definition! Die Wurzel ist nur für positive Zahlen definiert.)
  2. Berechnen Sie mittels der Funktion np.sqrt die Werte für die Wurzel.
  3. Plotten Sie das Ergebnis
import numpy as np 
import matplotlib.pyplot as plt

# geeigneter Linespace für den Zahlenraum 0 bis 100
x = np.linspace (0, 100, 500)  # 500 Punkte für eine glatte Darstellung 

# Berechnen der Wurzelfunktion 
y = np.sqrt(x)

# plotten der Ergebnisse 
plt.plot(x, y, label="f(x)= √x")
plt.title("Plot der Wurzelfunktion")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.grid(True)
plt.legend()
plt.show()

Alea Schleier

Aufgabe

6 Punkte

Plote die Zufallszahlen eines Permuted Congruent Generators mittels NumPy & MatPlotLib.

  • Gegeben ist der Anfangszustand des Generators.
  • Nutze die Dokumentation und rufe den default_rng aus dem numpy.random Modul, 20 mal auf speichere die Werte in der variablen pcgs. (Tipp: Nutze ein NumPy Array)
  • Sortiere im nächsten Schritt die in pcgs gespeicherten Werte und speichere diese in pcgs_sorted
  • Plotte sinnvoll beide Array. Gestalte den Plot angemessen.
import numpy as np  # Import NumPy
import matplotlib.pyplot as plt  # Import Matplotlib for plotting

# 1. Setting the random seed
np.random.seed(42)

# 2. Generate 20 random numbers using the default_rng generator
rng = np.random.default_rng()  # Initialize the default random number generator
pcgs = rng.random(20)  # Generate 20 random numbers

# 3. Sort the generated numbers and store them in pcgs_sorted
pcgs_sorted = np.sort(pcgs)  # Sort the numbers

# 4. Print the generated arrays for verification
print("PCGs:", pcgs)
print("Sorted PCGs:", pcgs_sorted)

# 5. Plot both arrays
plt.figure(figsize=(8, 6))
plt.plot(pcgs, label='PCGs (Unsorted)', linestyle='dashed', marker='o')
plt.plot(pcgs_sorted, label='PCGs (Sorted)', linestyle='solid', marker='x')
plt.title('Permuted Congruent Generator: Unsorted vs Sorted')
plt.xlabel('Index')
plt.ylabel('Value')
plt.legend()
plt.grid(True)
plt.show()

Abdalaziz Abunjaila

np.random.seed(42) # Setting a fixed start Value for the Generator
pcgs: np.array = None
pcgs_sorted: np.array = None

#mycode
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(seed=42)

pcgs = np.array([rng.random() for _ in range(20)])

pcgs_sorted = np.sort(pcgs)

plt.figure(figsize=(10, 5))

plt.plot(pcgs, label="PCG Zufallszahlen", color='blue', marker='o', linestyle='--')

plt.plot(pcgs_sorted, label="Sortierte PCG Zufallszahlen", color='green', marker='x', linestyle='-')

plt.title("PCG Zufallszahlen und sortierte PCG Zufallszahlen")
plt.xlabel("Index")
plt.ylabel("Wert")
plt.legend()

plt.show()

Donika Nuhiu

np.random.seed(42) # Setting a fixed start Value for the Generator
pcgs: np.array = None
pcgs_sorted: np.array = None

import numpy as np 
import matplotlib.pyplot as plt

# Erstellen des Zufallsgenerators und Generation von 20 Zufallszahlen 
rng = np.random.default_rng()  # Initialisiere den Permuted Congruent Generator 
pcgs = rng.random(20)  # 20 Zufallszahlen erzeugen und in ein NumPy Array speichern

# Sortieren der Zufallszahlen 
pcgs_sorted = np.sort(pcgs)

# Plotten der Ergebnisse
plt.figure(figsize=(10, 6))

# Original Zufallszahlen 
plt.plot(pcgs, marker='o', linestyle='-', color='blue', label='Original-Zufallszahlen')

# Sortierte Zufallszahlen 
plt.plot(pcgs_sorted, marker='x', linestyle='--', color='red', label='Sortierte Zufallszahlen')

# Gestalte den Plot 
plt.title("Vergleich: Original- und sortierte Zufallszahlen")
plt.xlabel("Index")
plt.ylabel("Zufallswert")
plt.grid(True)
plt.legend()

plt.show()

Alea Schleier

np.random.seed(42) # Setting a fixed start Value for the Generator
pcgs: np.array = None
pcgs_sorted: np.array = None

# YOUR CODE HERE
rng = np.random.default_rng(42)
pcgs = rng.random(20)
pcgs_sorted = np.sort(pcgs)

x = np.linspace(0, 20, num=20)

plt.plot(x, pcgs, color='c', label='Zufallszahlen')
plt.plot(x, pcgs_sorted, color='b', label='Zufallszahlen (sortiert)')

plt.title('Zufallszahlen eines PCG')
plt.xlabel('Index')
plt.ylabel('Wert')

plt.xlim(0, 20)
plt.ylim(0, 1.25)
plt.xticks(np.arange(0, 20, step=3))
plt.yticks(np.arange(0, 1.25, step=0.2))

mean_value = np.mean(pcgs)
plt.axhline(y=mean_value, color='r', linestyle="dashed", label=f'Durchschnitt: {mean_value:.2f}')

plt.legend()
plt.show()

Nova Eib

np.random.seed(42) # Setting a fixed start Value for the Generator
pcgs: np.array = None
pcgs_sorted: np.array = None

# YOUR CODE HERE
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(seed=42)

pcgs = rng.random(20)

pcgs_sorted = np.sort(pcgs)

plt.figure(figsize=(10, 6))

plt.plot(pcgs, 'o-', label='Unsortiert')

plt.plot(pcgs_sorted, 's-', label='Sortiert')

plt.title('Zufallszahlen eines Permuted Congruent Generators')
plt.xlabel('Index')
plt.ylabel('Wert')
plt.grid(True)
plt.legend()

plt.show()

Izabel Mike

Aufgabe

5 Punkte

Ihnen ist ein Datenset sec_school einer Hauptschule gegeben, welches die Klassenstufen von 5 bis 9 auf die Anzahl ihrer Schüler im Jahrgang mappt.

Definieren Sie einen Barplot. Gehen Sie dabei wie folgt vor:

  1. Definieren Sie ein geeignetes Farbschema zur Darstellung der Daten.
  2. Extrahieren Sie die Schlüssel und Werte aus dem Datenset und übergeben Sie diese zusammen mit den Farbwerten an die Funktion plt.bar.
  3. Setzen Sie geeignete Werte für die X & Y-Achse.
  4. Setzen Sie einen geeigneten Titel für den Plot.
  5. Plotten Sie den Werte
import matplotlib.pyplot as plt

sec_school = {
    '5. Klasse': 29,
    '6. Klasse': 35,
    '7. Klasse': 25,
    '8. Klasse': 28,
    '9. Klasse': 31
}

bar_colors = ["purple", "blue", "green", "orange", "red"]

plt.bar(sec_school.keys(), sec_school.values(), color=bar_colors)

plt.xlabel("Klassenstufen")
plt.ylabel("Anzahl Schüler")
plt.title("Anzahl der Schüler pro Klassenstufe in der Hauptschule")

plt.show()

Donika Nuhiu

import matplotlib.pyplot as plt

sec_school = {
    '5. Klasse': 29,
    '6. Klasse': 35,
    '7. Klasse': 25,
    '8. Klasse': 28,
    '9. Klasse': 31
}

colors = ['blue', 'green', 'orange', 'purple', 'red']

grades = list(sec_school.keys())  # Klassenstufen 
students= list(sec_school.values())  # Schüleranzahl 

plt.bar (grades, students, color=colors)

plt.xlabel("Klassenstufen")
plt.ylabel("Anzahl der Schüler")

plt.title("Schüleranzahl pro Klassenstufe in der Hauptschule")

plt.grid(axis='y', linestyle='--', alpha=0.7)  # Gitterlinie zur besseren Lesbarkeit 
plt.show()

Alea Schleier

bar_colors = ["red", "orangered", "darkorange", "orange", "gold"]

plt.bar(sec_school.keys(), sec_school.values(), color=bar_colors)

plt.title("Klassenverteilung (Hauptschule)")
plt.ylabel("Anzahl Kinder")
plt.xlabel("Klassenstufen") 

# Ich finde die Werte der x- und y-Achse schon passend, also mach mich wenn dann für meine Fehleinschätzung und nicht für meinen Analphabetismus fertig, ich habe den Punkt gelesen, danke

mean_value = np.mean(list(sec_school.values()))
plt.axhline(y=mean_value, color='blue', linestyle="dashed", label=f'Durchschnitt: {mean_value:.2f}')

plt.legend()
plt.show()

Nova Eib

Aufgabe

5 Punkte

Ihnen ist ein Datenset sec_school einer Hauptschule gegeben, welches die Klassenstufen von 5 bis 9 auf die Anzahl ihrer Schüler im Jahrgang mappt.

Definieren Sie einen Pieplot. Gehen Sie dabei wie folgt vor:

  1. Definieren Sie ein geeignetes Farbschema zur Darstellung der Daten.
  2. Extrahieren Sie die Schlüssel und Werte aus dem Datenset und übergeben Sie diese zusammen mit den Farbwerten an die Funktion plt.pie. (Nutzen Sie zum Anzeigen der Prozentwerte)
  3. Lassen Sie die 6. Klasse 25% und die 9. Klasse 40% explodieren.
  4. Setzen Sie einen geeigneten Titel für den Plot.
  5. Plotten Sie den Werte.
import matplotlib.pyplot as plt

#geeignetes Farbschema definieren, Kontrastreiche Farben zur einfachen Unterscheidung 
colors = ['#ff6f61', '#6b5b95', '#88b04b', '#f7cac9', '#92a8d1']

#extrahieren der Werte und Schlüssel
keys = list (sec_school.keys())
values = list (sec_school.values())

#explodieren der 6. und 9. Klassenstufe 
explode = [0, 0.25, 0, 0, 0.4]

plt.pie(values, labels = keys, colors = colors, autopct = '%1.1f%%', startangle = 90, explode = explode)
plt.title ('Verteilung der Schüler*innen auf die unterschiedlichen Klassenstufen')
plt.axis ('equal')

plt.show()

Lara Troschke

pie_colors = ["red", "orangered", "darkorange", "orange", "gold"]

plt.pie(sec_school.values(), labels=sec_school.keys(), autopct='%1.1f%%', explode=[0, 0.25, 0, 0, 0.4], colors=pie_colors)

plt.title("Klassenverteilung (Hauptschule)")

plt.show()

Nova Eib

pie_colors = ["lightpink", "darkseagreen", "mistyrose", "cadetblue", "rosybrown"]

plt.pie(sec_school.values(), labels=sec_school.keys(), autopct='%1.1f%%', explode=[0, 0.25, 0, 0, 0.4], colors=pie_colors) 

plt.title("Klassenverteilung einer Hauptschule")

plt.show()

Julia Limbach