"""
    "# Hausaufgabe Blatt 3\n",

    "## Gleichförmig beschleunigte, geradlinige Bewegung - Revisited\n",

    "In dieser Aufgabe werden wir die Bahnkurve eines gleichförmig beschleunigten Objektes in einer Dimension berechnen und dieses mal auch visualisieren. Die Position $x$ zum Zeitpunkt $t$ ist, wie auf dem Blatt 2, gegeben durch folgende Gleichung:\n",
    "\\begin{equation*}\n",
    "x\\!\\left( t \\right) = x_0 + v_0 t + \\frac{1}{2} a t^2 \n",
    "\\end{equation*}\n",
    "wobei $x_0$ und $v_0$ die Anfangsposition und -geschwindigkeit sind und $a$ die konstante Beschleunigung, die auf das Objekt wirkt. \n",
    "## 1. Numpy Arrays: Linspace\n",
    "Anstelle, dass wir die Einträge in numpy arrays \"per Hand\" definieren, können wir eine nützliche Funktion verwenden. \n",

    "**a)**",
    "Machen Sie sich mit der nachstehenden Zelle vertraut. Verstehen Sie die Syntax?"
"""

import numpy as np

x = np.linspace(0, 1, 5)

print(x)

"""
    "**b)** Erstellen sie ein numpy array für die Zeit `t`
    indem sie `np.linspace()` korrekt verwenden.
    Dabei soll gelten $t_0 = 0$
    und $t_N = 5$ mit der Anzahl der Einträge $N = 50$."
"""

t = np.linspace(0, 5, 50)

"""
    "**c)** Benutzen Sie die in ha2 Aufgabe 2 definierte Funktion `printBahnkurve()`
    um sich nun die Bahnkurve für das gerade erstellte array `t` ausgeben zu lassen.
    Verwenden Sie die Werte $x_0=3$ und $v_0=10$ wie auf Blatt 2."
"""

def printBahnkurve(x0, v0, t):
    g = -9.81
    x = x0 + v0 * t + 1/2 * g * t ** 2
    print(x)

x0 = 3
v0 = 10

printBahnkurve(x0, v0, t)
"""

    "## Return\n",
    "Bisher hat unsere definierte Funktion lediglich einen `print()` Befehl ausgeführt. 
    Wir wollen nun, dass unsere Funktion einen Wert zurück gibt.
    Dadurch kann der Wert in einer Variablen gespeichert und somit weiterverarbeitet werden. Dazu verwenden wir das `return` Statement. \n",

    "**d)** Betrachten Sie die folgenden zwei Funktionen. Beschreiben Sie kurz (1-2 Sätze), was hier geschieht. "

"""

# Funktion nimmt ein Argument und gibt es wieder zurueck
def identity(x):
    return x 

# Funktion nimmt ein Argument und probiert das Quadrat dieses zurueckzugeben
def square(x):
    return x**2

# Weise dem Namen 'id2' den Rueckgabewert der Identityfunktion mit dem Argument 2 zu. id2 = 2
id2 = identity(2) # definiere id2 über Zugriff auf identity

# Weise dem Namen 'square2' den Rueckgabewert der squarefunktion mit dem Argument 2 zu. square2 = 4
square2 = square(2)# definiere square über Zugriff auf square

print(id2, square2) # Ausgabe der Werte

"""
    "**e)** Schreiben Sie eine neue Funktion,
    indem Sie den `print()` Befehl in der Funktion `printBahnkurve()` durch das `return` Statement ersetzen.
    Wählen Sie einen geeigneten Namen für die neue Funktion. "
"""

def returnBahnkurve(x0, v0, t):
    g = -9.81
    x = x0 + v0 * t + 1/2 * g * t ** 2
    return x


"""
    "## Visualisierung\n",
    "Da Sie nun dazu in der Lage sind,
    viele Datenpunkte zu erzeugen,
    wollen wir als nächsten Schritt die berechnete Bahnkurve in einem plot mithilfe von `matplotlib.pyplot` visualisieren. `Matplotlib` ist eine beliebte und sehr vielseitige plot Bibliothek,
    die es uns ermöglicht Daten zu visualisieren. Wer einen Eindruck davon gewinnen möchte, was alles mit `matplotlib` möglich ist, kann ja mal [hier](https://matplotlib.org/3.1.1/gallery/index.html) vorbeischauen!\n",
    "Wir haben folgendes Grundgerüst vorbereitet, in dem die Funktion $f(x) = x^2$ beispielhaft geplottet wird."
"""




