diff --git a/exercises-latex/01-helloworld/aufgabe.txt b/exercises-latex/01-helloworld/aufgabe.txt index 212affcd..f451a7ca 100644 --- a/exercises-latex/01-helloworld/aufgabe.txt +++ b/exercises-latex/01-helloworld/aufgabe.txt @@ -1,6 +1,6 @@ Aufgabe 1: - Erstellt mit LaTeX ein PDF-Dokument, das + Erstelle mit LaTeX ein PDF-Dokument, das "Hello, World!" enthält. - Nutzt dazu die gestellte Datei `geruest.tex` und kompiliert mit lualatex. + Nutze dazu die gestellte Datei `geruest.tex` und kompiliere mit lualatex. diff --git a/exercises-latex/02-input/aufgabe.txt b/exercises-latex/02-input/aufgabe.txt index 5eee1cdf..4e4b29f1 100644 --- a/exercises-latex/02-input/aufgabe.txt +++ b/exercises-latex/02-input/aufgabe.txt @@ -1,7 +1,7 @@ Aufgabe 1: - Lagert den Text und die Präambel eurer Hello-World-Übung + Lagere den Text und die Präambel deiner Hello-World-Übung in einzelne `.tex`-Dateien aus. Zum Beispiel eine Datei `header.tex` und eine Datei `content.tex`. Aufgabe 2: - Ladet sie wieder in ein Dokument, sodass die PDF-Datei identisch ist. + Lade sie wieder in ein Dokument, sodass die PDF-Datei identisch ist. diff --git a/exercises-latex/03-lists/aufgabe.txt b/exercises-latex/03-lists/aufgabe.txt index 83b4124e..c947f390 100644 --- a/exercises-latex/03-lists/aufgabe.txt +++ b/exercises-latex/03-lists/aufgabe.txt @@ -1,16 +1,16 @@ Aufgabe 1: - Erstellt eine unnummerierte Liste der - Vorlesungen, die ihr nächstes Semester hört. + Erstelle eine unnummerierte Liste der + Vorlesungen, die du nächstes Semester hörst. Aufgabe 2: - Erstellt eine nummerierte Liste der Top-3 eurer + Erstelle eine nummerierte Liste der Top-3 deiner Lieblingsfilme. Aufgabe 3: - Beschreibt kurz drei Personen eurer Wahl. + Beschreibe kurz drei Personen deiner Wahl. Aufgabe 4: - Verschachtelt zwei oder mehr Aufzählungen: + Verschachtele zwei oder mehr Aufzählungen: z.B.: - A 1. a diff --git a/exercises-latex/04-titlepage/aufgabe.txt b/exercises-latex/04-titlepage/aufgabe.txt index 00587317..7c92acc7 100644 --- a/exercises-latex/04-titlepage/aufgabe.txt +++ b/exercises-latex/04-titlepage/aufgabe.txt @@ -1,9 +1,12 @@ Aufgabe 1: - Setzt in eurem Dokument die Meta-Angaben + Setze in deinem Dokument die Meta-Angaben author title date - für euren ersten Praktikumsversuch. + für deinen ersten Praktikumsversuch. - Erstellt das PDF-Dokument so, dass die Titelangaben (Titel, Autor, Datum, etc.) + Erstelle das PDF-Dokument so, dass die Titelangaben (Titel, Autor, Datum, etc.) auf einer eigenen Titelseite ausgeben werden. + +Falls du nicht weißt, was dein erster Versuch sein wird, +kannst du "v101 - Das Trägheitsmoment" nehmen. \ No newline at end of file diff --git a/exercises-latex/05-structure/aufgabe.txt b/exercises-latex/05-structure/aufgabe.txt index 7479b65f..c78553f3 100644 --- a/exercises-latex/05-structure/aufgabe.txt +++ b/exercises-latex/05-structure/aufgabe.txt @@ -1,5 +1,5 @@ Aufgabe 1: - Kopiert eure Lösung aus Aufgabe 4 und fügt zusätzlich + Kopiere deine Lösung aus Aufgabe 4 und füge zusätzlich die Gliederung für das Protokoll ein. Diese sieht üblicherweise so aus: 1 Theorie @@ -13,4 +13,4 @@ Aufgabe 1: 4 Diskussion Aufgabe 2: - Erstellt das Inhaltsverzeichnis und kompiliert. + Erstelle das Inhaltsverzeichnis und kompiliere die PDF. diff --git a/exercises-latex/06-math/aufgabe.txt b/exercises-latex/06-math/aufgabe.txt index 77d0dd89..a8a20973 100644 --- a/exercises-latex/06-math/aufgabe.txt +++ b/exercises-latex/06-math/aufgabe.txt @@ -1,47 +1,47 @@ -Hinweis: Falls Ihr die hier benötigten Gesetze - und Gleichungen nicht mehr wisst, - werft einen Blick in das PDF der Musterlösung. +Hinweis: Falls du die hier benötigten Gesetze + und Gleichungen nicht mehr weißt, + kannst du einen Blick in die PDF der Musterlösung werfen. [Nicht in die .tex ;)] Aufgabe 1: - Erstellt ein neues LaTeX Document. - Ladet zusätzlich zum Gerüst in `geruest.tex` die benötigten Pakete - für Mathematik und nehmt die empfohlenen Einstellungen + Erstelle ein neues LaTeX Dokument. + Lade zusätzlich zum Gerüst in `geruest.tex` die benötigten Pakete + für Mathematik und nimm die empfohlenen Einstellungen vor. Aufgabe 2: - Setzt das Biot–Savart-Gesetz. - Erklärt darunter im Fließtext die darin vorkommenden Größen und Konstanten. - Versucht dafür die $-Umgebung und weitere Umgebungen zu verwenden, - die Ihr kennen gelernt habt. + Setze das Biot–Savart-Gesetz. + Erkläre darunter im Fließtext die darin vorkommenden Größen und Konstanten. + Versuche dafür die $-Umgebung und weitere Umgebungen zu verwenden, + die du kennengelernt hast. Aufgabe 3: - Setzt die Formel für die gaußsche Fehlerfortpflanzung. + Setze die Formel für die gaußsche Fehlerfortpflanzung. Aufgabe 4: - Setzt die vier differentiellen Maxwellgleichungen. + Setze die vier differentiellen Maxwellgleichungen. Dabei sollen jeweils die homogenen bzw. die inhomogen Gleichungen in einer Zeile stehen und die Gleichungen für E bzw. B untereinander. - Richtet die Gleichungen jeweils Vertikal am Gleichheitszeichen aus. + Richte die Gleichungen jeweils vertikal am Gleichheitszeichen aus. Aufgabe 5: - Leitet aus den Maxwellgleichungen im Vakuum die Wellengleichung + Leite aus den Maxwellgleichungen im Vakuum die Wellengleichung für E oder B her. Aufgabe 6: - Setzt die Gleichung für eine ebene Welle sowie eine mögliche - Lösung derselben. Setzt die Definitionen von Phasen- und - Gruppengeschwindigkeit. + Setze die Gleichung für eine ebene Welle sowie eine mögliche + Lösung derselben. Setze zusätzlich die Definitionen von + Phasen- und Gruppengeschwindigkeit. Aufgabe 7: - Setzt die Multipolentwicklung für das elektrische Potential - einer Ansammlung von Punktladungen. Definiert dabei den + Setze die Multipolentwicklung für das elektrische Potential + einer Ansammlung von Punktladungen. Definiere dabei den Quadrupoltensor in einer unnummerierten Gleichung. Aufgabe 8: - Setzt die Jacobi-Matrix einer allgemeinen m-komponentigen + Setze die Jacobi-Matrix einer allgemeinen m-komponentigen Funktion mit n Parametern. Aufgabe 9: - Setzt die DGL für den gedämpften harmonischen Oszillator sowie ihre Lösung. + Setze die DGL für den gedämpften harmonischen Oszillator sowie ihre Lösung. diff --git a/exercises-latex/07-siunitx/aufgabe.txt b/exercises-latex/07-siunitx/aufgabe.txt index 04eec14d..c85a6ec9 100644 --- a/exercises-latex/07-siunitx/aufgabe.txt +++ b/exercises-latex/07-siunitx/aufgabe.txt @@ -1,9 +1,9 @@ Aufgabe 1: - Ladet das Paket siunitx in eurer Präambel + Lade das Paket siunitx in deiner Präambel ohne Einstellungen. Aufgabe 2: - a) Erzeugt Ausgaben für + a) Erzeuge Ausgaben für \qty{27.23(1)e3}{\meter\per\second} und @@ -12,26 +12,26 @@ Aufgabe 2: \qty{27.23(1)e3}{\meter\per\second} \end{equation} - b) Ladet nun die Option "locale=DE", wie ändert sich die Ausgabe? - Tipp: mit \sisetup{} lassen sich Optionen auch nach dem Laden + b) Lade nun die Option "locale=DE", wie ändert sich die Ausgabe? + Tipp: Mit \sisetup{} lassen sich Optionen auch nach dem Laden des Pakets einstellen. - c) Ladet zusätzlich die Option "separate-uncertainty=true", + c) Lade zusätzlich die Option "separate-uncertainty=true", wie verändert sich die Ausgabe? - d) Ladet zusätzlich die Option "per-mode=symbol-or-fraction", + d) Lade zusätzlich die Option "per-mode=symbol-or-fraction", wie ändert sich die Ausgabe? Aufgabe 3: - Vergleicht die Ausgaben von: + Vergleiche die Ausgaben von: $0,2$ und $\num{0,2}$ $10000$ und $\num{10000}$ $3,1415926$ und $\num{3,1415926}$ - Wie würdet ihr ohne siunitx die Ausgabe von + Wie würdest du ohne siunitx die Ausgabe von \num{1,234(5)e3} erreichen? Aufgabe 4: - Setzt folgende Größen mit siunitx: + Setze folgende Größen mit siunitx: 511 keV 1*10^-10 m 3*10^8 m/s diff --git a/exercises-latex/08-figures/aufgabe.txt b/exercises-latex/08-figures/aufgabe.txt index 4ae2efc3..5ab57d15 100644 --- a/exercises-latex/08-figures/aufgabe.txt +++ b/exercises-latex/08-figures/aufgabe.txt @@ -1,23 +1,22 @@ Aufgabe 1: - Ladet die benötigten Pakete zum Einbinden von Grafiken. - Fügt "plot1.pdf" in die Datei ein und gebt dem Plot eine - Abbildungsunterschrift und ein Label. Bezieht Euch + Lade die benötigten Pakete zum Einbinden von Grafiken. + Füge "plot1.pdf" in die Datei ein und gib dem Plot eine + Abbildungsunterschrift und ein Label. Beziehe dich auch im Text auf die Grafik. Aufgabe 2: Erstelle eine Abbildung, die "plot2.pdf" und "plot3.pdf" nebeneinander enthält. Dabei soll jeder Plot eine eigene - Abbildungsunterschrift und ein eigenes Label bekommen - sowie die ganze Abbildung eine gemeinsame. Bezieht euch so- - wohl auf die ganze Abbildung als auch auf einen Teil im - Text. + Abbildungsunterschrift und ein eigenes Label bekommen, + sowie die ganze Abbildung eine gemeinsame. Beziehe dich im Text + sowohl auf die ganze Abbildung, als auch auf einen Teil. Warum ist es nicht gut, die beiden Plots auf diese Weise einzubinden? Aufgabe 3: - Ändert das Erscheinungsbild der Abbildungsunterschriften. - Schlagt dazu in der "caption"-Dokumentation nach, wie ihr: + Ändere das Erscheinungsbild der Abbildungsunterschriften. + Schlage dazu in der "caption"-Dokumentation nach, wie du: 1. Das Label "Abbildung x:" fett setzt 2. Die Schriftgröße verkleinert 3. Die Breite für Abbildungsunterschriften schmaler @@ -26,4 +25,4 @@ Aufgabe 3: (und Tabellenüberschriften) deutlicher vom Fließtext abheben. Aufgabe 4: - Ändert die Ausrichtung der Caption-Texte am Label. + Ändere die Ausrichtung der Caption-Texte am Label. diff --git a/exercises-latex/09-tables/aufgabe.txt b/exercises-latex/09-tables/aufgabe.txt index 9b9d7f11..332ec62e 100644 --- a/exercises-latex/09-tables/aufgabe.txt +++ b/exercises-latex/09-tables/aufgabe.txt @@ -1,25 +1,14 @@ Aufgabe 1: - Erstellt mithilfe der Pakete siunitx und tabularray eine - Tabelle aus den Daten in `data.txt`. Denkt daran, Einheiten + Erstelle mithilfe der Pakete siunitx und tabularray eine + Tabelle aus den Daten in `data.txt`. Denke daran, Einheiten für Größen anzugeben und ausreichend viel Platz für alle Spalten zu reservieren. Aufgabe 2: - Erstellt mittels siunitx und tabularray eine Tabelle mit den - Daten aus `data_error.txt`. Setzt zwischen Wert und Fehler + Erstelle mittels siunitx und tabularray eine Tabelle mit den + Daten aus `data_error.txt`. Setze zwischen Wert und Fehler ein +/-, wie auf den Folien besprochen. -Fortgeschritten: - In der Datei `data_long.txt` wurde die Messreihe aus Aufgabe 1 - fortgesetzt. Erstellt nun mit Hilfe der longtblr-Umgebung eine - lange Tabelle mit den Daten aus dieser Datei. Denkt dabei daran, - die richtigen Optionen im Header der Tabelle zu setzen. - Tipp: Ein guter Texteditor macht die Aufgabe viel leichter. Finde heraus, wie dein Editor z.B. eine Spalte aus & einfügen kann. - -Tipp für die fortgeschrittene Aufgabe: - Damit die Tabelle nicht irgendwo, sondern nach den beide Tabellen aus - den Aufgaben 1 und 2 platziert wird, bietet es sich an, vor der langen - Tabelle den Befehl \FloatBarrier aus dem Paket `placeins` zu setzen. diff --git a/exercises-latex/09-tables/loesung.tex b/exercises-latex/09-tables/loesung.tex index 4d222391..bd01171a 100644 --- a/exercises-latex/09-tables/loesung.tex +++ b/exercises-latex/09-tables/loesung.tex @@ -30,16 +30,9 @@ per-mode=symbol-or-fraction, ]{siunitx} -\usepackage{placeins} \usepackage{tabularray} \UseTblrLibrary{booktabs, siunitx} -% Tabularray settings -\DefTblrTemplate{contfoot-text}{normal}{Weiter auf der nächsten Seite} -\SetTblrTemplate{contfoot-text}{normal} -\DefTblrTemplate{conthead-text}{normal}{(Fortsetzung)} -\SetTblrTemplate{conthead-text}{normal} - \usepackage[unicode]{hyperref} \usepackage{bookmark} @@ -89,9 +82,4 @@ \end{tblr} \end{table} -\FloatBarrier - -\section*{Fortgeschritten} -\input{loesung-long_table.tex} - \end{document} diff --git a/exercises-latex/11-biblatex/aufgabe.txt b/exercises-latex/11-biblatex/aufgabe.txt index 42582fe3..c267e6f9 100644 --- a/exercises-latex/11-biblatex/aufgabe.txt +++ b/exercises-latex/11-biblatex/aufgabe.txt @@ -1,6 +1,6 @@ Aufgabe: Erstelle eine `lit.bib` Datei mit den Quellen aus der Datei `quellen.txt`. - Binde die notwendigen Pakete ein und denke dir 3 beliebige Sätze aus, in denen Du auf die Quellen verweist. - Die Verweise sollten ein normaler sein, einer mit einem Seitenintervall und einer, in dem du auf mehrere Quellen verweist. + Binde die notwendigen Pakete ein und denke dir 3 beliebige Sätze aus, in denen du auf die Quellen verweist. + Die Verweise sollten ein normaler, einer mit einem Seitenintervall und einer, in dem du auf mehrere Quellen verweist sein. -Hinweis: Wählt als Stil "alphabetic". +Hinweis: Wähle als Stil "alphabetic". diff --git a/exercises-latex/14-beamer/Makefile-loesung b/exercises-latex/12-longtable/Makefile-loesung similarity index 100% rename from exercises-latex/14-beamer/Makefile-loesung rename to exercises-latex/12-longtable/Makefile-loesung diff --git a/exercises-latex/12-longtable/aufgabe.txt b/exercises-latex/12-longtable/aufgabe.txt new file mode 100644 index 00000000..7e5aa666 --- /dev/null +++ b/exercises-latex/12-longtable/aufgabe.txt @@ -0,0 +1,13 @@ +Aufgabe: +Kopiere deine .tex Dateien aus Übung 9. + +Ergänze deine Datei mit einer dritten Tabelle. +In der Datei `data_long.txt` wurde die Messreihe aus Aufgabe 1 +fortgesetzt. Erstelle nun mit Hilfe der longtblr-Umgebung eine +lange Tabelle mit den Daten aus dieser Datei. Denke dabei daran, +die richtigen Optionen im Header der Tabelle zu setzen. + +Tipp: + Damit die Tabelle nicht irgendwo, sondern nach den beide Tabellen aus + den Aufgaben 1 und 2 platziert wird, bietet es sich an, vor der langen + Tabelle den Befehl \FloatBarrier aus dem Paket `placeins` zu setzen. \ No newline at end of file diff --git a/exercises-latex/09-tables/data_long.txt b/exercises-latex/12-longtable/data_long.txt similarity index 100% rename from exercises-latex/09-tables/data_long.txt rename to exercises-latex/12-longtable/data_long.txt diff --git a/exercises-latex/09-tables/loesung-long_table.tex b/exercises-latex/12-longtable/loesung-long_table.tex similarity index 100% rename from exercises-latex/09-tables/loesung-long_table.tex rename to exercises-latex/12-longtable/loesung-long_table.tex diff --git a/exercises-latex/12-longtable/loesung-table.tex b/exercises-latex/12-longtable/loesung-table.tex new file mode 100644 index 00000000..368d970e --- /dev/null +++ b/exercises-latex/12-longtable/loesung-table.tex @@ -0,0 +1,47 @@ +\begin{tblr}{ + colspec = { + S[table-format=3.0] + S[table-format=2.3] + S[table-format=2.2] + S[table-format=3.1] + S[table-format=2.2] + S[table-format=3.3] + S[table-format=3.2] + S[table-format=3.1] + S[table-format=2.2] + }, + row{1} = {guard}, + row{2} = {guard, mode=math} + } + \toprule + & \SetCell[c=4]{c} Messung 1 & & & & \SetCell[c=4]{c} Messung 2 & & & \\ + \cmidrule[lr]{2-5} \cmidrule[lr]{6-9} + \symup{\Delta} t \mathbin{/} \unit{\second} & + R_\text{Probe} \mathbin{/} \unit{\ohm} & + R_\text{Geh} \mathbin{/} \unit{\ohm} & + I \mathbin{/} \unit{\milli\ampere} & + U \mathbin{/} \unit{\volt} & + R_\text{Probe} \mathbin{/} \unit{\ohm} & + R_\text{Geh} \mathbin{/} \unit{\ohm} & + I \mathbin{/} \unit{\milli\ampere} & + U \mathbin{/} \unit{\volt} \\ + \midrule + 0 & 22.220 & 22.34 & 80 & 8.5 & 22.220 & 22.34 & 80 & 8.5 \\ + 60 & 22.457 & 22.63 & 80 & 8.5 & 23.445 & 23.92 & 81 & 8.5 \\ + 60 & 22.707 & 22.98 & 80 & 8.5 & 24.838 & 24.75 & 81.6 & 8.54 \\ + 60 & 22.960 & 23.31 & 81 & 8.5 & 25.944 & 26.23 & 81.6 & 8.54 \\ + 60 & 23.190 & 23.61 & 81 & 8.5 & 27.039 & 27.01 & 81.9 & 8.57 \\ + 60 & 23.445 & 23.92 & 81 & 8.5 & 32.014 & 30.87 & 186.6 & 19.59 \\ + 120 & 23.926 & 24.19 & 81.6 & 8.54 & 35.079 & 36.63 & 141.3 & 14.84 \\ + 120 & 24.294 & 24.32 & 81.6 & 8.54 & 38.024 & 40.20 & 142.0 & 14.93 \\ + 120 & 24.838 & 24.75 & 81.6 & 8.54 & 40.780 & 43.15 & 142.4 & 15.00 \\ + 300 & 25.944 & 26.23 & 81.6 & 8.54 & 43.497 & 46.97 & 142.5 & 15.02 \\ + 300 & 27.039 & 27.01 & 81.9 & 8.57 & 46.106 & 47.65 & 142.4 & 15.00 \\ + 300 & 32.014 & 30.87 & 186.6 & 19.59 & 48.597 & 49.09 & 142.4 & 15.00 \\ + 300 & 35.079 & 36.63 & 141.3 & 14.84 & 50.993 & 51.27 & 142.4 & 15.02 \\ + 300 & 38.024 & 40.20 & 142.0 & 14.93 & 53.370 & 53.74 & 142.5 & 15.03 \\ + 300 & 40.780 & 43.15 & 142.4 & 15.00 & 55.710 & 56.09 & 142.5 & 15.03 \\ + 300 & 43.497 & 46.97 & 142.5 & 15.02 & 57.989 & 58.31 & 142.5 & 15.03 \\ + 300 & 46.106 & 47.65 & 142.4 & 15.00 & 60.228 & 60.48 & 142.7 & 15.07 \\ + \bottomrule +\end{tblr} diff --git a/exercises-latex/12-longtable/loesung.tex b/exercises-latex/12-longtable/loesung.tex new file mode 100644 index 00000000..4d222391 --- /dev/null +++ b/exercises-latex/12-longtable/loesung.tex @@ -0,0 +1,97 @@ +\documentclass[ + captions=tableheading, +]{scrartcl} + +\usepackage{scrhack} + +\usepackage[aux]{rerunfilecheck} + +\usepackage{fontspec} + +\usepackage[ngerman]{babel} + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{mathtools} + + +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} + +\usepackage[ + locale=DE, + separate-uncertainty=true, + per-mode=symbol-or-fraction, +]{siunitx} + +\usepackage{placeins} +\usepackage{tabularray} +\UseTblrLibrary{booktabs, siunitx} + +% Tabularray settings +\DefTblrTemplate{contfoot-text}{normal}{Weiter auf der nächsten Seite} +\SetTblrTemplate{contfoot-text}{normal} +\DefTblrTemplate{conthead-text}{normal}{(Fortsetzung)} +\SetTblrTemplate{conthead-text}{normal} + +\usepackage[unicode]{hyperref} +\usepackage{bookmark} + +\begin{document} + +\begin{table} + \centering + \caption{ + Eine Tabelle mit Messdaten. + Wir werden später lernen, wie man sie zentriert. + } + \input{loesung-table.tex} +\end{table} + +\begin{table} + \centering + \caption{Eine Tabelle mit Messwerten und Unsicherheiten.} + \begin{tblr}{ + colspec = {S[table-format=2.2] S[table-format=1.2]}, + row{1} = {guard, mode=math}, + vline{2} = {2}{-}{text=\clap{$\pm$}} + } + \toprule + \SetCell[c=2]{c} x \mathbin{/} \unit{\meter} \\ + \midrule + 9.29 & 0.79 \\ + 7.6 & 1.7 \\ + 16.4 & 6.5 \\ + 10.03 & 0.51 \\ + 9.0 & 1.7 \\ + 10.5 & 1.1 \\ + 10.49 & 0.29 \\ + 10.5 & 1.6 \\ + 9.9 & 1.2 \\ + 10.64 & 0.80 \\ + 9.3 & 1.0 \\ + 9.28 & 0.88 \\ + 10.96 & 0.69 \\ + 10.48 & 0.72 \\ + 9.8 & 1.4 \\ + 9.58 & 0.33 \\ + 10.2 & 2.1 \\ + 10.31 & 0.91 \\ + 10.53 & 0.42 \\ + 8.5 & 2.0 \\ + \bottomrule + \end{tblr} +\end{table} + +\FloatBarrier + +\section*{Fortgeschritten} +\input{loesung-long_table.tex} + +\end{document} diff --git a/exercises-latex/12-python/.gitignore b/exercises-latex/13-python/.gitignore similarity index 100% rename from exercises-latex/12-python/.gitignore rename to exercises-latex/13-python/.gitignore diff --git a/exercises-latex/12-python/Makefile-loesung b/exercises-latex/13-python/Makefile-loesung similarity index 100% rename from exercises-latex/12-python/Makefile-loesung rename to exercises-latex/13-python/Makefile-loesung diff --git a/exercises-latex/12-python/aufgabe.txt b/exercises-latex/13-python/aufgabe.txt similarity index 88% rename from exercises-latex/12-python/aufgabe.txt rename to exercises-latex/13-python/aufgabe.txt index 83546a64..beb50d4c 100644 --- a/exercises-latex/12-python/aufgabe.txt +++ b/exercises-latex/13-python/aufgabe.txt @@ -17,7 +17,7 @@ Schreibe auch die Ergebnisse für die Fitparameter in .tex-Dateien in der Form \qty{1+-2e3}{\meter} . -Dabei ist e3 aber nicht unbedingt nötig in dieser Aufgabe. +Dabei ist 'e3' aber nicht unbedingt nötig in dieser Aufgabe. Nutze dazu die Funktion @@ -28,6 +28,6 @@ unit ist die Einheit in der Form eines Strings mit siunitx-Einheitenbefehlen. exp ist optional und gibt einen Exponenten in der Form 'e3' an. -Schreibe ein Protokoll, in der Du den Plot, die Tabelle und die Fitergebnisse (als Formeln) einbindest. +Schreibe ein Protokoll, in dem du den Plot, die Tabelle und die Fitergebnisse (als Formeln) einbindest. Schreibe ein Makefile, das alle Dateien neu erstellen kann. diff --git a/exercises-latex/12-python/curve_fit.py b/exercises-latex/13-python/curve_fit.py similarity index 100% rename from exercises-latex/12-python/curve_fit.py rename to exercises-latex/13-python/curve_fit.py diff --git a/exercises-latex/12-python/data.py b/exercises-latex/13-python/data.py similarity index 100% rename from exercises-latex/12-python/data.py rename to exercises-latex/13-python/data.py diff --git a/exercises-latex/12-python/loesung-header-matplotlib.tex b/exercises-latex/13-python/loesung-header-matplotlib.tex similarity index 100% rename from exercises-latex/12-python/loesung-header-matplotlib.tex rename to exercises-latex/13-python/loesung-header-matplotlib.tex diff --git a/exercises-latex/12-python/loesung-header.tex b/exercises-latex/13-python/loesung-header.tex similarity index 100% rename from exercises-latex/12-python/loesung-header.tex rename to exercises-latex/13-python/loesung-header.tex diff --git a/exercises-latex/12-python/loesung-matplotlibrc b/exercises-latex/13-python/loesung-matplotlibrc similarity index 100% rename from exercises-latex/12-python/loesung-matplotlibrc rename to exercises-latex/13-python/loesung-matplotlibrc diff --git a/exercises-latex/12-python/loesung.py b/exercises-latex/13-python/loesung.py similarity index 100% rename from exercises-latex/12-python/loesung.py rename to exercises-latex/13-python/loesung.py diff --git a/exercises-latex/12-python/loesung.tex b/exercises-latex/13-python/loesung.tex similarity index 100% rename from exercises-latex/12-python/loesung.tex rename to exercises-latex/13-python/loesung.tex diff --git a/exercises-latex/12-python/vorlage.py b/exercises-latex/13-python/vorlage.py similarity index 100% rename from exercises-latex/12-python/vorlage.py rename to exercises-latex/13-python/vorlage.py diff --git a/exercises-latex/13-tikz/Makefile-loesung b/exercises-latex/14-tikz/Makefile-loesung similarity index 100% rename from exercises-latex/13-tikz/Makefile-loesung rename to exercises-latex/14-tikz/Makefile-loesung diff --git a/exercises-latex/13-tikz/aufgabe.txt b/exercises-latex/14-tikz/aufgabe.txt similarity index 63% rename from exercises-latex/13-tikz/aufgabe.txt rename to exercises-latex/14-tikz/aufgabe.txt index a8232922..8bb0dfc8 100644 --- a/exercises-latex/13-tikz/aufgabe.txt +++ b/exercises-latex/14-tikz/aufgabe.txt @@ -6,11 +6,11 @@ Tipps: ## Aufgabe 1 -Malt das Haus vom Nikolaus ohne „den Stift abzusetzen“. +Male das Haus vom Nikolaus ohne „den Stift abzusetzen“. ## Aufgabe 2 -Erstellt DIN A4 Millimeter Papier (1cm Rand) -Ihr solltet unterschiedliche Markierungen für 10 mm, 5 mm und 1 mm +Erstelle DIN A4 Millimeter Papier (1cm Rand) +Setze unterschiedliche Markierungen für 10 mm, 5 mm und 1 mm. Tipps: * das Paket `geometry` und seine `margin` option @@ -19,8 +19,8 @@ Tipps: ## Aufgabe 3 -Guckt auch die Doku von `circuitikz` an, -und baut den Schaltplan für einen gedämpften Schwingkreis +Schaue dir auch die Doku von `circuitikz` an, +und baue den Schaltplan für einen gedämpften Schwingkreis mit C = 1 µF R = 50 Ω @@ -29,7 +29,7 @@ L = 1 H ## Aufgabe 4 -Stellt mithilfe von Tikz die Bragg-Bedingung dar. +Stelle mithilfe von Tikz die Bragg-Bedingung dar. ## Aufgabe 5 diff --git a/exercises-latex/13-tikz/loesung-bragg.tex b/exercises-latex/14-tikz/loesung-bragg.tex similarity index 100% rename from exercises-latex/13-tikz/loesung-bragg.tex rename to exercises-latex/14-tikz/loesung-bragg.tex diff --git a/exercises-latex/13-tikz/loesung-circuitikz.tex b/exercises-latex/14-tikz/loesung-circuitikz.tex similarity index 100% rename from exercises-latex/13-tikz/loesung-circuitikz.tex rename to exercises-latex/14-tikz/loesung-circuitikz.tex diff --git a/exercises-latex/13-tikz/loesung-mm-paper.tex b/exercises-latex/14-tikz/loesung-mm-paper.tex similarity index 100% rename from exercises-latex/13-tikz/loesung-mm-paper.tex rename to exercises-latex/14-tikz/loesung-mm-paper.tex diff --git a/exercises-latex/13-tikz/loesung-nikolaus.tex b/exercises-latex/14-tikz/loesung-nikolaus.tex similarity index 100% rename from exercises-latex/13-tikz/loesung-nikolaus.tex rename to exercises-latex/14-tikz/loesung-nikolaus.tex diff --git a/exercises-latex/13-tikz/loesung-pythagoras.tex b/exercises-latex/14-tikz/loesung-pythagoras.tex similarity index 100% rename from exercises-latex/13-tikz/loesung-pythagoras.tex rename to exercises-latex/14-tikz/loesung-pythagoras.tex diff --git a/exercises-latex/15-beamer/Makefile-loesung b/exercises-latex/15-beamer/Makefile-loesung new file mode 100644 index 00000000..916c43cc --- /dev/null +++ b/exercises-latex/15-beamer/Makefile-loesung @@ -0,0 +1,11 @@ +all: build/loesung.pdf + +build/loesung.pdf: loesung.tex | build + lualatex --output-directory=build --interaction=batchmode --halt-on-error loesung.tex + lualatex --output-directory=build --interaction=batchmode --halt-on-error loesung.tex + +build: + mkdir -p build + +clean: + rm -rf build diff --git a/exercises-latex/14-beamer/aufgabe.txt b/exercises-latex/15-beamer/aufgabe.txt similarity index 53% rename from exercises-latex/14-beamer/aufgabe.txt rename to exercises-latex/15-beamer/aufgabe.txt index c0f4021a..e4ee8620 100644 --- a/exercises-latex/14-beamer/aufgabe.txt +++ b/exercises-latex/15-beamer/aufgabe.txt @@ -1,12 +1,12 @@ Aufgabe 1: -Erstellt eine Präsentation mit: -* Titelseite mit Autor, Titel, Datum +Erstelle eine Präsentation mit: +* Titelseite inkl. Autor, Titel, Datum * Übersicht („Inhaltsverzeichnis“) * Folie mit einer Erklärung für einen Plot, Erklärung und Plot sollten nebeneinander stehen. * Folie mit je einer Box für die vier Maxwell-Gleichungen Aufgabe 2: -* Nutzt eines der in TeXLive enthaltenen Beamer-Themes. -* Schaltet die Navigationssymbole aus -* Ändert das Farbthema +* Nutzw eines der in TeXLive enthaltenen Beamer-Themes. +* Schalte die Navigationssymbole aus +* Ändere das Farbthema diff --git a/exercises-latex/14-beamer/loesung.tex b/exercises-latex/15-beamer/loesung.tex similarity index 100% rename from exercises-latex/14-beamer/loesung.tex rename to exercises-latex/15-beamer/loesung.tex diff --git a/exercises-latex/Makefile b/exercises-latex/Makefile index d247c80c..09f68b44 100644 --- a/exercises-latex/Makefile +++ b/exercises-latex/Makefile @@ -13,7 +13,7 @@ all: $(BUILDS) @cp -r 01-helloworld 02-input 03-lists 04-titlepage 05-structure build/exercises-latex-1 @cp -r 06-math 07-siunitx build/exercises-latex-2 @cp -r 08-figures 09-tables 10-references 11-biblatex build/exercises-latex-3 - @cp -r 12-python 13-tikz 14-beamer build/exercises-latex-5 + @cp -r 12-longtable 13-python 14-tikz 15-beamer build/exercises-latex-5 @rm -rf build/exercises-latex-{1,2,3,5}/*/{,*/}{Makefile,.gitignore,__pycache__} @cd build ; \ for day in 1 2 3 5; do \ diff --git a/exercises-toolbox/1-python/2-average/aufgabe.txt b/exercises-toolbox/1-python/2-average/aufgabe.txt index b022df17..c3535df7 100644 --- a/exercises-toolbox/1-python/2-average/aufgabe.txt +++ b/exercises-toolbox/1-python/2-average/aufgabe.txt @@ -1,6 +1,6 @@ # Average -Aufgabe: +Aufgabe: In der beiliegenden Python-Datei `average.py` ist eine Liste mit Zahlen vorbereitet. Berechne ihren arithmetischen Mittelwert und gib ihn aus. diff --git a/exercises-toolbox/1-python/5-readwrite/aufgabe.txt b/exercises-toolbox/1-python/5-readwrite/aufgabe.txt index 772de3c8..14de214b 100644 --- a/exercises-toolbox/1-python/5-readwrite/aufgabe.txt +++ b/exercises-toolbox/1-python/5-readwrite/aufgabe.txt @@ -11,6 +11,8 @@ Schlage außerdem nach, wie man Text aus einer Datei ausliest oder in eine Datei Tipp: Suche nach Informationen zur Funktion "open()". +Aufgabe: + 1. Lesen Schreibe ein Python-Skript, welches den Inhalt der Datei "test.txt" ausgibt. Teste dein Skript mit einer Beispieldatei. diff --git a/exercises-toolbox/1-python/7-fstrings/aufgabe.txt b/exercises-toolbox/1-python/7-fstrings/aufgabe.txt index aaca97d2..983a6517 100644 --- a/exercises-toolbox/1-python/7-fstrings/aufgabe.txt +++ b/exercises-toolbox/1-python/7-fstrings/aufgabe.txt @@ -5,12 +5,12 @@ In dieser befinden sich der Titel eines Versuchs, das Datum an dem der Versuch durchgeführt wurde und zwei Listen mit Messwerten. Ziel ist es zunächst die Ausgabe einer Überschrift mit dem -Versuchstitel und dem Datum zu erzeugen. +Versuchstitel und dem Datum zu erzeugen: -Versuch: Wiegen von Metallen durchgeführt am 24.09.2018 + Versuch: Wiegen von Metallen durchgeführt am 24.09.2018 Alternative Ausgabe mit Anführungszeichen als kleine Steigerung: -Versuch: 'Wiegen von Metallen' durchgeführt am 24.09.2018 + Versuch: 'Wiegen von Metallen' durchgeführt am 24.09.2018 Natürlich kann man hier einfach den Text kopieren und ausgeben, Ziel ist es aber die Variablen `title` und `date` zu verwenden. @@ -32,15 +32,15 @@ a b c 2. Aufgabe: Vor allem mit vielen Variablen werden die print() Argumente oft lang und unverständlich. -Extras wie Anführungszeichen sind eine zusätzlichen Komplikation. +Extras wie Anführungszeichen sind eine zusätzliche Komplikation. Daher bietet Python mehrere Möglichkeiten zur String-Formatierung an. String-Formatierung bedeutet, dass man in einem einzelnen String vorgibt, wo und wie die Werte von Variablen eingesetzt werden sollen. Man gibt also die Formatierung der Ausgabe vor. Die neuste Möglichkeit zur String-Formatierung sind sogenannte f-strings. -Ersetze die vorherigen Argumente der Funktion print() durch einen f-string der die selbe Ausgabe -erzeugt. Ein leerer f-string mit `""` ist bereits eingetragen, Änderungen müssen nur -zwischen den Anführungszeichen eingetragen werden. +Ersetze die vorherigen Argumente der Funktion print() durch einen f-string, der dieselbe Ausgabe +erzeugt. Ein leerer f-string ist bereits in fstrings.py eingetragen, Änderungen müssen nur zwischen den +Anführungszeichen eingetragen werden. Tipp: Variablen werden in f-strings automatisch durch ihren Wert ersetzt, wenn man diese in geschweifte @@ -73,5 +73,5 @@ Ausgabe: 123.45679 Zu beachten ist, dass hier beim Runden nur die vierte Nachkommastelle verwendet -wird, um zu entscheiden ob aufgerundet wird. Wenn man die 8 mit einer 4 -ersetzt, wird die 8 in der fünften Nachkommastelle nicht aufgerundet. +wird, um zu entscheiden, ob aufgerundet wird. Wenn man die 8 mit einer 4 +ersetzt, wird die 8 in der fünften Nachkommastelle nicht aufgerundet. \ No newline at end of file diff --git a/exercises-toolbox/2-numpy/1-arrays/aufgabe.txt b/exercises-toolbox/2-numpy/1-arrays/aufgabe.txt index de08320b..ce0aed0b 100644 --- a/exercises-toolbox/2-numpy/1-arrays/aufgabe.txt +++ b/exercises-toolbox/2-numpy/1-arrays/aufgabe.txt @@ -1,6 +1,8 @@ -Aufgabe: Arrays +# Arrays -Ziel der Übung ist es sich mit Numpy-Arrays vertraut zu machen. +Aufgabe: + +Ziel der Übung ist es, sich mit Numpy-Arrays vertraut zu machen. Die Ausgaben aufs Terminal müssen nicht genau so aussehen wie die, die durch die Datei 'loesung.py' erzeugt werden, es ist hauptsächlich wichtig, dass die Arrays die geforderte Gestalt haben. @@ -13,20 +15,20 @@ es ist hauptsächlich wichtig, dass die Arrays die geforderte Gestalt haben. d) Erzeuge ein Array mit den ersten 8 Primzahlen. e) Erzeuge ein Array mit den ganzen Zahlen von 0 bis 9. f) Erzeuge ein Array mit geraden ganzen Zahlen von 0 bis 18. - g) Erzeuge ein Array mit elf Zahlen von 0 bis 5 im gleichen Abstand von einander. (Hierfür gibt es zwei Möglichkeiten.) + g) Erzeuge ein Array mit elf Zahlen von 0 bis 5 im gleichen Abstand voneinander. (Hierfür gibt es zwei Möglichkeiten.) h) Erzeuge ein Array mit der Dimension 3x3 mit allen Einträgen gleich 3. 2) Lass dir nun zusätzlich zu den Arrays auch ihre Länge ('length') und ihre Form ('shape') auf das Terminal ausgeben. -3) Versuche nun verschiedene dieser Arrays zu addieren. +3) Versuche verschiedene dieser Arrays zu addieren. Welche der Arrays von oben lassen sich addieren? Welche nicht? Warum? -4) Mache nun aus Array b) ein 2D Array mit einem Eintrag in jeder Spalte, indem du die 'reshape' Methode verwendest. +4) Mache jetzt aus Array b) ein 2D Array mit einem Eintrag in jeder Spalte, indem du die 'reshape' Methode verwendest. Mache aus dem Array c) ein 2D Array mit einem Eintrag in jeder Zeile, indem du die 'reshape' Methode verwendest. Gib die Ergebnisse auf das Terminal aus. (Informationen zu reshape: https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html) 5*) Zusatzaufgabe: - Addiere nun die neuen Arrays b) und c) aus Aufgabe 4). Und schaue dir das Ergebnis an. + Addiere die neuen Arrays b) und c) aus Aufgabe 4). Und schaue dir das Ergebnis an. Was ist hier passiert? diff --git a/exercises-toolbox/2-numpy/1-arrays/loesung.py b/exercises-toolbox/2-numpy/1-arrays/loesung.py index 773ac848..2c959c42 100644 --- a/exercises-toolbox/2-numpy/1-arrays/loesung.py +++ b/exercises-toolbox/2-numpy/1-arrays/loesung.py @@ -52,7 +52,7 @@ # Aufgabe 5) -# Das was hier passiert nennt sich 'numpy-broadcasting' und ist eine sehr 'mächtiges' feature von numpy arrays. +# Das, was hier passiert nennt sich 'numpy-broadcasting' und ist eine sehr 'mächtiges' feature von numpy arrays. # Es ist nicht notwendig dieses Feature von Anfang an zu verstehen, es erweist sich nur irgendwann als # sehr nützlich. # Details findest du in der Dokumentation: https://numpy.org/doc/stable/user/basics.broadcasting.html diff --git a/exercises-toolbox/2-numpy/2-indexing/aufgabe.txt b/exercises-toolbox/2-numpy/2-indexing/aufgabe.txt index db83987c..3ada5493 100644 --- a/exercises-toolbox/2-numpy/2-indexing/aufgabe.txt +++ b/exercises-toolbox/2-numpy/2-indexing/aufgabe.txt @@ -1,7 +1,9 @@ +# Indexing + In der Pythondatei vorlage.py ist ein 10x10 Numpy-Array definiert. Dieses behandeln -wir wie das Spielfeld im Spiel Schiffeversenken. Die Schiffe sind in diesem Fall die waagerechten, +wir wie das Spielfeld im Spiel Schiffe versenken. Die Schiffe sind in diesem Fall die waagerechten, bzw. senkrechten Gruppen von Zahlen großer als Null (die Nullen -stehen für das Wasser). Die Zahlen die die Schiffe bilden stehen dabei für die Länge der Schiffe. +stehen für das Wasser). Die Zahlen, die die Schiffe bilden, stehen dabei für die Länge der Schiffe. Es gibt folgende Schiffe: 6 1er-Schiffe @@ -16,11 +18,12 @@ Schritt für Schritt der Fortschritt überprüft werden. Durch Ausführen der Datei wird das Spielfeld auf das Terminal ausgegeben, zusätzlich wird auch noch ein Bild erzeugt, um einen besseren Überblick zu bekommen. +Aufgaben: 1) Für 2er-, 3er-, 4er- und 5er-Schiffe: - Versuche mit Hilfe von Array Indexing und Slicing, jeweils ein Schiff aufeinmal zu treffen, + Versuche, mithilfe von Array Indexing und Slicing, jeweils ein Schiff auf einmal zu treffen, in dem die entsprechenden Elemente auf -1 setzt. 2) Für 1er-Schiffe: - Versuche alle 1er-Schiffe aufeinmal zu treffen. + Versuche alle 1er-Schiffe auf einmal zu treffen. diff --git a/exercises-toolbox/2-numpy/2-indexing/loesung.py b/exercises-toolbox/2-numpy/2-indexing/loesung.py index 6265719b..a4de4de9 100644 --- a/exercises-toolbox/2-numpy/2-indexing/loesung.py +++ b/exercises-toolbox/2-numpy/2-indexing/loesung.py @@ -24,7 +24,7 @@ fig, ax = plt.subplots(1, 1, layout="constrained") mat = ax.matshow(field, cmap="Set1", vmax=5, vmin=-1) -fig.savefig("Spielfeld_Beginn.pdf") +fig.savefig("Spielfeld_Loesung_Beginn.pdf") # Lösung für Aufgabe 1: @@ -56,4 +56,4 @@ print(field) mat.set_array(field) -fig.savefig("Spielfeld_Ende.pdf") +fig.savefig("Spielfeld_Loesung_Ende.pdf") diff --git a/exercises-toolbox/2-numpy/2-indexing/vorlage.py b/exercises-toolbox/2-numpy/2-indexing/vorlage.py index 4f99350b..e83df2f7 100644 --- a/exercises-toolbox/2-numpy/2-indexing/vorlage.py +++ b/exercises-toolbox/2-numpy/2-indexing/vorlage.py @@ -23,7 +23,7 @@ print(field) # Was das hier ist lernen wir noch, kann getrost ignoriert werden. -# In der Zwischenzeit, die Kurzfassung: Das 'macht' die Bilder. ;-) +# In der Zwischenzeit die Kurzfassung: Das 'macht' die Bilder. fig, ax = plt.subplots(1, 1, layout="constrained") mat = ax.matshow(field, cmap="Set1", vmax=5, vmin=-1) fig.savefig("Spielfeld_Beginn.pdf") @@ -38,6 +38,6 @@ print(field) # Was das hier ist lernen wir noch, kann getrost ignoriert werden. -# In der Zwischenzeit, die Kurzfassung: Das 'macht' die Bilder. ;-) +# In der Zwischenzeit die Kurzfassung: Das 'macht' die Bilder. mat.set_array(field) fig.savefig("Spielfeld_Ende.pdf") diff --git a/exercises-toolbox/2-numpy/3-filter/aufgabe.txt b/exercises-toolbox/2-numpy/3-filter/aufgabe.txt index 2e1d5200..167b1325 100644 --- a/exercises-toolbox/2-numpy/3-filter/aufgabe.txt +++ b/exercises-toolbox/2-numpy/3-filter/aufgabe.txt @@ -1,4 +1,6 @@ -Aufgabe: Filter +# Filter + +Aufgabe: In der Datei "data.txt" befinden sich Datenpunkte (genannt x und y). diff --git a/exercises-toolbox/2-numpy/4-gauss/aufgabe.txt b/exercises-toolbox/2-numpy/4-gauss/aufgabe.txt index 8c6264be..6a142caa 100644 --- a/exercises-toolbox/2-numpy/4-gauss/aufgabe.txt +++ b/exercises-toolbox/2-numpy/4-gauss/aufgabe.txt @@ -1,4 +1,6 @@ -Aufgabe: gauss +# gauss + +Aufgabe: Erstelle 1000 gaußverteilte Werte mit Mittelwert 1 und Standardabweichung 2. Berechne die Summe aller Werte und gib sie aus. diff --git a/exercises-toolbox/2-numpy/5-functions/aufgabe.txt b/exercises-toolbox/2-numpy/5-functions/aufgabe.txt index 48d74fa4..56456158 100644 --- a/exercises-toolbox/2-numpy/5-functions/aufgabe.txt +++ b/exercises-toolbox/2-numpy/5-functions/aufgabe.txt @@ -1,5 +1,7 @@ +# functions + In dieser Aufgabe machen wir uns mit Funktionen vertraut, -die man auf Numpy arrays anwenden kann. Im einzelnen sind dies: +die man auf Numpy arrays anwenden kann. Im Einzelnen sind dies: np.sum np.diff @@ -12,11 +14,11 @@ np.max Ganz wichtig: KEINE PANIK! Diese Aufgabe und auch die zugehörige Lösung sind etwas lang. Das sollte dich aber nicht abschrecken. Diese Aufgabe ist nicht schwer, man hat nur 'viel' zu tippen. -Es geht hier nicht darum, die Lösung 1 zu 1 nach zu arbeiten, +Es geht hier nicht darum, die Lösung 1 zu 1 nachzuarbeiten, es geht nur darum, ein Gefühl dafür zu bekommen, wie die numpy Funktionen in unterschiedlichen Dimensionen funktionieren. Es reicht also auch vollkommen, die ganze Aufgabe nur mit einer (z.B. nur np.sum) der obigen Funktionen durchzuarbeiten, wenn du das Gefühl hast verstanden -zu haben wie das ganze funktioniert. +zu haben, wie das ganze funktioniert. 1) Was geben diese Funktionen zurück, wenn sie auf das Array @@ -24,14 +26,14 @@ zu haben wie das ganze funktioniert. 2) Was geben diese Funktionen zurück, wenn sie auf das Array B = np.array([[2, 1, 2, 1, 2], [1, 2, 1, 2, 1], [3, 1, 3, 1, 3]]) - angewendet werden. Bei mehrdimensionalen Arrays gibt es unteranderem + angewendet werden. Bei mehrdimensionalen Arrays gibt es unter anderem ein weiteres Argument für die obigen Funktionen. Dieses keywordargument heißt 'axis' und kann bei 2D Arrays wie folgt verwendet werden: np.sum(B, axis=0) np.sum(B, axis=1) np.sum(B, axis=(0, 1)) - Man kann das keywordargument aber auch weiterhin weg lassen. + Man kann das keywordargument aber auch weiterhin weglassen. Probiere alle vier Möglichkeiten mit allen obigen Funktionen aus. (Hinweis: Die Funktion np.diff funktioniert etwas anders als die anderen Funktionen. Zum Beispiel funktioniert 'axis=(0, 1)' für diese Funktion nicht.) @@ -49,7 +51,7 @@ zu haben wie das ganze funktioniert. Was war die höchste (niedrigste) Einzelausgabe an jedem Tag. d) Es gibt noch ein keywordargument für die meisten dieser Funktionen 'keepdims'. - Für dieses gibt es nur zwei mögliche Wert. + Für dieses gibt es nur zwei mögliche Werte. np.sum(B, axis=1, keepdims=False) -> Das hier ist der Standardwert und muss nicht extra ausprobiert werden. np.sum(B, axis=1, keepdims=True) Probiere dieses keywordargument nach Belieben an einigen der bereits berechneten diff --git a/exercises-toolbox/2-numpy/5-functions/loesung.py b/exercises-toolbox/2-numpy/5-functions/loesung.py index 33bc970a..b3bec5f6 100644 --- a/exercises-toolbox/2-numpy/5-functions/loesung.py +++ b/exercises-toolbox/2-numpy/5-functions/loesung.py @@ -3,8 +3,8 @@ # Ganz wichtig: KEINE PANIK! # Diese Lösung ist etwas lang, das sollte dich aber nicht abschrecken, die meisten Zeilen -# sind print-Funktionen. Es geht hier nicht darum, die Lösung 1 zu 1 nach zu arbeiten, -# es geht nur darum, ein Gefühl dafür zu bekommen, wie die numpy Funktionen in unterschiedlichen +# sind print-Funktionen. Es geht hier nicht darum, die Lösung 1 zu 1 nachzuarbeiten, +# sondern darum, ein Gefühl dafür zu bekommen, wie die numpy Funktionen in unterschiedlichen # Dimensionen funktionieren. import numpy as np diff --git a/exercises-toolbox/3-matplotlib/aufgaben_1--5.txt b/exercises-toolbox/3-matplotlib/aufgaben_1--5.txt index 25cacd5d..eaf0229c 100644 --- a/exercises-toolbox/3-matplotlib/aufgaben_1--5.txt +++ b/exercises-toolbox/3-matplotlib/aufgaben_1--5.txt @@ -1,8 +1,8 @@ In den Ordnern 1 bis 5 liegen Plots als PDF-Dateien. Aufgabe: -Schreibt in jedem Ordner ein Skript, das den entsprechenden Plot erzeugt. -In der Datei 'loesung.py' liegt die Musterlösung. +Schreibe in jedem Ordner ein Skript, welches den entsprechenden Plot erzeugt. +In der Datei 'loesung.py' liegt jeweils die Musterlösung. Manchmal befinden sich .txt-Dateien im Ordner. Diese enthalten entweder -die x- und y-Koordinaten als Spalten, oder die Koordinaten jeweils mit ihren Fehlern. +die x- und y-Koordinaten als Spalten, oder die Koordinaten mit jeweils ihren Fehlern. diff --git a/exercises-toolbox/3-matplotlib/aufgaben_6--7.txt b/exercises-toolbox/3-matplotlib/aufgaben_6--7.txt index e99405d7..00f85140 100644 --- a/exercises-toolbox/3-matplotlib/aufgaben_6--7.txt +++ b/exercises-toolbox/3-matplotlib/aufgaben_6--7.txt @@ -1,4 +1,4 @@ -6. Verwendet eine for-Schleife, um die Funktion x^n für n von 1 bis 10 im Bereich (x) von 0 bis 1 zu plotten. -Gebt dabei jedem Plot ein Label, das n anzeigt. +6. Verwende eine for-Schleife, um die Funktion x^n für n von 1 bis 10 im Bereich (x) von 0 bis 1 zu plotten. +Gib dabei jedem Plot ein Label, das n anzeigt. -7. Plottet die Funktion A * cos(x) für A = -1, -.5, .5, 1 in dasselbe Koordinatensystem und denkt an Labels. +7. Plotte die Funktion A * cos(x) für A = -1, -.5, .5, 1 in dasselbe Koordinatensystem und denke an die Labels. diff --git a/exercises-toolbox/4-scipy/1-constants/aufgabe.txt b/exercises-toolbox/4-scipy/1-constants/aufgabe.txt index 7489d7e9..cfbbc826 100644 --- a/exercises-toolbox/4-scipy/1-constants/aufgabe.txt +++ b/exercises-toolbox/4-scipy/1-constants/aufgabe.txt @@ -1,4 +1,6 @@ -Aufgabe: constants +# constants + +Aufgabe: Scipy enthält die CODATA2010-Datenbank mit physikalischen Konstanten. Das Modul scipy.constants enthält die Funktion 'find()', die es einem diff --git a/exercises-toolbox/4-scipy/2-linregress/aufgabe.txt b/exercises-toolbox/4-scipy/2-linregress/aufgabe.txt index 107ffbc2..46c1f6cc 100644 --- a/exercises-toolbox/4-scipy/2-linregress/aufgabe.txt +++ b/exercises-toolbox/4-scipy/2-linregress/aufgabe.txt @@ -1,3 +1,7 @@ +# linregress + +Aufgabe: + Schreibe eine Funktion linregress, die eine lineare Regression auf gegebene Datenpunkte anwendet. Die lineare Regression ist ein analytischer Fit der Daten an die Funktion y = A * x + B. diff --git a/exercises-toolbox/4-scipy/3-curve_fit/aufgabe.txt b/exercises-toolbox/4-scipy/3-curve_fit/aufgabe.txt index 9ae28961..6eadfcb5 100644 --- a/exercises-toolbox/4-scipy/3-curve_fit/aufgabe.txt +++ b/exercises-toolbox/4-scipy/3-curve_fit/aufgabe.txt @@ -1,3 +1,7 @@ +# curve_fit + +Aufgabe: + Führe einmal `python loesung.py` aus, um die daten zu erzeugen. Fitte die Daten aus daten.txt (x, y, y_err) mit der Funktion f(x) = a * sin(b * x + c) + d. diff --git a/exercises-toolbox/4-scipy/4-peakdetect/aufgabe.txt b/exercises-toolbox/4-scipy/4-peakdetect/aufgabe.txt index c203ab73..ffbd7d1b 100644 --- a/exercises-toolbox/4-scipy/4-peakdetect/aufgabe.txt +++ b/exercises-toolbox/4-scipy/4-peakdetect/aufgabe.txt @@ -1,4 +1,8 @@ +# peakdetect Entnommen aus Versuch 354. + +Aufgabe: + Ziel ist es, Exponentialfunktionen an die Maxima und Minima der abklingenden Schwingung zu fitten. Dabei sollte die Funktion @@ -11,7 +15,7 @@ Dazu gibt es in scipy.signal die Funktion find_peaks(y, prominence, distance, ...) Dabei ist y ein Array von Werten, in denen Peaks gefunden werden sollen. -Die Funktion bekommt weitere Optionen, um die Ergebnisse einzuschränken. +Die Funktion bekommt weitere Optionen um die Ergebnisse einzuschränken. Wichtig sind zum Beispiel `prominence` und `distance`. Frage: diff --git a/exercises-toolbox/4-scipy/5-beugung/aufgabe.txt b/exercises-toolbox/4-scipy/5-beugung/aufgabe.txt index 92f51b17..4fb533b5 100644 --- a/exercises-toolbox/4-scipy/5-beugung/aufgabe.txt +++ b/exercises-toolbox/4-scipy/5-beugung/aufgabe.txt @@ -1,3 +1,5 @@ +# beugung + In dieser Aufgabe wird die Beugung an einem Einzelspalt untersucht (Versuch 406). Ziel ist es, die Breite b des Spaltes aus den Messwerten zu bestimmen. diff --git a/exercises-toolbox/5-uncertainties/1-formel/aufgabe.txt b/exercises-toolbox/5-uncertainties/1-formel/aufgabe.txt index 9775b456..6ca36ed5 100644 --- a/exercises-toolbox/5-uncertainties/1-formel/aufgabe.txt +++ b/exercises-toolbox/5-uncertainties/1-formel/aufgabe.txt @@ -1,3 +1,5 @@ +# fehlerfortpflanzung + Aufgabe: Es sind einige fehlerbehaftete Messwerte gegeben: diff --git a/exercises-toolbox/5-uncertainties/2-linregress/aufgabe.txt b/exercises-toolbox/5-uncertainties/2-linregress/aufgabe.txt index 2caafc6a..346381db 100644 --- a/exercises-toolbox/5-uncertainties/2-linregress/aufgabe.txt +++ b/exercises-toolbox/5-uncertainties/2-linregress/aufgabe.txt @@ -1,4 +1,9 @@ -Schreibe einen Wrapper für linregress (siehe 4-scipy/2-linregress), der die Ausgabe durch Verwendung von uncertainties vereinfacht. +# linregress + +Aufgabe: + +Schreibe einen Wrapper für linregress (siehe 4-scipy/2-linregress), +der die Ausgabe durch Verwendung von uncertainties vereinfacht. Dabei sollte ein Array aus A und B zurückgegeben werden, wobei A und B ufloats sind. diff --git a/exercises-toolbox/5-uncertainties/3-curve_fit/aufgabe.txt b/exercises-toolbox/5-uncertainties/3-curve_fit/aufgabe.txt index 09ebed48..de8da97c 100644 --- a/exercises-toolbox/5-uncertainties/3-curve_fit/aufgabe.txt +++ b/exercises-toolbox/5-uncertainties/3-curve_fit/aufgabe.txt @@ -1,4 +1,9 @@ -Schreibe einen Wrapper für scipy.optimize.curve_fit, der die Ein- und Ausgabe mittels uncertainties vereinfacht. +# ucurve_fit + +Aufgabe: + +Schreibe einen Wrapper für scipy.optimize.curve_fit, +der die Ein- und Ausgabe mittels uncertainties vereinfacht. Die Funktion sollte es erlauben, fehlerbehaftete y-Werte einzugeben. Diese Fehler können im Fit berücksichtigt werden, in dem sie als Keyword-Argument sigma an curve_fit übergeben werden. diff --git a/exercises-toolbox/5-uncertainties/4-linleastsquares/Makefile b/exercises-toolbox/5-uncertainties/4-linleastsquares/Makefile index 79bcba24..f48c449f 100755 --- a/exercises-toolbox/5-uncertainties/4-linleastsquares/Makefile +++ b/exercises-toolbox/5-uncertainties/4-linleastsquares/Makefile @@ -10,4 +10,7 @@ linleastsquares.pdf: linleastsquares.tex mv build/linleastsquares.pdf . rm -r build -.PHONY: all +clean: + rm -rf linleastsquares.pdf loesung.pdf daten.txt + +.PHONY: all clean diff --git a/exercises-toolbox/5-uncertainties/4-linleastsquares/linleastsquares.tex b/exercises-toolbox/5-uncertainties/4-linleastsquares/linleastsquares.tex index 1dbb2f6b..a67ba179 100644 --- a/exercises-toolbox/5-uncertainties/4-linleastsquares/linleastsquares.tex +++ b/exercises-toolbox/5-uncertainties/4-linleastsquares/linleastsquares.tex @@ -50,13 +50,13 @@ \subsection*{Bestimmung der Parameter} \end{equation} der die $y$-Koordinaten unserer Messwerte enthält. \item Die Kovarianzmatrix der Messwerte sei $\symbf{W}$ und $\symbf{Z} = \symbf{W}^{-1}$. - \item der Parametervektor $\vec{a}$ ergibt sich dann zu: + \item Der Parametervektor $\vec{a}$ ergibt sich dann zu: \begin{equation} - \vec{a} = \left(\symbf{A}^\top \symbf{Z} \symbf{A}\right)^{-1} \cdot \symbf{A}^\top \symbf{Z} \cdot \vec{y} + \vec{a} = \left(\symbf{A}^\top \symbf{Z} \symbf{A}\right)^{-1} \cdot \symbf{A}^\top \symbf{Z} \cdot \vec{y} \ . \end{equation} \item Die Kovarianzmatrix ergibt sich zu: \begin{equation} - \symbf{V} = \left(\symbf{A}^\top \symbf{Z} \symbf{A}\right)^{-1} + \symbf{V} = \left(\symbf{A}^\top \symbf{Z} \symbf{A}\right)^{-1} \ . \end{equation} \end{enumerate} Wer sich für die Herleitung interessiert: Blobel-Lohrmann: \enquote{Statistische und numerische Methoden der Datenanalyse} bzw. SMD-Vorlesung. @@ -65,9 +65,9 @@ \subsection*{Bestimmung der Parameter} \subsection*{Aufgaben} \begin{enumerate} - \item Implementiert eine Funktion, die eine Liste von Funktionen und die $x$- und $y$-Werte übergeben bekommt und die lineare Methode der kleinsten Quadrate anwendet. + \item Implementiere eine Funktion, die eine Liste von Funktionen und die $x$- und $y$-Werte übergeben bekommt und die lineare Methode der kleinsten Quadrate anwendet. Die Funktion soll den Parametervektor als Array von korrelierten \texttt{ufloat}s zurückgeben. - \item Testet eure Funktion indem ihr einen Fit der Form + \item Teste deine Funktion indem du einen Fit der Form \begin{equation} \Psi(x) = a_1 \cos(x) + a_2 \sin(x) \end{equation} diff --git a/exercises-toolbox/6-make/aufgabe.txt b/exercises-toolbox/6-make/aufgabe.txt index 800ccd24..4993bdc8 100644 --- a/exercises-toolbox/6-make/aufgabe.txt +++ b/exercises-toolbox/6-make/aufgabe.txt @@ -1,5 +1,9 @@ +# make + +Aufgabe: + 1. Schreibe ein `Makefile`, das beim Aufruf von `make` die Dateien `plot.pdf` und `parameter.txt` erstellt. -Die Dateien sollten neu erstellt werden, falls eine der vorhandenen Abhängigkeiten (auswertung.py, L.txt, lambda.txt, I.txt) geändert wird. +Die Dateien sollen neu erstellt werden, falls eine der vorhandenen Abhängigkeiten (auswertung.py, L.txt, lambda.txt, I.txt) geändert wird. 2. Füge ein `clean`-Target hinzu, welches beim Aufruf von `make clean` den Ordner in den ursprünglichen Zustand vor der Ausführung von `make` versetzt. diff --git a/exercises-toolbox/7-git/aufgabe.txt b/exercises-toolbox/7-git/aufgabe.txt index 471ab3e5..a5197caf 100644 --- a/exercises-toolbox/7-git/aufgabe.txt +++ b/exercises-toolbox/7-git/aufgabe.txt @@ -1,3 +1,5 @@ +# git + Aufgabe 1: Lade mittels "git clone https://github.com/pep-dortmund/toolbox-workshop" die Materialien für diesen @@ -43,4 +45,4 @@ Wir werden es anstelle eines Repositories auf gitlab.com oder github.com verwend Teste, ob das reibungslos funktioniert. 11. Bonus: Versuche einen merge conflict herbeizuführen, indem du in beiden deiner Kopien dieselbe Zeile änderst - und 10. wiederhost. + und 10. wiederholst. diff --git a/exercises-toolbox/8-all/303_Der_Lock-In-Verstaerker/aufgabe.txt b/exercises-toolbox/8-all/303_Der_Lock-In-Verstaerker/aufgabe.txt index 2e6093b5..74c84fbb 100644 --- a/exercises-toolbox/8-all/303_Der_Lock-In-Verstaerker/aufgabe.txt +++ b/exercises-toolbox/8-all/303_Der_Lock-In-Verstaerker/aufgabe.txt @@ -1,7 +1,13 @@ +# Lock-In-Verstärker + +Aufgabe: + Ziel ist es, die Abstandsabhängigkeit der Intensität einer LED zu bestimmen. -U muss vor der Rechnung durch die Parameter PA, LI und LP geteilt werden; sie sind Verstärkungsfaktoren des Lock-In-Verstärkers. +U muss vor der Rechnung durch die Parameter PA, LI und LP geteilt werden; +sie sind Verstärkungsfaktoren des Lock-In-Verstärkers. -Nutze curve_fit oder das mitgelieferte ucurve_fit (aus 4-uncertainties/3-curve_fit), um folgende Funktion zu fitten: +Nutze curve_fit oder das mitgelieferte ucurve_fit (aus 4-uncertainties/3-curve_fit), +um folgende Funktion zu fitten: U = A + B / (r + C)² diff --git a/exercises-toolbox/8-all/354_Gedaempfte_und_erzwungene_Schwingungen/aufgabe.txt b/exercises-toolbox/8-all/354_Gedaempfte_und_erzwungene_Schwingungen/aufgabe.txt index 907599d7..7ef49ddf 100644 --- a/exercises-toolbox/8-all/354_Gedaempfte_und_erzwungene_Schwingungen/aufgabe.txt +++ b/exercises-toolbox/8-all/354_Gedaempfte_und_erzwungene_Schwingungen/aufgabe.txt @@ -1,5 +1,10 @@ +# Schwingungen + +Aufgabe: + Hier soll die Frequenzabhängigkeit der Impedanz eines RCL-Kreises untersucht werden. -Es werden Messwerte aus impedanz.txt mit Theoriekurven verglichen, die mit den Gerätedaten aus geraetedaten.txt berechnet werden. +Es werden Messwerte aus impedanz.txt mit Theoriekurven verglichen, +die mit den Gerätedaten aus geraetedaten.txt berechnet werden. Dabei gilt: arg(Z(ω)) = arctan(1 / R * (Lω - 1 / (Cω))) diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/I.txt b/exercises-toolbox/8-all/406_Beugung_am_Spalt/I.txt deleted file mode 100644 index 4395df1a..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/I.txt +++ /dev/null @@ -1,53 +0,0 @@ -# zeta I -# mm nA - 0 7 - 1 8 - 2 8.2 - 3 6.8 - 4 4.6 - 5 2.6 - 6 1.5 - 7 2.4 - 8 5 - 9 8.9 - 10 11 - 11 12.5 - 12 11.2 - 13 10.8 - 14 4.6 - 15 2.7 - 16 7.4 - 17 12.15 - 18 49 - 19 87 - 20 125 - 21 150 - 22 245 - 23 255 - 24 265 - 25 255 - 26 235 - 27 195 - 28 145 - 29 95 - 30 60 - 31 38 - 32 16 - 33 8.4 - 34 6.4 - 35 8.6 - 36 10.5 - 37 12.5 - 38 12.5 - 39 10.5 - 40 7.5 - 41 5.2 - 42 2.8 - 43 1.6 - 44 1.4 - 45 1.8 - 46 2.4 - 47 2.6 - 48 2.2 - 49 1.6 - 50 1 diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/L.txt b/exercises-toolbox/8-all/406_Beugung_am_Spalt/L.txt deleted file mode 100644 index ba83b064..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/L.txt +++ /dev/null @@ -1,3 +0,0 @@ -# L -# cm - 118 diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/Makefile-loesung b/exercises-toolbox/8-all/406_Beugung_am_Spalt/Makefile-loesung deleted file mode 100644 index 0c96d85c..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/Makefile-loesung +++ /dev/null @@ -1,2 +0,0 @@ -loesung.pdf: loesung.py I.txt L.txt lambda.txt - python loesung.py diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/aufgabe.txt b/exercises-toolbox/8-all/406_Beugung_am_Spalt/aufgabe.txt deleted file mode 100644 index 097d163e..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/aufgabe.txt +++ /dev/null @@ -1,17 +0,0 @@ -In dieser Aufgabe wird die Beugung an einem Einzelspalt untersucht (Versuch 406). - -Ziel ist es, die Breite b des Spaltes aus den Messwerten zu bestimmen. -Dabei gilt: - -ζ₀ = ζ wo I maximal ist -φ = (ζ - ζ₀) / L - -I(φ) = (A₀ * b * sinc(b * sin(φ) / λ))² - -sinc(x) = sin(x) / x, sinc(0) = 1, Achtung, nicht durch 0 teilen! - -Die Breite b des Spaltes ist in der Größenordnung von 1e-4 m (Tipp: Anfangswerte für den Fit). - -Nützliche Funktionen (Dokumentation googeln…) -numpy.sinc (teilt nicht durch 0…) -np.argmax (gibt Index des Maximums) diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/lambda.txt b/exercises-toolbox/8-all/406_Beugung_am_Spalt/lambda.txt deleted file mode 100644 index 7db97333..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/lambda.txt +++ /dev/null @@ -1,3 +0,0 @@ -# lambda -# nm - 633 diff --git a/exercises-toolbox/8-all/406_Beugung_am_Spalt/loesung.py b/exercises-toolbox/8-all/406_Beugung_am_Spalt/loesung.py deleted file mode 100644 index cdc19936..00000000 --- a/exercises-toolbox/8-all/406_Beugung_am_Spalt/loesung.py +++ /dev/null @@ -1,37 +0,0 @@ -import numpy as np -from scipy.optimize import curve_fit -import matplotlib.pyplot as plt -from uncertainties import correlated_values - - -def theory(phi, A0, b): - return (A0 * b * np.sinc(b * np.sin(phi) / lambda_)) ** 2 - - -L = np.genfromtxt("L.txt") -L *= 1e-2 -lambda_ = np.genfromtxt("lambda.txt") -lambda_ *= 1e-9 -zeta, I = np.genfromtxt("I.txt", unpack=True) -zeta *= 1e-3 -I *= 1e-9 - -zeta_0 = zeta[np.argmax(I)] -phi = (zeta - zeta_0) / L - -params, cov = curve_fit(theory, phi, I, p0=[np.sqrt(np.max(I)) / 1e-4, 1e-4]) - -A0, b = correlated_values(params, cov) - -print("A0 =", A0) -print("b =", b) - -x = np.linspace(-0.03, 0.03, 100) - -fig, ax = plt.subplots(1, 1, layout="constrained") -ax.plot(x, theory(x, *params), label="Fit") -ax.plot(phi, I, "x", label="Daten") -ax.set_xlabel(r"$\varphi \,\, / \,\, \mathrm{rad}$") -ax.set_ylabel(r"$I \,\, / \,\, \mathrm{A}$") -ax.legend(loc="best") -fig.savefig("loesung.pdf") diff --git a/exercises-toolbox/8-all/702_Aktivierung_mit_Neutronen/aufgabe.txt b/exercises-toolbox/8-all/702_Aktivierung_mit_Neutronen/aufgabe.txt index f5c62a94..4060f6a4 100644 --- a/exercises-toolbox/8-all/702_Aktivierung_mit_Neutronen/aufgabe.txt +++ b/exercises-toolbox/8-all/702_Aktivierung_mit_Neutronen/aufgabe.txt @@ -1,3 +1,7 @@ +# Neutronen + +Aufgabe: + Ziel ist es, die Zerfallskonstante λ von Indium zu bestimmen. Dazu wurde zuerst die Nullrate N_0 mit der Messzeit Δt_0 gemessen. Dann wurde die Rate N_g mit der Messzeit Δ_t wiederholt gemessen. @@ -8,7 +12,8 @@ N = N_g - N_0 / Δt_0 * Δt log(N) = A * t + B λ = -A -Erstelle einen halblogarithmischen Plot von N gegen t, der die Messpunkte mit Fehlerbalken und die Regressionsgerade beinhaltet. +Erstelle einen halblogarithmischen Plot von N gegen t, +der die Messpunkte mit Fehlerbalken und die Regressionsgerade beinhaltet. Benutze für die lineare Regression die Funktion ulinregress aus der mitgelieferten Datei linregress.py. Sie kann folgendermaßen eingebunden werden: diff --git a/python/matplotlib.ipynb b/python/matplotlib.ipynb index a3735a3a..ffeb6b2c 100644 --- a/python/matplotlib.ipynb +++ b/python/matplotlib.ipynb @@ -14,7 +14,7 @@ "metadata": {}, "source": [ "Um mit Matplotlib arbeiten zu können, muss die Bibliothek erst einmal importiert werden. \n", - "Damit wir nicht so viel tippen müssen geben wir ihr den kürzeren Namen `plt`." + "Damit wir nicht so viel tippen müssen, geben wir ihr den kürzeren Namen `plt`." ] }, { @@ -37,7 +37,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Außerdem brauchen wir der Einfachheit halber ein paar Funktion aus `numpy`, die euch schon bekannt sind." + "Außerdem brauchen wir der Einfachheit halber ein paar Funktionen aus `numpy`, die dir schon bekannt vorkommen sollten." ] }, { @@ -57,10 +57,10 @@ "metadata": {}, "source": [ "Zu erst ein einfaches Beispiel mit $f(x)=x^2$.\n", - "Um den Text-Output in diesem Notebook zu unterdrücken, schreiben wir ein `;` hinter die letzte Zeile.\n", + "Um den Text-Output in diesem Notebook zu unterdrücken, schreiben wir manchmal ein `;` hinter die letzte Zeile.\n", "\n", - "Im folgenden verwenden wir die objekt-orientierte Schreibweise von `matplotlib`, die mehr Möglichkeiten und Freiheiten bietet.\n", - "Diese ruft ihr mit" + "Im Folgenden verwenden wir die objekt-orientierte Schreibweise von `matplotlib`, die mehr Möglichkeiten und Freiheiten bietet.\n", + "Diese rufst du mit" ] }, { @@ -79,13 +79,13 @@ "metadata": {}, "source": [ "auf.\n", - "Ihr habt dann ein Objekt figure `fig` und ein Objekt axes `ax`, mit denen ihr interagieren und die Einstellungen im plot vornehmen könnt.\n", + "Du hast dann ein Objekt figure `fig` und ein Objekt axes `ax`, mit denen du interagieren und die Einstellungen im plot vornehmen kannst.\n", "\n", "Das Objekt `figure` ist dabei die gesamte Abbildung, auf der sich Axen, labels und Text befinden können.\n", "Die einzelnen `axes` Objekte sind die jeweiligen Koordinatensysteme, in die man die entsprechenden Daten plottet.\n", - "Dabei können auch Informationen über die Einheiten und Darstellung mit den Axen definiert werden.\n", + "Mit diesen können auch Informationen über die Einheiten und Darstellung mit den Achsen definiert werden.\n", "\n", - "Anderes Beispiel: $\\sin(t)$ mit verschiedenen Stilen. Vorsicht, die Funktionen und $\\pi$ sind Bestandteil von `numpy`" + "Anderes Beispiel: $\\sin(t)$ mit verschiedenen Stilen. Vorsicht, die Funktionen und $\\pi$ sind Bestandteil von `numpy`." ] }, { @@ -111,7 +111,7 @@ "outputs": [], "source": [ "fig2, ax2 = plt.subplots()\n", - "ax2.plot(t, np.sin(t), 'r--')" + "ax2.plot(t, np.sin(t), 'r--');" ] }, { @@ -143,9 +143,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Der Vorteil ist nun, dass ihr z.B. mehrere Objekte `fig` und `ax` parallel benutzen und nachträglich wieder auf das vorherige zugreifen könnt.\n", + "Der Vorteil ist nun, dass du z.B. mehrere Objekte `fig` und `ax` parallel benutzen und nachträglich wieder auf das vorherige zugreifen kannst.\n", "\n", - "Ihr könnt so auch im Nachhinein noch Dinge verändern und trotzdem die andere `figure` unverändert lassen." + "Du kannst so auch im Nachhinein noch Dinge verändern und trotzdem die andere `figure` unverändert lassen." ] }, { @@ -278,7 +278,7 @@ "metadata": {}, "source": [ "verwenden.\n", - "Dabei können alle notwendigen setting Optionen der `axes` dann gebündelt hingeschrieben werden, was in der Übersichtlichkeit helfen kann." + "Dabei können alle notwendigen Optionen der `axes` dann gebündelt hingeschrieben werden, was in der Übersichtlichkeit helfen kann." ] }, { @@ -304,7 +304,7 @@ "# ax.legend(loc=\"best\")\n", "fig\n", "\n", - "# fig.legend() # kann helfen, wenn man mehr als eine Achse hat und Platz für die Beschriftung an der Außenseite\n", + "# fig.legend() # kann helfen, wenn man mehr als eine Achse und Platz für die Beschriftung an der Außenseite hat\n", "# fig" ] }, @@ -325,10 +325,9 @@ "\n", "Mit `grid()` wird ein Gitter erstellt:\n", "\n", - "Hier wird auch der Vorteil der objekt-orientierten Schreibweise deutlich. Wir müssen keinen neuen plot erstellen, sondern können dem in `fig` hinterlegten neue Eigenschaften hinzufügen\n", + "Hier wird auch der Vorteil der objekt-orientierten Schreibweise deutlich. Wir müssen keinen neuen plot erstellen, sondern können dem in `fig` hinterlegten neue Eigenschaften hinzufügen.\n", "Andere möglche Orte für die Legende findest du hier:\n", - "\n", - "https://matplotlib.org/api/legend_api.html" + "https://matplotlib.org/api/legend_api.html." ] }, { @@ -340,11 +339,11 @@ "outputs": [], "source": [ "ax.grid()\n", - "# ax.grid(visible=None);\n", + "# ax.grid(visible=None)\n", "fig\n", "\n", - "# Achtung: Unterschied ax.grid() und ax.grid(True) bei mehrfachen ausführen.\n", - "# Nur in Notebooks relevant, da Zellen potentiell mehrfach ausgeführt werden\n", + "# Achtung: Unterschied ax.grid() und ax.grid(True) bei mehrfachem Ausführen.\n", + "# Nur in Notebooks relevant, da Zellen potentiell mehrfach ausgeführt werden.\n", "# Doku: If visible is None and there are no kwargs, this toggles the visibility of the lines." ] }, @@ -377,9 +376,9 @@ "metadata": {}, "source": [ "## Auslagern in ein Skript\n", - "Speichert den folgenden Code in eine Textdatei `plot.py` ab.\n", + "Speicher den folgenden Code in eine Textdatei `plot.py` ab.\n", "\n", - "Öffnet ein Terminal und startet das Programm:\n", + "Öffne ein Terminal und starte das `python`-script mit:\n", " \n", " python plot.py" ] @@ -410,10 +409,10 @@ "\n", "In diesem Fall sollte die Datei `plot.pdf` erstellt worden sein.\n", "\n", - "Es gibt viele Ausgabeformate: `pdf`, `png`, `svg`, LaTeX\n", - "\n", + "Es gibt viele Ausgabeformate: `pdf`, `png`, `svg`, LaTeX, ...\n", "\n", - "Um mehrere Plots zu speichern kann man `ax.cla()` verwenden. Der Befehl leert die aktuell aktiv genutzte `axes` und steht für `clear axis`.\n", + "Um mehrere Plots in einem script erstellen und speichern zu können, kann man `ax.cla()` verwenden.\n", + "Der Befehl leert die aktuell aktiv genutzte `axes`-Umgebung und steht für `clear axis`.\n", "\n", "Der Befehl `fig.clf()` leert die gesamte `figure` und man muss erst ein neues Objekt `ax` erstellen (z.B. mit `fig.add_subplots()`), bevor man wieder etwas plotten kann." ] @@ -442,7 +441,7 @@ "ax.cla()\n", "\n", "ax.plot(x, x**3, 'r-')\n", - "fig.savefig(\"plot_2.pdf\");" + "fig.savefig(\"plot_2.pdf\")" ] }, { @@ -470,13 +469,13 @@ "\n", "ax1.plot(x, x**2, 'b-',label='Plot 1')\n", "ax1.legend()\n", - "fig1.savefig(\"plot_1.pdf\");\n", + "fig1.savefig(\"plot_1.pdf\")\n", "\n", "### Plot 2\n", "fig2, ax2 = plt.subplots()\n", "\n", "ax2.plot(x, x**3, 'r-')\n", - "fig2.savefig(\"plot_2.pdf\");" + "fig2.savefig(\"plot_2.pdf\")" ] }, { @@ -503,7 +502,7 @@ "ax.plot(x, x**4)\n", "ax.plot(x, x**6, 'o', label=r'$x^6$')\n", "\n", - "ax.legend();\n", + "ax.legend()\n", "fig" ] }, @@ -513,6 +512,7 @@ "source": [ "Es werden nur die Plots in der Legende angezeigt, die ein Label haben.\n", "\n", + "### Mehrere Plots in einer Grafik\n", "Man kann auch mehrere Plots in ein Bild packen:" ] }, @@ -587,13 +587,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Plot im Plot:" + "### Plot im Plot:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { + "scrolled": false, "tags": [] }, "outputs": [], @@ -614,7 +615,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Plots mit Fehlerbalken\n", + "### Plots mit Fehlerbalken\n", "Sehr häufig werden im Praktikum Plots mit Fehlerbalken benötigt, hier erzeugen wir einfach zufällige Fehlerbalken:" ] }, @@ -637,7 +638,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Achsen-Skalierung\n", + "### Achsen-Skalierung\n", "Logarithmische (oder auch andere) Skalierung der Achsen ist auch möglich:" ] }, @@ -663,8 +664,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Polar-Plot\n", - "Manchmal braucht man einen Polarplot:" + "### Polar-Plot\n", + "Manchmal braucht man einfach einen Polarplot:" ] }, { @@ -768,9 +769,9 @@ "source": [ "# Nicht-Objektorientiertes Plotten\n", "Bis jetzt haben wir die ausführliche, objektorientierte Variante von matplotlib benutzt.\n", - "Es git auch die \"schnelle\" Variante mit der einfacherern `pyplot`-Syntax. Wenn man viele Plots anlegt, ist der objekt-orientierte Ansatz für matplotlib allerdings meist besser geeignet.\n", + "Es git auch die \"schnelle\" Variante mit der einfacheren `pyplot`-Syntax. Wenn man viele Plots anlegt, ist der objekt-orientierte Ansatz für matplotlib allerdings meist besser geeignet.\n", "\n", - "Die Schreibweise `plt.plot` haben wir einmal der Vollständig halber gezeigt und damit auf Stackoverflow oder ähnlichen Seiten keine Verwirrung entsteht.\n", + "Die Schreibweise `plt.plot` zeigen wir hier einmal der Vollständig halber und damit auf Stack Overflow oder ähnlichen Seiten keine Verwirrung entsteht.\n", "Es besteht eigentlich kein wirklicher Grund, diese Schreibweise aktiv zu nutzen." ] }, @@ -821,7 +822,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Weitere Beispiele zum 3dim Plotten findet ihr hier:\n", + "Weitere Beispiele zum 3dim Plotten findest du hier:\n", "\n", "https://matplotlib.org/stable/gallery/mplot3d/index.html" ] @@ -831,7 +832,7 @@ "metadata": {}, "source": [ "# LaTeX\n", - "Es ist auch möglich LaTeX für das Setzen aller Plot-Beschriftungen (d.h. Achsenbeschriftungen, Ticks, Legenden, usw.) zu verwenden. Seht Euch dazu die \"TeX in matplotlib\" Folien an." + "Es ist auch möglich LaTeX für das Setzen aller Plot-Beschriftungen (d.h. Achsenbeschriftungen, Ticks, Legenden, usw.) zu verwenden. Schau dir dazu die \"TeX in matplotlib\" Folien, im LaTeX-Foliensatz an." ] } ], @@ -852,7 +853,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/python/numeric-python.ipynb b/python/numeric-python.ipynb index 947b30d6..2030d679 100644 --- a/python/numeric-python.ipynb +++ b/python/numeric-python.ipynb @@ -10,7 +10,8 @@ "source": [ "![Numpy](https://upload.wikimedia.org/wikipedia/commons/3/31/NumPy_logo_2020.svg)\n", "\n", - "- NumPy steht für **Num**erical **Py**thon und ist die Grundlage für wissenschaftliche Datenverarbeitung und stellt viele optimierte algebraische Methoden zur Verfügung\n", + "- NumPy steht für **Num**erical **Py**thon und ist die Grundlage für wissenschaftliche Datenverarbeitung \n", + "- NumPy stellt viele optimierte algebraische Methoden zur Verfügung\n", "\n", "Motivation:\n", "- Im Praktikum (und allgemein in der Physik) werden Datenpunkte gemessen, die anschließend ausgewertet werden\n", @@ -72,7 +73,7 @@ "metadata": {}, "source": [ "- Grunddatentyp von NumPy ist das **n-dimensionale Array** (_numpy.ndarray_)\n", - "- Numpy Arrays speichern Werte _eines_ Datentyps in einem zusammenhängenden Speicherbereich, wodurch mathematische Operationen auf allen Werten des Arrays effizienter sind\n", + "- NumPy Arrays speichern Werte _eines_ Datentyps in einem zusammenhängenden Speicherbereich, wodurch mathematische Operationen auf allen Werten des Arrays effizienter sind\n", "- Die Effizienz in den Berechnungen kommt durch NumPys Nutzung von optimiertem C/Cython Code statt purem Python Code\n", "\n", "Hier sind einige erste Beispiele zur Nutzung dieser Arrays." @@ -294,9 +295,9 @@ "source": [ "# Eigenschaften von Arrays\n", "\n", - "Numpy-Arrays tragen neben den Daten noch zusätzliche Informationen über die Eigenschaften des Arrays. \n", + "NumPy-Arrays tragen neben den Daten noch zusätzliche Informationen über die Eigenschaften des Arrays. \n", "\n", - "Die *Dimension* eines Arrays kann mit der `ndim`-Funktion abgerufen werden. In Numpy werden die Dimensionen von 0 aufsteigend durchnummeriert. Wird über einzelne Dimensionen eines Arrays gesprochen, werden im Numpy Kontext die Bezeichnungen *Achse/Achsen (axis/axes)* verwendet. Die *Dimension* ist also die Anzahl aller *Achsen*.\n", + "Die *Dimension* eines Arrays kann mit der `ndim`-Funktion abgerufen werden. In NumPy werden die Dimensionen von 0 aufsteigend durchnummeriert. Wird über einzelne Dimensionen eines Arrays gesprochen, werden im NumPy Kontext die Bezeichnungen *Achse/Achsen (axis/axes)* verwendet. Die *Dimension* ist also die Anzahl aller *Achsen*.\n", "\n", "Die `shape`-Funktion gibt in einem Tupel an, wie viele Elemente in jeder Dimension vorhanden sind.\n", "\n", @@ -653,6 +654,15 @@ "np.prod(y)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.prod(y[y != 0])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -763,7 +773,7 @@ "Um Datenpunkte aus einer Textdatei einzulesen wird die Funktion `np.genfromtxt()` genutzt.\n", "Sie gibt den Inhalt einer Textdatei als Array zurück.\n", "\n", - "Die Funktion die Datenpunkte in eine Datei abspeichert ist `np.savetxt()`." + "Die Funktion, die Datenpunkte in eine Datei abspeichert, ist `np.savetxt()`." ] }, { @@ -782,7 +792,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Um den Inhalt der erstellten Datei zu öffnen kann man analog zu Aufgabe `1-python/6-readwrite` die `open`-Funktion benutzen." + "Um den Inhalt der erstellten Datei zu öffnen, kann man analog zu Aufgabe `1-python/6-readwrite`, die `open`-Funktion benutzen." ] }, { @@ -799,7 +809,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Für schönere Formatierung der Daten kann man auch `np.column_stack()` benutzen." + "Für eine schönere Formatierung der Daten kann man auch `np.column_stack()` benutzen." ] }, { @@ -852,7 +862,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Um die Datentypen beim Speichern zu erhalten, muss das Keyword Argument `fmt` wie im Folgenden Beispiel angegeben werden." + "Um die Datentypen beim Speichern zu erhalten, muss das Keyword Argument `fmt`, wie im folgenden Beispiel gezeigt, angegeben werden." ] }, { @@ -889,7 +899,7 @@ "metadata": {}, "source": [ "Das resultierende Array `data` ist besonders, da es ein sogenanntes `structured array` ist.\n", - "Dies ist ein Numpy Array in dem quasi mehrere Arrays in einem abgespeichert sind. Die einzelnen Arrays werden in der Dokumentation `fields` genannt und haben jeweils einen zugeordneten Namen und einen Datentyp." + "Dies ist ein NumPy Array in dem quasi mehrere Arrays in einem abgespeichert sind. Die einzelnen Arrays werden in der Dokumentation `fields` genannt und haben jeweils einen zugeordneten Namen und einen Datentyp." ] }, { @@ -928,7 +938,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/python/python.ipynb b/python/python.ipynb index 3f38c904..fda7d426 100644 --- a/python/python.ipynb +++ b/python/python.ipynb @@ -59,12 +59,11 @@ "# Grundlagen\n", "\n", "Eine Programmiersprache wie Python lässt sich nicht an einem Tag lernen.\n", - "\n", - "Hier geben wir einen kurzen Überblick über die wichtigsten Konzepte.\n", + "Wir geben hier einen kurzen Überblick über die wichtigsten Konzepte.\n", "\n", "Keine Angst: Zum Erstellen von Plots und für einfache Auswertungen muss man nicht viel Python können!\n", "\n", - "Die folgenden Beispiele kann man auf der Kommandozeile durch ausführen von\n", + "Die folgenden Beispiele kann man auf der Kommandozeile durch Ausführen von\n", "```\n", "ipython\n", "```\n", @@ -93,10 +92,11 @@ "source": [ "## Kommentare\n", "\n", - "* Sehr wichtig für die Leute, die mit euch Arbeiten\n", + "* Sehr wichtig für die Leute, die mit euch arbeiten\n", "* Auch für euch selbst zwei Wochen später\n", "\n", - "Alles was in Python hinter einem `#` steht, wird nicht als Code betrachtet und dient als Kommentar." + "Alles was in Python hinter einem `#` steht, wird nicht als Code betrachtet und dient als Kommentar.\n", + "Längere Kommentare werden mit drei Anführungszeichen begonnen und mit drei weiteren begonnen." ] }, { @@ -105,8 +105,11 @@ "metadata": {}, "outputs": [], "source": [ - "# This prints the traditional greeting to the console\n", - "print(\"Hello, World!\")" + "# We start the workshop with the traditional first program\n", + "print(\"Hello, World!\")\n", + "\"\"\"\n", + "This example is chosen to show the basic functionalities of python.\n", + "\"\"\"" ] }, { @@ -114,8 +117,7 @@ "metadata": {}, "source": [ "Kommentare sollten nicht erklären, was der Code tut, sondern warum.\n", - "\n", - "Kommentare, wie jeder andere Code, sollten auf englisch sein." + "Wie jeder andere Code, sollten Kommentare auf Englisch sein." ] }, { @@ -794,7 +796,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Leere Dictionaries werden z.B. mit der Funktion `dict()`erstellt" + "Leere Dictionaries werden mit der Funktion `dict()`erstellt." ] }, { @@ -1060,7 +1062,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Übungen 1, 2, und 3 können bearbeitet werden." + "Übungen 1, 2, und 3 können jetzt bearbeitet werden." ] }, { @@ -1255,17 +1257,15 @@ "## Module und `import`\n", "\n", "In Python kann man Code in einzelne Module portionieren.\n", - "\n", "Es stehen bereits unglaublich viele Module für Python zur Verfügung.\n", - "\n", - "Gerade für das wissenschaftliche Arbeiten ist eigentlich alles da was gebraucht wird und noch viel mehr.\n", + "Und gerade für das wissenschaftliche Arbeiten ist eigentlich alles da, was gebraucht wird und noch viel mehr.\n", "\n", "Wird etwas aus einem anderen Modul gebraucht, importiert man es.\n", "\n", "Zahlreiche Module sind Teil jeder Python Installation, die sogenannte \"standard library\":\n", "https://docs.python.org/3/library/\n", "\n", - "Viele weitere Module habt ihr mit Mamba installiert" + "Weitere Module hast du in deiner `toolbox` Umgebung mit Mamba installiert." ] }, { @@ -1304,8 +1304,7 @@ "metadata": {}, "source": [ "Den Modulen können mit `as` neue Namen gegeben werden\n", - "\n", - "Viele Module haben Konventionen für den Kurznamen, die ihr verwenden solltet" + "Viele Module haben jedoch Konventionen für den Kurznamen, die du verwenden solltest." ] }, { @@ -1414,7 +1413,6 @@ "Variablen ersetzt. \n", "\n", "_f-strings_ haben viele fortgeschrittene Funktionen.\n", - "\n", "Beispielsweise kann die gewünschte Genauigkeit für `floats` angeben werden:" ] }, @@ -1489,7 +1487,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nur zur Demonstration einmal mit mehr Lücken (funktioniert so nicht in LaTeX wegen den Leerzeichen!):" + "Nur zur Demonstration einmal mit mehr Lücken (funktioniert aufgrund der Leerzeichen so nicht in LaTeX!):" ] }, { @@ -1606,7 +1604,7 @@ "\n", "Einige Fehler werden zu Anfang sehr häufig gemacht (und immer mal wieder). \n", "Wenn man die Fehlermeldungen richtig zu lesen weiß, kann einem das viel Arbeit/Frust ersparen. \n", - "**Das Wichtigste ist: Lest die Fehlermeldung und versucht sie zu verstehen!**" + "**Das Wichtigste ist: Lies die Fehlermeldung und versuche sie zu verstehen!**" ] }, { @@ -1615,7 +1613,7 @@ "source": [ "## Gerade am Anfang beliebt: `IndentationError`: \n", "Die Fehlermeldung gibt die Zeile an in der Fehler auftritt (hier: `line 8`) \n", - "und den Grund für den Fehler, häufig mit Erklärung (hier: `IndentationError: expected an indented block`)" + "und den Grund für den Fehler, häufig mit Erklärung (hier: `IndentationError: expected an indented block`)." ] }, { @@ -1681,7 +1679,7 @@ "Grund für den Fehler: `SyntaxError: invalid syntax` \n", "\n", "Stimmt nur zum Teil, denn in Zeile 11 ist alles in Ordnung und der eigentliche Fehler ist in Zeile 10. \n", - "In komplexeren Programmen ist das nicht mehr so einfach zu sehen wie hier, \n", + "In komplexeren Programmen ist das nicht mehr so einfach zu sehen wie hier,\n", "deswegen ist es gut, wenn man dieses Verhalten schon mal gesehen hat." ] }, @@ -1714,9 +1712,9 @@ "source": [ "## Auch sehr einfach auszulösen: `NameError`: \n", "\n", - "Zeile in der der Fehler auftritt: `----> 7 if a <= n:` \n", - "Grund für den Fehler: `NameError: name 'n' is not defined` \n", - "Fehlermeldung sieht etwas anders aus, liefert aber immer noch die gleichen Informationen." + "Zeile in der der Fehler auftritt: `----> 8 if a <= n:` \n", + "Grund für den Fehler: `NameError: name 'n' is not defined`\n", + "Wir können keine Variable verwenden, die nicht existiert." ] }, { @@ -1745,10 +1743,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Fehler bei Zugriffen auf Listen: ` IndexError`\n", + "## Fehler bei Zugriffen auf Listen: `IndexError`\n", "Zeile in der der Fehler auftritt: `----> 4 names[4]` \n", - "Grund für den Fehler: `IndexError: list index out of range` \n", - "Fehlermeldung sieht etwas anders aus, liefert aber immer noch die gleichen Informationen." + "Grund für den Fehler: `IndexError: list index out of range`" ] }, { @@ -1769,10 +1766,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Fehler bei Zugriffen auf Dictionaries: ` KeyError`\n", + "## Fehler bei Zugriffen auf Dictionaries: `KeyError`\n", "Zeile in der der Fehler auftritt: `----> 4 numbers[\"five\"]` \n", - "Grund für den Fehler: `KeyError: 'five'` \n", - "Fehlermeldung sieht etwas anders aus, liefert aber immer noch die gleichen Informationen." + "Grund für den Fehler: `KeyError: 'five'` " ] }, { @@ -1794,15 +1790,15 @@ "metadata": {}, "source": [ "## Komplexer Fehler mit Traceback:\n", - "Wenn an einem Fehler mehrere Funktionen beteiligt sind, \n", - "gibt die Fehlermeldung einen *Traceback* aus. \n", - "Dieser Fall ist eher die Regel, vorallem, wenn Module verwendet werden. \n", - "Der *Traceback* zeigt die Reihenfolge aller Funktionsaufrufe, die \n", - "am Ende zu dem Fehler geführt haben mit dem letzten Aufruf ganz unten *(most recent call last)*. \n", + "Wenn an einem Fehler mehrere Funktionen beteiligt sind,\n", + "gibt die Fehlermeldung einen *Traceback* aus.\n", + "Dieser Fall ist eher die Regel, vorallem, wenn Module verwendet werden.\n", + "Der *Traceback* zeigt die Reihenfolge aller Funktionsaufrufe, die\n", + "am Ende zu dem Fehler geführt haben mit dem letzten Aufruf ganz unten *(most recent call last)*.\n", "\n", "Zeilen die zum Auftreten des Fehlers führen: \n", - "Funktionsaufruf in Zeile 10: \n", - "`---> 10 add_one_to_inverse_difference(x,y)` \n", + "Funktionsaufruf in Zeile 13: \n", + "`---> 13 add_one_to_inverse_difference(x,y)` \n", "Ergebnis des Funktionsaufrufs ist das `return` in Zeile 5 mit neuem Funktionsaufruf: \n", "`----> 5 return 1 + inverse_difference(a, b)` \n", "Ergebnis des 2. Funktionsaufrufs ist das `return` in Zeile 2: \n", @@ -1840,9 +1836,9 @@ "## Debugging *leicht* gemacht\n", "Es kann vorkommen, dass man mal überhaupt nicht weiß, warum etwas nicht funktioniert. \n", "\n", - "In diesem Fall sollte man zunächst mal *Ruhe bewahren* \n", - "und sich dann auf systematische Fehlersuche begeben. \n", - "Ein einfacher Ansatz ist das `print()`-debugging.\n" + "In diesem Fall sollte man zunächst mal *Ruhe bewahren*\n", + "und sich dann auf systematische Fehlersuche begeben. \n", + "Ein einfacher Ansatz ist das `print()`-debugging." ] }, { @@ -1975,9 +1971,9 @@ "metadata": {}, "source": [ "Das funktioniert auch in normalen Python `.py` Dateien. \n", - "`IPython.embed()` öffnet ein `IPython`-Terminalfenster mit allen Variablennamen, \n", - "die vorher definiert wurden. Man kann dann interaktiv nach Problemen im Code suchen \n", - "oder wie hier herrausfinden wie Code funktioniert." + "`IPython.embed()` öffnet ein `IPython`-Terminalfenster mit allen Variablennamen,\n", + "die vorher definiert wurden. Man kann dann interaktiv nach Problemen im Code suchen\n", + "oder wie hier herausfinden wie Code funktioniert." ] } ], diff --git a/python/scientific-python.ipynb b/python/scientific-python.ipynb index 54f4fbee..b99b73a2 100644 --- a/python/scientific-python.ipynb +++ b/python/scientific-python.ipynb @@ -118,7 +118,7 @@ "f(x) = \\sum_i^N a_i \\cdot f_i(x)\n", "$$\n", "\n", - "existiert eine analytische Lösung. Deswegen sollten in solchen Fällen (z.B. alle Polynome) entsprechende Funktionen genutzt werden (z.B. `np.polyfit`)\n", + "existiert eine analytische Lösung. Deswegen sollten in solchen Fällen (z.B. alle Polynome) entsprechende Funktionen genutzt werden (z.B. `np.polyfit`).\n", "\n", "### Lineare Regression bzw. Regression von Polynomen\n", "\n", @@ -277,8 +277,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Schaut man sich die berechnete Ausgleichskurve an sieht man auch, \n", - "dass das nicht stimmen kann:" + "Schaut man sich die berechnete Ausgleichskurve an sieht man auch, dass das nicht stimmen kann:" ] }, { @@ -304,7 +303,7 @@ "metadata": {}, "source": [ "**Was macht man jetzt?** \n", - "Bei solchen Fragen hilft die Dokumentation der Pythonmodule (hier: scipy) oder _Stackoverflow_ weiter. \n", + "Bei solchen Fragen hilft die Dokumentation der Pythonmodule (hier: scipy) oder _Stack Overflow_ weiter. \n", "Folgendes _Google-Muster_ ist ein guter Anfang (beachte englische Sprache): \n", "\n", " python \n", @@ -316,9 +315,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Damit dieser Fit funktioniert müssen die Startwerte für den internen \n", - "Minimierungsalgorithmus angepasst werden. \n", - "Aus der Dokumentation/Stackoverflow wissen wir jetzt, dass man mit dem \n", + "Damit dieser Fit funktioniert müssen die Startwerte für den internen Minimierungsalgorithmus angepasst werden. \n", + "Aus der Dokumentation/Stack Overflow wissen wir jetzt, dass man mit dem\n", "_keyword argument_ `p0` (Standardwert is `p0=(1,1,1)`) die Startwerte einstellt:" ] }, @@ -360,7 +358,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zum Vergleich der beiden Anfangswerte (seeds) kann man sich die einmal ansehen \n", + "Zum Vergleich der beiden Anfangswerte (seeds) kann man sich die einmal ansehen\n", "und mit den angepassten Parametern vergleichen:" ] }, @@ -395,7 +393,7 @@ "\n", "2. _nachdenken_ => siehe unten\n", " \n", - "Im obigen Beispiel musste nur Parameter `b` angepasst werden, \n", + "Im obigen Beispiel musste nur der Parameter `b` angepasst werden,\n", "weil der für die Form der Kurve sehr wichtig ist.\n", "\n", "$$ f(x; a, b, c) = \\frac{a}{1 + \\exp(-(x-b))} + c$$" @@ -438,14 +436,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Der Parameter $b$ gibt den $x$-Wert an bei dem die Funktion auf die Hälfte des Maximums abgefallen ist. \n", - "Bei den Messwerten oben ist die Stelle ungefähr bei $x=40$ also ist `b=40` ein guter Startwert." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "Der Parameter $b$ gibt den $x$-Wert an, bei dem die Funktion auf die Hälfte des Maximums abgefallen ist. \n", + "Bei den Messwerten oben ist die Stelle ungefähr bei $x=40$, also ist `b = 40` ein guter Startwert.\n", + "\n", "Das lässt sich auch automatisieren:" ] }, @@ -498,7 +491,7 @@ "source": [ "### Finden von Peaks\n", "\n", - "Das `scipy.signal` Modul enthält Funktionen zur Signalverarbeitung" + "Das `scipy.signal` Modul enthält Funktionen zur Signalverarbeitung. Das kann interessant sein zum automatischen Finden von Peaks, oder Bestimmung der Periodizität." ] }, { @@ -542,7 +535,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/python/uncertainties.ipynb b/python/uncertainties.ipynb index cb0fcff7..92e57a41 100644 --- a/python/uncertainties.ipynb +++ b/python/uncertainties.ipynb @@ -100,7 +100,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Man muss daran denken, die Funktionen aus unumpy zu benutzen (`exp`, `cos`, etc.)" + "Man muss daran denken, jetzt die Funktionen aus unumpy zu benutzen (`exp`, `cos`, etc.)" ] }, { @@ -152,7 +152,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kann man natürlich auch abkürzen:" + "Kann man natürlich auch im import abkürzen:" ] }, { @@ -203,8 +203,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "vermute eine lineare Korrelation der Messwerte. Stützen der Hypothese mit Korrelationskoeffizient:\n", + "Wir vermuten eine lineare Korrelation der Messwerte und stützen die Hypothese mit dem Korrelationskoeffizient:\n", "\n", "$$r = \\frac{cov(x, y)}{\\sigma_x \\sigma_y}, \\quad -1 \\leq r \\leq 1$$ " ] @@ -228,7 +227,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Korrelation zwischen Variablen mit correlated_values erzeugen: " + "Korrelation zwischen Variablen mit `correlated_values` erzeugen: " ] }, { @@ -251,7 +250,7 @@ "metadata": {}, "source": [ "### Vorsicht bei Fits:\n", - "korrelierte Fit-Parameter führen zu nichts-sagenden Ergebnissen. Kontrolle: Korrelationsmatrix." + "Korrelierte Fit-Parameter führen zu nichts-sagenden Ergebnissen. Kontrolle: Korrelationsmatrix." ] }, { @@ -345,7 +344,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Sympy\n", + "# SymPy\n", "\n", "\n", "\n", @@ -475,7 +474,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.3" + "version": "3.10.11" } }, "nbformat": 4,