From 655d60a1c64755d29bdf7d5fdbb63494f7414d24 Mon Sep 17 00:00:00 2001 From: dwenz Date: Wed, 12 Aug 2020 15:02:51 +0000 Subject: [PATCH] Some minor fixes. --- Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb | 80 +++++------------ ...l_1._Einstieg_in_die_Welt_von_Python.ipynb | 85 ++++++++++++------- 2 files changed, 74 insertions(+), 91 deletions(-) diff --git a/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb b/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb index 37bb914..0712451 100644 --- a/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb +++ b/Aufgaben_zur_Vorbereitung_von_Kapitel_1.ipynb @@ -449,7 +449,7 @@ "\n", "Die zurückgelegte Distanz eines Objekts, welches eine beschleunigte Bewegung ausführt (z.B. der freie Fall einer Kugel in einem Gravitationsfeld), kann mit Hilfe von \n", "\n", - "$s(t) = \\frac{1}{2}\\cdot a \\cdot t^2 + v_0 \\cdot t + s_0$\n", + "$$s(t) = \\frac{1}{2}\\cdot a \\cdot t^2 + v_0 \\cdot t + s_0$$\n", "\n", "beschrieben werden. Hierbei beschreibt $t$ die verstrichene Zeit, $a$ die Beschleunigung, $v_0$ die Startgeschwindigkeit und $s_0$ die Startposition des Objekts. Ersteklen Sie unterhalb der Aufgabe eine neue Code-Zelle und berechnen Sie die folgenden Werte:\n", "\n", @@ -811,7 +811,7 @@ "\n", "Die Leistung, welche in einem ohmschen Widerstand umgesetzt wird, lässt sich durch\n", "\n", - "$P(U, I ) = U \\cdot I $\n", + "$$P(U, I ) = U \\cdot I $$\n", "\n", "berechnen, wobei $U$ die angelegte Spannung und $I$ der elektrische Strom ist. \n", "
" @@ -825,6 +825,15 @@ "Es ist ratsam gleich von Anfang an Funktionen zu dokumentieren. Hierzu dienen in Python die sogenannten `Doc-Strings`. Sie beinhalten Informationen über die Funktion selbst, ihre verwendeten Parameter und ihrer Ausgabe. Zum Beispiel für das Ohmschen Gesetzes würde ein solcher Doc-String wie folgt aussehen:" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Spannung" + ] + }, { "cell_type": "code", "execution_count": null, @@ -846,7 +855,6 @@ " Widerstand (float): Der Wert des verwendeten Widerstands\n", " in Ohm.\n", " \n", - " \n", " Returns:\n", " float: Die Berechnete Spannung in V.\n", " '''\n", @@ -944,7 +952,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-10-27T12:25:06.524167Z", @@ -965,50 +973,28 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-10-27T12:25:06.540756Z", "start_time": "2019-10-27T12:25:06.525161Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Wert1'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "NeueWerte[0] # Hier seht ihr, dass der erste Wert den Index 0 hat." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-10-27T12:25:06.556003Z", "start_time": "2019-10-27T12:25:06.541754Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "'Wert3'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "wert_index_2 = NeueWerte[2] \n", "wert_index_2" @@ -1023,50 +1009,28 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-10-27T12:25:06.571456Z", "start_time": "2019-10-27T12:25:06.561307Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Wert1', 'Wert2', 'Wert3']" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "NeueWerte[0:3] " + "NeueWerte[0:3]" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-10-27T12:25:06.603263Z", "start_time": "2019-10-27T12:25:06.579819Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Wert3', 'Wert4', 'Wert5']" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "NeueWerte[2:5] # Ihr seht Python behandelt den letzten Wert wie in einem offenen Intervall [2,5)" ] @@ -1253,7 +1217,7 @@ " \n", "#### Aufgabe 4.a.: Erstellen von Messwerttabellen:\n", "\n", - "Erstellen Sie für jede Spalte (außer der Messwertnummer) der nachfolgende Messtabelle eine Liste, welche die Messdaten beinhaltet. Benutzen Sie anschließend den `append` Befehl um die Daten jeder Spalte an eine weitere Liste namens *daten* anzuhängen. \n", + "Erstellen Sie für jede Spalte der nachfolgende Messtabelle eine Liste, welche die Messdaten beinhaltet. Benutzen Sie anschließend den `append` Befehl um die Daten jeder Spalte an eine weitere Liste namens *daten* anzuhängen. \n", "\n", "| Messwertnummer | Spannung [V] | Strom [mA] | Fehler der Spannung [V] | Fehler des Stroms [mA] |\n", "|----------------|--------------|------------|-------------------------|---------------------------|\n", diff --git a/Kapitel_1._Einstieg_in_die_Welt_von_Python.ipynb b/Kapitel_1._Einstieg_in_die_Welt_von_Python.ipynb index 12613b9..19b6e36 100644 --- a/Kapitel_1._Einstieg_in_die_Welt_von_Python.ipynb +++ b/Kapitel_1._Einstieg_in_die_Welt_von_Python.ipynb @@ -88,6 +88,29 @@ "Statt das Ergebnis lediglich per `print`-Anweisung darstellen zu lassen, können wir auch unser Wissen um Listen benutzen und die berechneten Werte einer neuen Liste anfügen:" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# (Funktion haben wir bereits in der Vorbereitung definiert)\n", + "def Spannung(Strom, Widerstand):\n", + " '''\n", + " Diese Funktion berechnet die Spannung eines Ohmschen \n", + " Widerstands.\n", + " \n", + " Args:\n", + " Strom (float): Der gemessene Strom in mA.\n", + " Widerstand (float): Der Wert des verwendeten Widerstands\n", + " in Ohm.\n", + " \n", + " Returns:\n", + " float: Die Berechnete Spannung in V.\n", + " '''\n", + " return Widerstand * Strom/1000" + ] + }, { "cell_type": "code", "execution_count": null, @@ -104,7 +127,8 @@ "Widerstand = 100 # Ohm\n", "\n", "for Strom in Stromwerte:\n", - " Spannungswerte.append(Spannung(Strom, Widerstand))\n", + " res = Spannung(Strom, Widerstand)\n", + " Spannungswerte.append(res)\n", "\n", "Spannungswerte" ] @@ -181,7 +205,7 @@ "# Variante 1:\n", "schallgeschindigkeiten = [] # m/s\n", "\n", - "for f,l in zip(frequenzen, wellenlängen):\n", + "for f, l in zip(frequenzen, wellenlängen):\n", " schallgeschindigkeiten.append(f*l)\n", "\n", "print(schallgeschindigkeiten)\n", @@ -239,6 +263,8 @@ }, "outputs": [], "source": [ + "# Hier eine kleine Hilfestellung für den Start:\n", + "# Messwerttabelle aus Aufgabe 4. a.:\n", "messwert_nummer = list(range(1,7,1))\n", "spannungs_wert = [12., 11.78, 12.56, 12.34, 12.01, 11.94]\n", "strom_werte = [110, 98, 102, 124, 105, 95]\n", @@ -248,14 +274,18 @@ "\n", "daten = [messwert_nummer, spannungs_wert, strom_werte, dspannung_wetre, dstrom_werte]\n", "\n", + "# Beispiel für die Berechnung des Widerstandes:\n", "def res(i, u):\n", " r = u/i\n", " return r\n", "\n", - "for strom, spannung in zip(daten[1], daten[2]):\n", + "for strom, spannung in zip(daten[2], daten[1]):\n", " widerstand.append(res(strom, spannung))\n", " \n", - "daten.append(widerstand)" + "daten.append(widerstand)\n", + "\n", + "# Jetzt seid ihr gefragt:\n", + "\n" ] }, { @@ -359,7 +389,7 @@ "plt.plot(xdaten, ydaten, # <-- Wie eben die x und y daten\n", " color = 'red', # <-- Farbe der Linie\n", " linestyle='dashed', # <-- Linientyp\n", - " label='Graph 1' # <-- Name der Linie\n", + " label='Spannungskurve' # <-- Name der Linie\n", " )\n", "plt.xlabel('X-Achse') # <-- Beschriftung der x-Achse\n", "plt.ylabel('Y-Achse') # <-- Beschiftung der y-Achse\n", @@ -485,7 +515,7 @@ "\n", "\n", "x1 = list(range(-3, 4, 1)) # <- Werte zwischen -3 und 3\n", - "x2 = [i/10 for i in range(-30,31,1)] # <- 10 mal mehr Werte\n", + "x2 = [i/10 for i in range(-30, 31, 1)] # <- 10 mal mehr Werte\n", "\n", "y1 = [cubic(j) for j in x1]\n", "y2 = [cubic(value) for value in x2]\n", @@ -524,17 +554,7 @@ "spannung_error = [0.3]*len(spannung) # Konstanter Ablesefehler [V]\n", "strom_error = [14, 9, 12, 8, 7, 11] # gemessener schwankender Fehler[mA]\n", "\n", - "plt.errorbar(strom, spannung, xerr=strom_error, yerr=spannung_error,\n", - " \n", - " linestyle='', # <-- Schaltet den Linienstyle aus | ls=''\n", - " marker='d', # <-- Ändert den Markertyp in Diamanten | -----\n", - " markerfacecolor='orange', # <-- Ändert die Markerfarbe zu Orange | mfc='orange'\n", - " markeredgecolor='k', # <-- Setzt die Kantenfarbe auf schwarz | mec='k'\n", - " markersize=7 # <-- Ändert die Markergröße | ms='7'\n", - "\n", - " \n", - " ) # <--- Wie verwende ich den errorbar plot?\n", - "\n", + "# plt.errorbar() # <--- Wie verwende ich den errorbar plot?\n", "plt.ylabel('Spannung [V]')\n", "plt.xlabel('Strom [mA]')\n", "plt.show()" @@ -727,7 +747,7 @@ }, "outputs": [], "source": [ - "rnd_numbers2 = np.random.normal(1,2,1000)\n", + "rnd_numbers2 = np.random.normal(1, 2, 1000)\n", "\n", "\n", "plt.hist(rnd_numbers, \n", @@ -906,13 +926,6 @@ "Hierbei stellt curve_fit eine Methode dar, Fit-Funktionen nach der obigen vorgestellten Methode der *kleinsten Quadraten* zu bestimmen. Dies hat zur Folge, dass lediglich die y-Fehler eurer Messwerte für den Fit verwendet werden können. " ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, @@ -951,8 +964,10 @@ " spannung # <-- gemessenen \"Y\"-Werte \n", " )\n", "\n", - "print(para)\n", - "print(pcov)" + "print(para[0])\n", + "print(pcov[0,0]**0.5)\n", + "\n", + "print(f'Widerstand R {para[0]:.2f} +/- {pcov[0,0]**0.5:.2f} Ohm')" ] }, { @@ -1035,6 +1050,13 @@ " # wir in der Regel absolute und keine relativen \n", " # Unsicherheiten messen.\n", " )\n", + "\n", + "plt.plot(strom, \n", + " [Spannung(value, para2[0]) for value in strom], \n", + " ls ='dashed',\n", + " color='orange',\n", + " label = f'Fitgerade mit R = {para2[0]:0.2f} +/- {pcov2[0,0]**(1/2):0.2f} ohm'\n", + " )\n", "plt.errorbar(strom, \n", " spannung,\n", " xerr=strom_error,\n", @@ -1050,12 +1072,7 @@ " capthick=2, \n", " label='Messwerte aus A. 5'\n", " ) \n", - "plt.plot(strom, \n", - " [Spannung(value, para2[0]) for value in strom], \n", - " ls ='dashed',\n", - " color='orange',\n", - " label = f'Fitgerade mit R = {para2[0]:0.2f} +/- {pcov2[0,0]**(1/2):0.2f} ohm'\n", - " )\n", + "\n", "\n", "plt.legend()\n", "plt.ylabel('Spannung [V]')\n", @@ -1104,6 +1121,8 @@ "source": [ "Wie vergleicht sich dieses $\\chi^2$ nun mit einer Funktion welche unsere Daten schlechter beschreibt. Zum Beispiel sofern wir die Spannung über die Funktion \n", "\n", + "$$ U(R,I) = R \\cdot I $$\n", + "\n", "$$ U(R,I) = R \\cdot I^2 $$\n", "\n", "beschreiben würden."