mirror of
https://gitlab.rlp.net/pgp/pgp1-python-einfuehrung
synced 2024-11-16 13:48:11 +00:00
Some minor fixes.
This commit is contained in:
parent
ec31dc3738
commit
655d60a1c6
2 changed files with 74 additions and 91 deletions
|
@ -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",
|
||||||
|
|
|
@ -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"
|
||||||
]
|
]
|
||||||
|
@ -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",
|
||||||
|
@ -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()"
|
||||||
|
@ -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."
|
||||||
|
|
Loading…
Reference in a new issue