1
0
Fork 0
mirror of https://gitlab.rlp.net/pgp/pgp1-python-einfuehrung synced 2024-10-12 13:24:22 +00:00

Some minor fixes.

This commit is contained in:
dwenz 2020-08-12 15:02:51 +00:00
parent ec31dc3738
commit 655d60a1c6
2 changed files with 74 additions and 91 deletions

View file

@ -449,7 +449,7 @@
"\n", "\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", "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", "\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", "\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", "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", "\n",
@ -811,7 +811,7 @@
"\n", "\n",
"Die Leistung, welche in einem ohmschen Widerstand umgesetzt wird, lässt sich durch\n", "Die Leistung, welche in einem ohmschen Widerstand umgesetzt wird, lässt sich durch\n",
"\n", "\n",
"$P(U, I ) = U \\cdot I $\n", "$$P(U, I ) = U \\cdot I $$\n",
"\n", "\n",
"berechnen, wobei $U$ die angelegte Spannung und $I$ der elektrische Strom ist. \n", "berechnen, wobei $U$ die angelegte Spannung und $I$ der elektrische Strom ist. \n",
"<div>" "<div>"
@ -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:" "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", "cell_type": "code",
"execution_count": null, "execution_count": null,
@ -846,7 +855,6 @@
" Widerstand (float): Der Wert des verwendeten Widerstands\n", " Widerstand (float): Der Wert des verwendeten Widerstands\n",
" in Ohm.\n", " in Ohm.\n",
" \n", " \n",
" \n",
" Returns:\n", " Returns:\n",
" float: Die Berechnete Spannung in V.\n", " float: Die Berechnete Spannung in V.\n",
" '''\n", " '''\n",
@ -944,7 +952,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": null,
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
"end_time": "2019-10-27T12:25:06.524167Z", "end_time": "2019-10-27T12:25:06.524167Z",
@ -965,50 +973,28 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": null,
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
"end_time": "2019-10-27T12:25:06.540756Z", "end_time": "2019-10-27T12:25:06.540756Z",
"start_time": "2019-10-27T12:25:06.525161Z" "start_time": "2019-10-27T12:25:06.525161Z"
} }
}, },
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"'Wert1'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"NeueWerte[0] # Hier seht ihr, dass der erste Wert den Index 0 hat." "NeueWerte[0] # Hier seht ihr, dass der erste Wert den Index 0 hat."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": null,
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
"end_time": "2019-10-27T12:25:06.556003Z", "end_time": "2019-10-27T12:25:06.556003Z",
"start_time": "2019-10-27T12:25:06.541754Z" "start_time": "2019-10-27T12:25:06.541754Z"
} }
}, },
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"'Wert3'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"wert_index_2 = NeueWerte[2] \n", "wert_index_2 = NeueWerte[2] \n",
"wert_index_2" "wert_index_2"
@ -1023,50 +1009,28 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": null,
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
"end_time": "2019-10-27T12:25:06.571456Z", "end_time": "2019-10-27T12:25:06.571456Z",
"start_time": "2019-10-27T12:25:06.561307Z" "start_time": "2019-10-27T12:25:06.561307Z"
} }
}, },
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"['Wert1', 'Wert2', 'Wert3']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"NeueWerte[0:3] " "NeueWerte[0:3]"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": null,
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
"end_time": "2019-10-27T12:25:06.603263Z", "end_time": "2019-10-27T12:25:06.603263Z",
"start_time": "2019-10-27T12:25:06.579819Z" "start_time": "2019-10-27T12:25:06.579819Z"
} }
}, },
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"['Wert3', 'Wert4', 'Wert5']"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"NeueWerte[2:5] # Ihr seht Python behandelt den letzten Wert wie in einem offenen Intervall [2,5)" "NeueWerte[2:5] # Ihr seht Python behandelt den letzten Wert wie in einem offenen Intervall [2,5)"
] ]
@ -1253,7 +1217,7 @@
" \n", " \n",
"#### Aufgabe 4.a.: Erstellen von Messwerttabellen:\n", "#### Aufgabe 4.a.: Erstellen von Messwerttabellen:\n",
"\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", "\n",
"| Messwertnummer | Spannung [V] | Strom [mA] | Fehler der Spannung [V] | Fehler des Stroms [mA] |\n", "| Messwertnummer | Spannung [V] | Strom [mA] | Fehler der Spannung [V] | Fehler des Stroms [mA] |\n",
"|----------------|--------------|------------|-------------------------|---------------------------|\n", "|----------------|--------------|------------|-------------------------|---------------------------|\n",

View file

