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",
|
||||
"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",
|
||||
"<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:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
|
|
|
@ -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."
|
||||
|
|
Loading…
Reference in a new issue