3.3. Numpy Arrays#
Diese Aufgabe wiederholt einige grundlegende Konzepte der Arraymanipulation.
Aufgabenteil A#
Aufgabenstellung#
Benutzen Sie
np.sin
um ein Array zu erstellen, das Sinuswerte, ausgewertet auf dem Intervall \([0,2\pi]\), enthällt.Plotten Sie die Funktion.
Berechnen Sie mithilfe von Slices die Ableitung, indem Sie jeweils zwei aufeinander folgende Elemente voneinander subtrahieren und durch die von Ihnen gewählte Schrittweite teilen.
Plotten Sie die Ableitung mit in den zuvor erstellten Plot.
Lösungshinweis#
Wenn Sie alles richtig gemacht haben, sollten Sie eine Sinus und eine Cosinus Kurve sehen.
Lösungsvorschlag#
Show code cell content
import numpy as np
import matplotlib.pyplot as plt
# Berechnung von Sinus und dessen Ableitung
wertebereich = np.linspace(0, 2* np.pi, 1000)
sin = np.sin(wertebereich)
cos = (sin[1:]-sin[:-1]) * 1000/2/np.pi
# Plotten der Daten
plt.plot(wertebereich, sin, label='sin')
plt.plot(wertebereich[1:], cos, label='cosin')
plt.grid()
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend()
plt.show()
Aufgabenteil B#
Aufgabenstellung#
In diesem Aufgabenteil sollen Sie ein bisschen mit boolschen Arrays spielen. Ziel ist es, ein Array zu finden, dass elementweise die Maximas zwischen den beiden zuvor erstellten Arrays enthällt.
Sie werden wie bei Aufgabenteil A vermutlich auch, auf das Problem stoßen, dass das Sinusarray ein Element mehr als das Cosinusarray enthällt. Ignorieren Sie einfach das erste oder letzte Element. Dies ist mathematisch nicht ganz korrekt, aber für unsere Näherung hier ausreichend.
Erstellen Sie ein boolsches Array, das
True
ist, wenn der Cosinuswert kleiner als der korrespondierende Sinuswert ist und sonstFalse
.Benutzen Sie das boolsche Array, um ein Array zu erstellen, bei dem jedes Element das Maximum der beiden korrespondierenden Elemente der anderen Arrays enthällt.
Plotten Sie das Maximumsarray.
Lösungshinweis#
Ihr Plot könnte wie folgt aussehen:
Lösungsvorschlag#
Show code cell content
# Erstellen der binaeren Maske
maske = cos - sin[1:] < 0
# Erstellen des Maximumsarrays
mix = cos
mix[maske] = sin[1:][maske]
# Plotten der Daten
plt.figure()
plt.plot(wertebereich[1:], mix, label='max(sin, cos)')
plt.grid()
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend()
plt.show()