@ -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:" "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", "cell_type": "code",
"execution_count": null, "execution_count": null,
@ -104,7 +127,8 @@
"Widerstand = 100 # Ohm\n", "Widerstand = 100 # Ohm\n",
"\n", "\n",
"for Strom in Stromwerte:\n", "for Strom in Stromwerte:\n",
" Spannungswerte.append(Spannung(Strom, Widerstand))\n", " res = Spannung(Strom, Widerstand)\n",
" Spannungswerte.append(res)\n",
"\n", "\n",
"Spannungswerte" "Spannungswerte"
] ]
@ -181,7 +205,7 @@
"# Variante 1:\n", "# Variante 1:\n",
"schallgeschindigkeiten = [] # m/s\n", "schallgeschindigkeiten = [] # m/s\n",
"\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", " schallgeschindigkeiten.append(f*l)\n",
"\n", "\n",
"print(schallgeschindigkeiten)\n", "print(schallgeschindigkeiten)\n",
@ -239,6 +263,8 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"# Hier eine kleine Hilfestellung für den Start:\n",
"# Messwerttabelle aus Aufgabe 4. a.:\n",
"messwert_nummer = list(range(1,7,1))\n", "messwert_nummer = list(range(1,7,1))\n",
"spannungs_wert = [12., 11.78, 12.56, 12.34, 12.01, 11.94]\n", "spannungs_wert = [12., 11.78, 12.56, 12.34, 12.01, 11.94]\n",
"strom_werte = [110, 98, 102, 124, 105, 95]\n", "strom_werte = [110, 98, 102, 124, 105, 95]\n",
@ -248,14 +274,18 @@
"\n", "\n",
"daten = [messwert_nummer, spannungs_wert, strom_werte, dspannung_wetre, dstrom_werte]\n", "daten = [messwert_nummer, spannungs_wert, strom_werte, dspannung_wetre, dstrom_werte]\n",
"\n", "\n",
"# Beispiel für die Berechnung des Widerstandes:\n",
"def res(i, u):\n", "def res(i, u):\n",
" r = u/i\n", " r = u/i\n",
" return r\n", " return r\n",
"\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", " widerstand.append(res(strom, spannung))\n",
" \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", "plt.plot(xdaten, ydaten, # <-- Wie eben die x und y daten\n",
" color = 'red', # <-- Farbe der Linie\n", " color = 'red', # <-- Farbe der Linie\n",
" linestyle='dashed', # <-- Linientyp\n", " linestyle='dashed', # <-- Linientyp\n",
" label='Graph 1' # <-- Name der Linie\n", " label='Spannungskurve' # <-- Name der Linie\n",
" )\n", " )\n",
"plt.xlabel('X-Achse') # <-- Beschriftung der x-Achse\n", "plt.xlabel('X-Achse') # <-- Beschriftung der x-Achse\n",
"plt.ylabel('Y-Achse') # <-- Beschiftung der y-Achse\n", "plt.ylabel('Y-Achse') # <-- Beschiftung der y-Achse\n",
@ -485,7 +515,7 @@
"\n", "\n",
"\n", "\n",
"x1 = list(range(-3, 4, 1)) # <- Werte zwischen -3 und 3\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", "\n",
"y1 = [cubic(j) for j in x1]\n", "y1 = [cubic(j) for j in x1]\n",
"y2 = [cubic(value) for value in x2]\n", "y2 = [cubic(value) for value in x2]\n",
@ -524,17 +554,7 @@
"spannung_error = [0.3]*len(spannung) # Konstanter Ablesefehler [V]\n", "spannung_error = [0.3]*len(spannung) # Konstanter Ablesefehler [V]\n",
"strom_error = [14, 9, 12, 8, 7, 11] # gemessener schwankender Fehler[mA]\n", "strom_error = [14, 9, 12, 8, 7, 11] # gemessener schwankender Fehler[mA]\n",
"\n", "\n",
"plt.errorbar(strom, spannung, xerr=strom_error, yerr=spannung_error,\n", "# plt.errorbar() # <--- Wie verwende ich den errorbar plot?\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.ylabel('Spannung [V]')\n", "plt.ylabel('Spannung [V]')\n",
"plt.xlabel('Strom [mA]')\n", "plt.xlabel('Strom [mA]')\n",
"plt.show()" "plt.show()"
@ -727,7 +747,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"rnd_numbers2 = np.random.normal(1,2,1000)\n", "rnd_numbers2 = np.random.normal(1, 2, 1000)\n",
"\n", "\n",
"\n", "\n",
"plt.hist(rnd_numbers, \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. " "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", "cell_type": "code",
"execution_count": null, "execution_count": null,
@ -951,8 +964,10 @@
" spannung # <-- gemessenen \"Y\"-Werte \n", " spannung # <-- gemessenen \"Y\"-Werte \n",
" )\n", " )\n",
"\n", "\n",
"print(para)\n", "print(para[0])\n",
"print(pcov)" "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", " # wir in der Regel absolute und keine relativen \n",
" # Unsicherheiten messen.\n", " # Unsicherheiten messen.\n",
" )\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", "plt.errorbar(strom, \n",
" spannung,\n", " spannung,\n",
" xerr=strom_error,\n", " xerr=strom_error,\n",
@ -1050,12 +1072,7 @@
" capthick=2, \n", " capthick=2, \n",
" label='Messwerte aus A. 5'\n", " label='Messwerte aus A. 5'\n",
" ) \n", " ) \n",
"plt.plot(strom, \n", "\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.legend()\n",
"plt.ylabel('Spannung [V]')\n", "plt.ylabel('Spannung [V]')\n",
@ -1104,6 +1121,8 @@
"source": [ "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", "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", "\n",
"$$ U(R,I) = R \\cdot I $$\n",
"\n",
"$$ U(R,I) = R \\cdot I^2 $$\n", "$$ U(R,I) = R \\cdot I^2 $$\n",
"\n", "\n",
"beschreiben würden." "beschreiben würden."