From e5b079f2583839203be0876087b5db241b1ec63c Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 15:58:52 +0200 Subject: [PATCH 01/13] longtable exercise later --- exercises-latex/12-longtable/Makefile-loesung | 11 +++ exercises-latex/12-longtable/aufgabe.txt | 13 +++ exercises-latex/12-longtable/data_long.txt | 45 +++++++++ .../12-longtable/loesung-long_table.tex | 73 ++++++++++++++ .../12-longtable/loesung-table.tex | 47 +++++++++ exercises-latex/12-longtable/loesung.tex | 97 +++++++++++++++++++ 6 files changed, 286 insertions(+) create mode 100644 exercises-latex/12-longtable/Makefile-loesung create mode 100644 exercises-latex/12-longtable/aufgabe.txt create mode 100644 exercises-latex/12-longtable/data_long.txt create mode 100644 exercises-latex/12-longtable/loesung-long_table.tex create mode 100644 exercises-latex/12-longtable/loesung-table.tex create mode 100644 exercises-latex/12-longtable/loesung.tex diff --git a/exercises-latex/12-longtable/Makefile-loesung b/exercises-latex/12-longtable/Makefile-loesung new file mode 100644 index 00000000..916c43cc --- /dev/null +++ b/exercises-latex/12-longtable/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/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/12-longtable/data_long.txt b/exercises-latex/12-longtable/data_long.txt new file mode 100644 index 00000000..dbea1f78 --- /dev/null +++ b/exercises-latex/12-longtable/data_long.txt @@ -0,0 +1,45 @@ +# Messung 1 Messung 2 +# Δt R_Probe R_Geh I U R_Probe R_Geh I U +# s Ω Ω mA V Ω Ω mA V +# + 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 + 300 48.597 49.09 142.4 15.00 62.476 62.64 142.9 15.08 + 300 50.993 51.27 142.4 15.02 64.677 65.04 143.0 15.09 + 300 53.370 53.74 142.5 15.03 66.858 67.24 143.0 15.10 + 300 55.710 56.09 142.5 15.03 69.000 69.41 143.0 15.10 + 300 57.989 58.31 142.5 15.03 71.158 71.57 143.0 15.10 + 300 60.228 60.48 142.7 15.07 73.263 73.73 143.0 15.10 + 300 62.476 62.64 142.9 15.08 75.371 75.86 143.0 15.10 + 300 64.677 65.04 143.0 15.09 77.485 77.94 143.1 15.12 + 300 66.858 67.24 143.0 15.10 79.518 79.76 143.1 15.12 + 300 69.000 69.41 143.0 15.10 81.545 81.44 143.0 15.13 + 300 71.158 71.57 143.0 15.10 83.514 83.01 143.0 15.13 + 300 73.263 73.73 143.0 15.10 85.352 84.58 143.0 15.13 + 300 75.371 75.86 143.0 15.10 87.211 87.33 143.0 15.13 + 300 77.485 77.94 143.1 15.12 89.163 89.62 143.2 15.12 + 300 79.518 79.76 143.1 15.12 91.131 91.25 143.2 15.12 + 300 81.545 81.44 143.0 15.13 93.034 92.80 143.2 15.12 + 300 83.514 83.01 143.0 15.13 94.883 94.32 143.2 15.12 + 300 85.352 84.58 143.0 15.13 96.705 97.07 143.2 15.12 + 300 87.211 87.33 143.0 15.13 98.624 98.98 143.2 15.12 + 300 89.163 89.62 143.2 15.12 100.507 100.60 143.2 15.12 + 300 91.131 91.25 143.2 15.12 102.369 102.58 143.2 15.12 + 300 93.034 92.80 143.2 15.12 104.261 104.55 143.2 15.12 + 300 94.883 94.32 143.2 15.12 106.138 106.44 143.2 15.12 + diff --git a/exercises-latex/12-longtable/loesung-long_table.tex b/exercises-latex/12-longtable/loesung-long_table.tex new file mode 100644 index 00000000..89e3293a --- /dev/null +++ b/exercises-latex/12-longtable/loesung-long_table.tex @@ -0,0 +1,73 @@ +\begin{longtblr}[ + caption = {Eine lange Tabelle mit vielen Messdaten.}, + label = {tab:long_table}, + ]{ + 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 \\ + 300 & 48.597 & 49.09 & 142.4 & 15.00 & 62.476 & 62.64 & 142.9 & 15.08 \\ + 300 & 50.993 & 51.27 & 142.4 & 15.02 & 64.677 & 65.04 & 143.0 & 15.09 \\ + 300 & 53.370 & 53.74 & 142.5 & 15.03 & 66.858 & 67.24 & 143.0 & 15.10 \\ + 300 & 55.710 & 56.09 & 142.5 & 15.03 & 69.000 & 69.41 & 143.0 & 15.10 \\ + 300 & 57.989 & 58.31 & 142.5 & 15.03 & 71.158 & 71.57 & 143.0 & 15.10 \\ + 300 & 60.228 & 60.48 & 142.7 & 15.07 & 73.263 & 73.73 & 143.0 & 15.10 \\ + 300 & 62.476 & 62.64 & 142.9 & 15.08 & 75.371 & 75.86 & 143.0 & 15.10 \\ + 300 & 64.677 & 65.04 & 143.0 & 15.09 & 77.485 & 77.94 & 143.1 & 15.12 \\ + 300 & 66.858 & 67.24 & 143.0 & 15.10 & 79.518 & 79.76 & 143.1 & 15.12 \\ + 300 & 69.000 & 69.41 & 143.0 & 15.10 & 81.545 & 81.44 & 143.0 & 15.13 \\ + 300 & 71.158 & 71.57 & 143.0 & 15.10 & 83.514 & 83.01 & 143.0 & 15.13 \\ + 300 & 73.263 & 73.73 & 143.0 & 15.10 & 85.352 & 84.58 & 143.0 & 15.13 \\ + 300 & 75.371 & 75.86 & 143.0 & 15.10 & 87.211 & 87.33 & 143.0 & 15.13 \\ + 300 & 77.485 & 77.94 & 143.1 & 15.12 & 89.163 & 89.62 & 143.2 & 15.12 \\ + 300 & 79.518 & 79.76 & 143.1 & 15.12 & 91.131 & 91.25 & 143.2 & 15.12 \\ + 300 & 81.545 & 81.44 & 143.0 & 15.13 & 93.034 & 92.80 & 143.2 & 15.12 \\ + 300 & 83.514 & 83.01 & 143.0 & 15.13 & 94.883 & 94.32 & 143.2 & 15.12 \\ + 300 & 85.352 & 84.58 & 143.0 & 15.13 & 96.705 & 97.07 & 143.2 & 15.12 \\ + 300 & 87.211 & 87.33 & 143.0 & 15.13 & 98.624 & 98.98 & 143.2 & 15.12 \\ + 300 & 89.163 & 89.62 & 143.2 & 15.12 & 100.507 & 100.60 & 143.2 & 15.12 \\ + 300 & 91.131 & 91.25 & 143.2 & 15.12 & 102.369 & 102.58 & 143.2 & 15.12 \\ + 300 & 93.034 & 92.80 & 143.2 & 15.12 & 104.261 & 104.55 & 143.2 & 15.12 \\ + 300 & 94.883 & 94.32 & 143.2 & 15.12 & 106.138 & 106.44 & 143.2 & 15.12 \\ + \bottomrule +\end{longtblr} 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} From da3bc84d4d4c277c0b29672fcfad10c43df9d780 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 15:59:11 +0200 Subject: [PATCH 02/13] move other exercises --- exercises-latex/13-python/.gitignore | 1 + exercises-latex/13-python/Makefile-loesung | 32 ++++++ exercises-latex/13-python/aufgabe.txt | 33 ++++++ exercises-latex/13-python/curve_fit.py | 27 +++++ exercises-latex/13-python/data.py | 13 +++ .../13-python/loesung-header-matplotlib.tex | 16 +++ exercises-latex/13-python/loesung-header.tex | 49 +++++++++ .../13-python/loesung-matplotlibrc | 12 ++ exercises-latex/13-python/loesung.py | 103 ++++++++++++++++++ exercises-latex/13-python/loesung.tex | 35 ++++++ exercises-latex/13-python/vorlage.py | 21 ++++ exercises-latex/14-tikz/Makefile-loesung | 57 ++++++++++ exercises-latex/14-tikz/aufgabe.txt | 41 +++++++ exercises-latex/14-tikz/loesung-bragg.tex | 49 +++++++++ .../14-tikz/loesung-circuitikz.tex | 37 +++++++ exercises-latex/14-tikz/loesung-mm-paper.tex | 26 +++++ exercises-latex/14-tikz/loesung-nikolaus.tex | 32 ++++++ .../14-tikz/loesung-pythagoras.tex | 38 +++++++ exercises-latex/15-beamer/Makefile-loesung | 11 ++ exercises-latex/15-beamer/aufgabe.txt | 12 ++ exercises-latex/15-beamer/loesung.tex | 103 ++++++++++++++++++ 21 files changed, 748 insertions(+) create mode 100644 exercises-latex/13-python/.gitignore create mode 100644 exercises-latex/13-python/Makefile-loesung create mode 100644 exercises-latex/13-python/aufgabe.txt create mode 100644 exercises-latex/13-python/curve_fit.py create mode 100644 exercises-latex/13-python/data.py create mode 100644 exercises-latex/13-python/loesung-header-matplotlib.tex create mode 100644 exercises-latex/13-python/loesung-header.tex create mode 100644 exercises-latex/13-python/loesung-matplotlibrc create mode 100644 exercises-latex/13-python/loesung.py create mode 100644 exercises-latex/13-python/loesung.tex create mode 100644 exercises-latex/13-python/vorlage.py create mode 100644 exercises-latex/14-tikz/Makefile-loesung create mode 100644 exercises-latex/14-tikz/aufgabe.txt create mode 100644 exercises-latex/14-tikz/loesung-bragg.tex create mode 100644 exercises-latex/14-tikz/loesung-circuitikz.tex create mode 100644 exercises-latex/14-tikz/loesung-mm-paper.tex create mode 100644 exercises-latex/14-tikz/loesung-nikolaus.tex create mode 100644 exercises-latex/14-tikz/loesung-pythagoras.tex create mode 100644 exercises-latex/15-beamer/Makefile-loesung create mode 100644 exercises-latex/15-beamer/aufgabe.txt create mode 100644 exercises-latex/15-beamer/loesung.tex diff --git a/exercises-latex/13-python/.gitignore b/exercises-latex/13-python/.gitignore new file mode 100644 index 00000000..b881d2fe --- /dev/null +++ b/exercises-latex/13-python/.gitignore @@ -0,0 +1 @@ +data.txt diff --git a/exercises-latex/13-python/Makefile-loesung b/exercises-latex/13-python/Makefile-loesung new file mode 100644 index 00000000..66581d80 --- /dev/null +++ b/exercises-latex/13-python/Makefile-loesung @@ -0,0 +1,32 @@ +all: build/loesung.pdf + +build/loesung.pdf: FORCE $(addprefix build/loesung-, table.tex a.tex b.tex c.tex d.tex plot.pdf) | build + TEXINPUTS="$(call translate,build:)" \ + max_print_line=1048576 \ + latexmk \ + --lualatex \ + --output-directory=build \ + --interaction=batchmode \ + --halt-on-error \ + loesung.tex + +build/loesung-plot.pdf: loesung.py curve_fit.py data.txt loesung-matplotlibrc loesung-header-matplotlib.tex | build + MATPLOTLIBRC=loesung-matplotlibrc \ + TEXINPUTS="$$(pwd):" \ + python loesung.py + +$(addprefix build/loesung-, table.tex a.tex b.tex c.tex d.tex): build/loesung-plot.pdf + +data.txt: data.py + python $< + +build: + mkdir -p build + +clean: + rm -rf build + rm -f data.txt + +FORCE: + +.PHONY: all clean diff --git a/exercises-latex/13-python/aufgabe.txt b/exercises-latex/13-python/aufgabe.txt new file mode 100644 index 00000000..beb50d4c --- /dev/null +++ b/exercises-latex/13-python/aufgabe.txt @@ -0,0 +1,33 @@ +Fitte die Daten aus `daten.txt` (t, U, U_err) mit der Funktion + + f(x) = a * sin(b * x + c) + d . + +Benutze dazu ucurve_fit aus der Datei `curve_fit.py`. +Geeignete Startwerte sind a=1, b=1e3, c=d=0. + +Plotte die Daten und die gefittete Funktion. +Verwende das pgf-Backend und eine matplotlibrc sowie die nötigen LaTeX-Pakete, +um die Beschriftung schön zu machen. + + +Teile die Daten dabei in zwei Spalten auf, damit die Tabelle nicht zu lang wird. + + +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. + +Nutze dazu die Funktion + + make_qty(num, unit, exp='', figures=None) . + +Dabei gibt num den Wert (mit Fehler) an. +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 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/13-python/curve_fit.py b/exercises-latex/13-python/curve_fit.py new file mode 100644 index 00000000..bc67749b --- /dev/null +++ b/exercises-latex/13-python/curve_fit.py @@ -0,0 +1,27 @@ +import numpy as np +import scipy.optimize +import uncertainties as unc +import uncertainties.unumpy as unp + + +def ucurve_fit(f, x, y, **kwargs): + """ + Uncertainties wrapper around curve_fit + y can be a uarray with uncertainties + and the parameters are returned as uncertainties.correlated_values + """ + if np.any(unp.std_devs(y) == 0): + sigma = None + else: + sigma = unp.std_devs(y) + + popt, pcov = scipy.optimize.curve_fit( + f, + x, + unp.nominal_values(y), + sigma=sigma, + absolute_sigma=True, + **kwargs, + ) + + return unc.correlated_values(popt, pcov) diff --git a/exercises-latex/13-python/data.py b/exercises-latex/13-python/data.py new file mode 100644 index 00000000..ff63746c --- /dev/null +++ b/exercises-latex/13-python/data.py @@ -0,0 +1,13 @@ +import numpy as np + +# Datenfile erzeugen +rng = np.random.default_rng(42) +N = 51 +data_x = np.linspace(0, 2 * np.pi, N) +error_y = rng.lognormal(-1, 0.2, size=N) +data_y = rng.normal(2 * np.sin(1.5 * data_x + np.pi / 4) + 0.5, error_y) +np.savetxt( + "data.txt", + np.column_stack([data_x, data_y, error_y]), + header="t/ms U/kV y_err/kV", +) diff --git a/exercises-latex/13-python/loesung-header-matplotlib.tex b/exercises-latex/13-python/loesung-header-matplotlib.tex new file mode 100644 index 00000000..a5d01179 --- /dev/null +++ b/exercises-latex/13-python/loesung-header-matplotlib.tex @@ -0,0 +1,16 @@ +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} +\usepackage[ + per-mode=reciprocal, +]{siunitx} diff --git a/exercises-latex/13-python/loesung-header.tex b/exercises-latex/13-python/loesung-header.tex new file mode 100644 index 00000000..de7b5acb --- /dev/null +++ b/exercises-latex/13-python/loesung-header.tex @@ -0,0 +1,49 @@ +\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=reciprocal, + output-decimal-marker=., +]{siunitx} + +\usepackage{float} +\floatplacement{figure}{htbp} +\floatplacement{table}{htbp} + +\usepackage[ + labelfont=bf, + font=small, + width=0.9\textwidth, +]{caption} + +\usepackage{graphicx} +\usepackage{booktabs} + +\usepackage[ + unicode, +]{hyperref} +\usepackage{bookmark} diff --git a/exercises-latex/13-python/loesung-matplotlibrc b/exercises-latex/13-python/loesung-matplotlibrc new file mode 100644 index 00000000..c0e846e0 --- /dev/null +++ b/exercises-latex/13-python/loesung-matplotlibrc @@ -0,0 +1,12 @@ +backend : pgf +figure.figsize : 5.78, 3.57 +figure.constrained_layout.use : True +font.family : serif +font.size : 11 +legend.fontsize : medium +xtick.labelsize : 9 +ytick.labelsize : 9 +pgf.rcfonts : False +text.usetex : True +pgf.texsystem : lualatex +pgf.preamble : \input{loesung-header-matplotlib.tex} diff --git a/exercises-latex/13-python/loesung.py b/exercises-latex/13-python/loesung.py new file mode 100644 index 00000000..75cbb184 --- /dev/null +++ b/exercises-latex/13-python/loesung.py @@ -0,0 +1,103 @@ +import matplotlib.pyplot as plt +import numpy as np +import uncertainties.unumpy as unp +from uncertainties.unumpy import ( + nominal_values as noms, + std_devs as stds, +) + +from curve_fit import ucurve_fit + + +def make_qty(num, unit, exp="", figures=None): + """Format an uncertainties ufloat as a \qty quantity""" + if np.any(stds([num])): + if figures is None: + figures = "" + x = "{0:.{1:}uf}".format(num, figures).replace("/", "") + else: + x = "{0:.{1:}f}".format(num, figures) + + return r"\qty{{{}{}}}{{{}}}".format(x, exp, unit) + + +t, U, U_err = np.genfromtxt("data.txt", unpack=True) +t *= 1e-3 +U = 1e3 * unp.uarray(U, U_err) + + +def f(t, a, b, c, d): + return a * np.sin(b * t + c) + d + + +params = ucurve_fit(f, t, U, p0=[1e3, 1e3, 0, 0]) + +t_plot = np.linspace(-0.5, 2 * np.pi + 0.5, 1000) * 1e-3 + +fig, ax = plt.subplots(1, 1, layout="constrained") + +ax.errorbar( + t * 1e3, + noms(U) * 1e-3, + yerr=stds(U) * 1e-3, + fmt="k_", + label="Daten", +) +ax.plot(t_plot * 1e3, f(t_plot, *noms(params)) * 1e-3, "-", label="Fit") +ax.set_xlim(t_plot[0] * 1e3, t_plot[-1] * 1e3) +ax.set_xlabel(r"$t \mathbin{/} \unit{\milli\second}$") +ax.set_ylabel(r"$U \mathbin{/} \unit{\kilo\volt}$") +ax.legend(loc="best") +fig.savefig("build/loesung-plot.pdf") + +t1, t2 = np.array_split(t * 1e3, 2) +U1, U2 = np.array_split(U * 1e-3, 2) + + +table_header = r""" + \begin{tabular}{ + S[table-format=1.3] + S[table-format=-1.2] + @{${}\pm{}$} + S[table-format=1.2] + @{\hspace*{3em}\hspace*{\tabcolsep}} + S[table-format=1.3] + S[table-format=-1.2] + @{${}\pm{}$} + S[table-format=1.2] + } + \toprule + {$t \mathbin{/} \unit{\milli\second}$} & \multicolumn{2}{c}{$U \:/\: \unit{\kilo\volt}$\hspace*{3em}} & + {$t \mathbin{/} \unit{\milli\second}$} & \multicolumn{2}{c}{$U \:/\: \unit{\kilo\volt}$} \\ + \midrule +""" + +table_footer = r""" \bottomrule + \end{tabular} +""" +row_template = ( + r" {0:1.3f} & {1.n:1.2f} & {1.s:1.2f} & {2:1.3f} & {3.n:1.2f} & {3.s:1.2f} \\" +) + + +with open("build/loesung-table.tex", "w") as f: + f.write(table_header) + for row in zip(t1, U1, t2, U2): + f.write(row_template.format(*row)) + f.write("\n") + f.write(table_footer) + + +a, b, c, d = params + +with open("build/loesung-a.tex", "w") as f: + f.write(make_qty(a * 1e-3, r"\kilo\volt")) + +with open("build/loesung-b.tex", "w") as f: + f.write(make_qty(b * 1e-3, r"\kilo\hertz")) + +with open("build/loesung-c.tex", "w") as f: + f.write(make_qty(c, "")) + +with open("build/loesung-d.tex", "w") as f: + f.write(make_qty(d * 1e-3, r"\kilo\volt")) diff --git a/exercises-latex/13-python/loesung.tex b/exercises-latex/13-python/loesung.tex new file mode 100644 index 00000000..79dcc94b --- /dev/null +++ b/exercises-latex/13-python/loesung.tex @@ -0,0 +1,35 @@ +\input{loesung-header.tex} + +\begin{document} + +\section{Messwerte und Auswertung} + +Die Messdaten befinden sich in Tabelle~\ref{tab:data}. +Die Ergebnisse des Fits an die Funktion +\begin{equation} + U(t) = a \sin(b t + c) + d +\end{equation} +sind +\begin{align} + a &= \input{loesung-a.tex} \\ + b &= \input{loesung-b.tex} \\ + c &= \input{loesung-c.tex} \\ + d &= \input{loesung-d.tex} . +\end{align} +Die Messdaten und das Ergebnis des Fits sind in Abbildung~\ref{fig:plot} geplottet. + +\begin{table} + \centering + \caption{Messdaten.} + \label{tab:data} + \input{loesung-table.tex} +\end{table} + +\begin{figure} + \centering + \includegraphics{loesung-plot.pdf} + \caption{Messdaten und Fitergebnis.} + \label{fig:plot} +\end{figure} + +\end{document} diff --git a/exercises-latex/13-python/vorlage.py b/exercises-latex/13-python/vorlage.py new file mode 100644 index 00000000..535b0549 --- /dev/null +++ b/exercises-latex/13-python/vorlage.py @@ -0,0 +1,21 @@ +import matplotlib.pyplot as plt +import numpy as np +import uncertainties.unumpy as unp +from uncertainties.unumpy import ( + nominal_values as noms, + std_devs as stds, +) + +from curve_fit import ucurve_fit + + +def make_qty(num, unit, exp="", figures=None): + """Format an uncertainties ufloat as a \qty quantity""" + if np.any(stds([num])): + if figures is None: + figures = "" + x = "{0:.{1:}uf}".format(num, figures).replace("/", "") + else: + x = "{0:.{1:}f}".format(num, figures) + + return r"\qty{{{}{}}}{{{}}}".format(x, exp, unit) diff --git a/exercises-latex/14-tikz/Makefile-loesung b/exercises-latex/14-tikz/Makefile-loesung new file mode 100644 index 00000000..79add1c4 --- /dev/null +++ b/exercises-latex/14-tikz/Makefile-loesung @@ -0,0 +1,57 @@ +INTERACTION=batchmode + + +all: \ + build/loesung-pythagoras.pdf \ + build/loesung-nikolaus.pdf \ + build/loesung-bragg.pdf \ + build/loesung-circuitikz.pdf \ + build/loesung-mm-paper.pdf + + +build/loesung-pythagoras.pdf: loesung-pythagoras.tex | build + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-pythagoras.tex + + +build/loesung-mm-paper.pdf: loesung-mm-paper.tex | build + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-mm-paper.tex + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-mm-paper.tex + +build/loesung-nikolaus.pdf: loesung-nikolaus.tex | build + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-nikolaus.tex + +build/loesung-bragg.pdf: loesung-bragg.tex | build + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-bragg.tex + +build/loesung-circuitikz.pdf: loesung-circuitikz.tex | build + lualatex \ + --output-directory=build \ + --interaction=${INTERACTION} \ + --halt-on-error \ + loesung-circuitikz.tex + +build: + mkdir -p build + +clean: + rm -rf build diff --git a/exercises-latex/14-tikz/aufgabe.txt b/exercises-latex/14-tikz/aufgabe.txt new file mode 100644 index 00000000..8bb0dfc8 --- /dev/null +++ b/exercises-latex/14-tikz/aufgabe.txt @@ -0,0 +1,41 @@ +# Tikz-Aufgaben + +Tipps: +* Die Doku hat zahlreiche Beispiele +* Die Dokumentenklasse `standalone` ist gut geeignet + +## Aufgabe 1 + +Male das Haus vom Nikolaus ohne „den Stift abzusetzen“. + +## Aufgabe 2 +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 +* Wie bekommt man die Seitenzahl weg? +* die tikz-Optionen `remember picture`, `overlay` und `shift` + +## Aufgabe 3 + +Schaue dir auch die Doku von `circuitikz` an, +und baue den Schaltplan für einen gedämpften Schwingkreis +mit +C = 1 µF +R = 50 Ω +L = 1 H + + +## Aufgabe 4 + +Stelle mithilfe von Tikz die Bragg-Bedingung dar. + +## Aufgabe 5 + +Zeichne eine Darstellung des Satz von Pythagoras mit Tikz + +Diese sollte folgende Elemente beinhalten +* Beschriftungen der Kanten und des rechten Winkels +* Die Flächen der Quadrate + diff --git a/exercises-latex/14-tikz/loesung-bragg.tex b/exercises-latex/14-tikz/loesung-bragg.tex new file mode 100644 index 00000000..c9899d47 --- /dev/null +++ b/exercises-latex/14-tikz/loesung-bragg.tex @@ -0,0 +1,49 @@ +\RequirePackage{luatex85} +\documentclass{standalone} + +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} +\usepackage{tikz} + +\begin{document} + +\begin{tikzpicture} + \renewcommand\d{1cm} + \newcommand\ang{30} + + \foreach \y in {0, -\d} + { + \draw[thick, red] (0, \y) -- +(180-\ang: 4cm); + \draw[thick, red] (0, \y) -- +(\ang: 4cm); + } + + \tikzset{dot/.style={shape=circle,fill=black,scale=0.3}} + \draw[thick, blue] (270 - \ang: {cos(\ang)} * \d) -- (0, -\d) node[anchor=north east] {$\symup{\Delta}s$}; + + \foreach \y in {0, -\d} + { + \draw[dotted, thin] (-3.1, \y) -- (3.1, \y); + \foreach \x in {-3, -2, -1, 0, 1, 2, 3} + { + \node[dot] at (\x, \y) {}; + } + } + + \draw (5mm, 0) arc [start angle=0, end angle=\ang, radius=5mm]; + \node at (\ang/2: 8mm) {$θ$}; + \draw (0, 0) -- (270 - \ang: {cos(\ang)} * \d); + \draw (0, 0) -- (270 + \ang: {cos(\ang)} * \d); + \draw[dashed, thin] (0, 1) -- (0, -1*\d); + \draw[<->] (-2.5, 0) -- +(0, -\d) node[left, midway] {$d$}; +\end{tikzpicture} + +\end{document} diff --git a/exercises-latex/14-tikz/loesung-circuitikz.tex b/exercises-latex/14-tikz/loesung-circuitikz.tex new file mode 100644 index 00000000..684a342a --- /dev/null +++ b/exercises-latex/14-tikz/loesung-circuitikz.tex @@ -0,0 +1,37 @@ +\RequirePackage{luatex85} +\documentclass[margin=5pt]{standalone} + +\usepackage[ngerman]{babel} + +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} + +\usepackage[ + locale=DE, +]{siunitx} + +\usepackage{tikz} +\usepackage[ + europeanresistors, % follow DIN + americaninductors, % foolow DIN, funny, isn't it? + siunitx, +]{circuitikz} + +\begin{document} + +\begin{tikzpicture} + \draw (0, 0) to[R=50<\ohm>] (4, 0) + to[C=1<\micro\farad>] (4, 4) + to[L=1<\henry>] (0, 4) -- (0, 0); +\end{tikzpicture} + +\end{document} diff --git a/exercises-latex/14-tikz/loesung-mm-paper.tex b/exercises-latex/14-tikz/loesung-mm-paper.tex new file mode 100644 index 00000000..259abaf4 --- /dev/null +++ b/exercises-latex/14-tikz/loesung-mm-paper.tex @@ -0,0 +1,26 @@ +\documentclass{scrartcl} + +\pagestyle{empty} +\usepackage[margin=1cm]{geometry} +\usepackage{xcolor} + +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} +\usepackage{tikz} + +\begin{document}% +\begin{tikzpicture}[remember picture, overlay, shift=(current page.north west)]% + \draw[step=1mm, black!10, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); + \draw[step=5mm, black!20, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); + \draw[step=10mm, black!30, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); +\end{tikzpicture}% +\end{document}% diff --git a/exercises-latex/14-tikz/loesung-nikolaus.tex b/exercises-latex/14-tikz/loesung-nikolaus.tex new file mode 100644 index 00000000..709a34b5 --- /dev/null +++ b/exercises-latex/14-tikz/loesung-nikolaus.tex @@ -0,0 +1,32 @@ +\RequirePackage{luatex85} +\documentclass{standalone} + +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} +\usepackage{tikz} + +\begin{document} + +\begin{tikzpicture} + \newcommand\len{2cm} + + \draw[rounded corners] (0, 0) -- ++(0, \len) + -- ++( \len/2, \len/2) + -- ++( \len/2, -\len/2) + -- ++(-\len, 0) + -- ++( \len, -\len) + -- ++(-\len, 0) + -- ++( \len, +\len) + -- ++( 0, -\len); +\end{tikzpicture} + +\end{document} diff --git a/exercises-latex/14-tikz/loesung-pythagoras.tex b/exercises-latex/14-tikz/loesung-pythagoras.tex new file mode 100644 index 00000000..ed297d32 --- /dev/null +++ b/exercises-latex/14-tikz/loesung-pythagoras.tex @@ -0,0 +1,38 @@ +\RequirePackage{luatex85} +\documentclass{standalone} + +\usepackage{mathtools} +\usepackage{fontspec} +\usepackage[ + math-style=ISO, + bold-style=ISO, + sans-style=italic, + nabla=upright, + partial=upright, + mathrm=sym, +]{unicode-math} +\setmathfont{Latin Modern Math} +\usepackage{tikz} + +\begin{document} +\begin{tikzpicture} + \newcommand\width{3cm} + \newcommand\height{2cm} + + \coordinate (A) at (\width, \height); + \coordinate (B) at (0, 0); + \coordinate (C) at (\width, 0); + \coordinate (D) at (-\height, \width); + \coordinate (E) at (-\height + \width, \width + \height); + + \draw[thick] (A) -- (B) node[midway, below right] {$c$} + -- (C) node[midway, above] {$a$} + -- cycle node[midway, left] {$b$}; + \draw[dashed] (A) rectangle +(\height, -\height) node [pos=0.5] {$b^2$}; + \draw[dashed] (B) rectangle +(\width, -\width) node [pos=0.5] {$a^2$}; + \draw[dashed] (B) -- (D) -- (E) -- (A) -- cycle; + \path (B) -- (E) node[midway, anchor=center] {$c^2$}; + \draw (C) ++ (0, 3mm) arc [start angle=90, end angle=180, radius=3mm]; + \node[xshift=-1mm, yshift=1mm] at (C) {$\cdot$}; +\end{tikzpicture} +\end{document} 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/15-beamer/aufgabe.txt b/exercises-latex/15-beamer/aufgabe.txt new file mode 100644 index 00000000..e4ee8620 --- /dev/null +++ b/exercises-latex/15-beamer/aufgabe.txt @@ -0,0 +1,12 @@ +Aufgabe 1: +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: +* Nutzw eines der in TeXLive enthaltenen Beamer-Themes. +* Schalte die Navigationssymbole aus +* Ändere das Farbthema diff --git a/exercises-latex/15-beamer/loesung.tex b/exercises-latex/15-beamer/loesung.tex new file mode 100644 index 00000000..0a9adae9 --- /dev/null +++ b/exercises-latex/15-beamer/loesung.tex @@ -0,0 +1,103 @@ +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{aux}{rerunfilecheck} + +\documentclass{beamer} + +\usefonttheme{professionalfonts} +\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[ + math-micro=µ, + locale=DE, +]{siunitx} + +\usetheme{Frankfurt} +\usecolortheme{seagull} +\setbeamertemplate{navigation symbols}{} + +\author{PeP et al.\ e.\,V.} +\institute{TU Dortmund} +\date{Toolbox-Workshop 2016} +\title{Beamer-Musterlösung} + +\begin{document} + +\begin{frame} + \maketitle +\end{frame} + +\begin{frame}{Übersicht} + \tableofcontents +\end{frame} + +\section{Toller Plot} + +\begin{frame}{Plot} + \begin{columns}[c, onlytextwidth] + \begin{column}{0.42\textwidth} + \includegraphics[width=\textwidth]{example-image-a} + \end{column} + \begin{column}{0.52\textwidth} + \begin{itemize} + \item Dies ist ein Beispielbild + \item Es kommt mit dem Paket \texttt{mwe} + \item Gut zum Testen + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\section{Maxwell-Gleichungen} + +\begin{frame}{Maxwell-Gleichungen} + \begin{columns}[t, onlytextwidth] + \begin{column}{0.45\textwidth} + \begin{block}{Maxwell I} + \begin{equation} + \nabla \cdot \symbf{E} = \frac{ρ}{ε_0} + \end{equation} + \end{block} + \end{column} + \begin{column}{0.45\textwidth} + \begin{block}{Maxwell II} + \begin{equation} + \nabla \cdot \symbf{B} = 0 + \end{equation} + \end{block} + \end{column} + \end{columns} + \begin{columns}[t, onlytextwidth] + \begin{column}{0.45\textwidth} + \begin{block}{Maxwell III} + \begin{equation} + \nabla \times \symbf{E} = - \partial_t \symbf{B} + \end{equation} + \end{block} + \end{column} + \begin{column}{0.45\textwidth} + \begin{block}{Maxwell IV} + \setlength{\abovedisplayskip}{0pt} + \begin{equation} + \nabla \times \symbf{B} = μ_0 \symbf{j} - μ_0 ε_0 \partial_t \symbf{E} + \end{equation} + \end{block} + \end{column} + \end{columns} +\end{frame} + +\end{document} From 005e312a8cdb0808f76f490a1b2dfbd1c7810daa Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 15:59:27 +0200 Subject: [PATCH 03/13] go to 2nd person singular in tasks --- exercises-latex/01-helloworld/aufgabe.txt | 4 +- exercises-latex/02-input/aufgabe.txt | 4 +- exercises-latex/03-lists/aufgabe.txt | 10 +- exercises-latex/04-titlepage/aufgabe.txt | 9 +- exercises-latex/05-structure/aufgabe.txt | 4 +- exercises-latex/06-math/aufgabe.txt | 42 +++---- exercises-latex/07-siunitx/aufgabe.txt | 18 +-- exercises-latex/08-figures/aufgabe.txt | 19 ++-- exercises-latex/09-tables/aufgabe.txt | 19 +--- exercises-latex/09-tables/data_long.txt | 45 -------- .../09-tables/loesung-long_table.tex | 73 ------------- exercises-latex/09-tables/loesung.tex | 12 -- exercises-latex/11-biblatex/aufgabe.txt | 6 +- exercises-latex/12-python/.gitignore | 1 - exercises-latex/12-python/Makefile-loesung | 32 ------ exercises-latex/12-python/aufgabe.txt | 33 ------ exercises-latex/12-python/curve_fit.py | 27 ----- exercises-latex/12-python/data.py | 13 --- .../12-python/loesung-header-matplotlib.tex | 16 --- exercises-latex/12-python/loesung-header.tex | 49 --------- .../12-python/loesung-matplotlibrc | 12 -- exercises-latex/12-python/loesung.py | 103 ------------------ exercises-latex/12-python/loesung.tex | 35 ------ exercises-latex/12-python/vorlage.py | 21 ---- exercises-latex/13-tikz/Makefile-loesung | 57 ---------- exercises-latex/13-tikz/aufgabe.txt | 41 ------- exercises-latex/13-tikz/loesung-bragg.tex | 49 --------- .../13-tikz/loesung-circuitikz.tex | 37 ------- exercises-latex/13-tikz/loesung-mm-paper.tex | 26 ----- exercises-latex/13-tikz/loesung-nikolaus.tex | 32 ------ .../13-tikz/loesung-pythagoras.tex | 38 ------- exercises-latex/14-beamer/Makefile-loesung | 11 -- exercises-latex/14-beamer/aufgabe.txt | 12 -- exercises-latex/14-beamer/loesung.tex | 103 ------------------ exercises-latex/Makefile | 2 +- 35 files changed, 64 insertions(+), 951 deletions(-) delete mode 100644 exercises-latex/09-tables/data_long.txt delete mode 100644 exercises-latex/09-tables/loesung-long_table.tex delete mode 100644 exercises-latex/12-python/.gitignore delete mode 100644 exercises-latex/12-python/Makefile-loesung delete mode 100644 exercises-latex/12-python/aufgabe.txt delete mode 100644 exercises-latex/12-python/curve_fit.py delete mode 100644 exercises-latex/12-python/data.py delete mode 100644 exercises-latex/12-python/loesung-header-matplotlib.tex delete mode 100644 exercises-latex/12-python/loesung-header.tex delete mode 100644 exercises-latex/12-python/loesung-matplotlibrc delete mode 100644 exercises-latex/12-python/loesung.py delete mode 100644 exercises-latex/12-python/loesung.tex delete mode 100644 exercises-latex/12-python/vorlage.py delete mode 100644 exercises-latex/13-tikz/Makefile-loesung delete mode 100644 exercises-latex/13-tikz/aufgabe.txt delete mode 100644 exercises-latex/13-tikz/loesung-bragg.tex delete mode 100644 exercises-latex/13-tikz/loesung-circuitikz.tex delete mode 100644 exercises-latex/13-tikz/loesung-mm-paper.tex delete mode 100644 exercises-latex/13-tikz/loesung-nikolaus.tex delete mode 100644 exercises-latex/13-tikz/loesung-pythagoras.tex delete mode 100644 exercises-latex/14-beamer/Makefile-loesung delete mode 100644 exercises-latex/14-beamer/aufgabe.txt delete mode 100644 exercises-latex/14-beamer/loesung.tex 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/data_long.txt b/exercises-latex/09-tables/data_long.txt deleted file mode 100644 index dbea1f78..00000000 --- a/exercises-latex/09-tables/data_long.txt +++ /dev/null @@ -1,45 +0,0 @@ -# Messung 1 Messung 2 -# Δt R_Probe R_Geh I U R_Probe R_Geh I U -# s Ω Ω mA V Ω Ω mA V -# - 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 - 300 48.597 49.09 142.4 15.00 62.476 62.64 142.9 15.08 - 300 50.993 51.27 142.4 15.02 64.677 65.04 143.0 15.09 - 300 53.370 53.74 142.5 15.03 66.858 67.24 143.0 15.10 - 300 55.710 56.09 142.5 15.03 69.000 69.41 143.0 15.10 - 300 57.989 58.31 142.5 15.03 71.158 71.57 143.0 15.10 - 300 60.228 60.48 142.7 15.07 73.263 73.73 143.0 15.10 - 300 62.476 62.64 142.9 15.08 75.371 75.86 143.0 15.10 - 300 64.677 65.04 143.0 15.09 77.485 77.94 143.1 15.12 - 300 66.858 67.24 143.0 15.10 79.518 79.76 143.1 15.12 - 300 69.000 69.41 143.0 15.10 81.545 81.44 143.0 15.13 - 300 71.158 71.57 143.0 15.10 83.514 83.01 143.0 15.13 - 300 73.263 73.73 143.0 15.10 85.352 84.58 143.0 15.13 - 300 75.371 75.86 143.0 15.10 87.211 87.33 143.0 15.13 - 300 77.485 77.94 143.1 15.12 89.163 89.62 143.2 15.12 - 300 79.518 79.76 143.1 15.12 91.131 91.25 143.2 15.12 - 300 81.545 81.44 143.0 15.13 93.034 92.80 143.2 15.12 - 300 83.514 83.01 143.0 15.13 94.883 94.32 143.2 15.12 - 300 85.352 84.58 143.0 15.13 96.705 97.07 143.2 15.12 - 300 87.211 87.33 143.0 15.13 98.624 98.98 143.2 15.12 - 300 89.163 89.62 143.2 15.12 100.507 100.60 143.2 15.12 - 300 91.131 91.25 143.2 15.12 102.369 102.58 143.2 15.12 - 300 93.034 92.80 143.2 15.12 104.261 104.55 143.2 15.12 - 300 94.883 94.32 143.2 15.12 106.138 106.44 143.2 15.12 - diff --git a/exercises-latex/09-tables/loesung-long_table.tex b/exercises-latex/09-tables/loesung-long_table.tex deleted file mode 100644 index 89e3293a..00000000 --- a/exercises-latex/09-tables/loesung-long_table.tex +++ /dev/null @@ -1,73 +0,0 @@ -\begin{longtblr}[ - caption = {Eine lange Tabelle mit vielen Messdaten.}, - label = {tab:long_table}, - ]{ - 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 \\ - 300 & 48.597 & 49.09 & 142.4 & 15.00 & 62.476 & 62.64 & 142.9 & 15.08 \\ - 300 & 50.993 & 51.27 & 142.4 & 15.02 & 64.677 & 65.04 & 143.0 & 15.09 \\ - 300 & 53.370 & 53.74 & 142.5 & 15.03 & 66.858 & 67.24 & 143.0 & 15.10 \\ - 300 & 55.710 & 56.09 & 142.5 & 15.03 & 69.000 & 69.41 & 143.0 & 15.10 \\ - 300 & 57.989 & 58.31 & 142.5 & 15.03 & 71.158 & 71.57 & 143.0 & 15.10 \\ - 300 & 60.228 & 60.48 & 142.7 & 15.07 & 73.263 & 73.73 & 143.0 & 15.10 \\ - 300 & 62.476 & 62.64 & 142.9 & 15.08 & 75.371 & 75.86 & 143.0 & 15.10 \\ - 300 & 64.677 & 65.04 & 143.0 & 15.09 & 77.485 & 77.94 & 143.1 & 15.12 \\ - 300 & 66.858 & 67.24 & 143.0 & 15.10 & 79.518 & 79.76 & 143.1 & 15.12 \\ - 300 & 69.000 & 69.41 & 143.0 & 15.10 & 81.545 & 81.44 & 143.0 & 15.13 \\ - 300 & 71.158 & 71.57 & 143.0 & 15.10 & 83.514 & 83.01 & 143.0 & 15.13 \\ - 300 & 73.263 & 73.73 & 143.0 & 15.10 & 85.352 & 84.58 & 143.0 & 15.13 \\ - 300 & 75.371 & 75.86 & 143.0 & 15.10 & 87.211 & 87.33 & 143.0 & 15.13 \\ - 300 & 77.485 & 77.94 & 143.1 & 15.12 & 89.163 & 89.62 & 143.2 & 15.12 \\ - 300 & 79.518 & 79.76 & 143.1 & 15.12 & 91.131 & 91.25 & 143.2 & 15.12 \\ - 300 & 81.545 & 81.44 & 143.0 & 15.13 & 93.034 & 92.80 & 143.2 & 15.12 \\ - 300 & 83.514 & 83.01 & 143.0 & 15.13 & 94.883 & 94.32 & 143.2 & 15.12 \\ - 300 & 85.352 & 84.58 & 143.0 & 15.13 & 96.705 & 97.07 & 143.2 & 15.12 \\ - 300 & 87.211 & 87.33 & 143.0 & 15.13 & 98.624 & 98.98 & 143.2 & 15.12 \\ - 300 & 89.163 & 89.62 & 143.2 & 15.12 & 100.507 & 100.60 & 143.2 & 15.12 \\ - 300 & 91.131 & 91.25 & 143.2 & 15.12 & 102.369 & 102.58 & 143.2 & 15.12 \\ - 300 & 93.034 & 92.80 & 143.2 & 15.12 & 104.261 & 104.55 & 143.2 & 15.12 \\ - 300 & 94.883 & 94.32 & 143.2 & 15.12 & 106.138 & 106.44 & 143.2 & 15.12 \\ - \bottomrule -\end{longtblr} 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/12-python/.gitignore b/exercises-latex/12-python/.gitignore deleted file mode 100644 index b881d2fe..00000000 --- a/exercises-latex/12-python/.gitignore +++ /dev/null @@ -1 +0,0 @@ -data.txt diff --git a/exercises-latex/12-python/Makefile-loesung b/exercises-latex/12-python/Makefile-loesung deleted file mode 100644 index 66581d80..00000000 --- a/exercises-latex/12-python/Makefile-loesung +++ /dev/null @@ -1,32 +0,0 @@ -all: build/loesung.pdf - -build/loesung.pdf: FORCE $(addprefix build/loesung-, table.tex a.tex b.tex c.tex d.tex plot.pdf) | build - TEXINPUTS="$(call translate,build:)" \ - max_print_line=1048576 \ - latexmk \ - --lualatex \ - --output-directory=build \ - --interaction=batchmode \ - --halt-on-error \ - loesung.tex - -build/loesung-plot.pdf: loesung.py curve_fit.py data.txt loesung-matplotlibrc loesung-header-matplotlib.tex | build - MATPLOTLIBRC=loesung-matplotlibrc \ - TEXINPUTS="$$(pwd):" \ - python loesung.py - -$(addprefix build/loesung-, table.tex a.tex b.tex c.tex d.tex): build/loesung-plot.pdf - -data.txt: data.py - python $< - -build: - mkdir -p build - -clean: - rm -rf build - rm -f data.txt - -FORCE: - -.PHONY: all clean diff --git a/exercises-latex/12-python/aufgabe.txt b/exercises-latex/12-python/aufgabe.txt deleted file mode 100644 index 83546a64..00000000 --- a/exercises-latex/12-python/aufgabe.txt +++ /dev/null @@ -1,33 +0,0 @@ -Fitte die Daten aus `daten.txt` (t, U, U_err) mit der Funktion - - f(x) = a * sin(b * x + c) + d . - -Benutze dazu ucurve_fit aus der Datei `curve_fit.py`. -Geeignete Startwerte sind a=1, b=1e3, c=d=0. - -Plotte die Daten und die gefittete Funktion. -Verwende das pgf-Backend und eine matplotlibrc sowie die nötigen LaTeX-Pakete, -um die Beschriftung schön zu machen. - - -Teile die Daten dabei in zwei Spalten auf, damit die Tabelle nicht zu lang wird. - - -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. - -Nutze dazu die Funktion - - make_qty(num, unit, exp='', figures=None) . - -Dabei gibt num den Wert (mit Fehler) an. -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 Makefile, das alle Dateien neu erstellen kann. diff --git a/exercises-latex/12-python/curve_fit.py b/exercises-latex/12-python/curve_fit.py deleted file mode 100644 index bc67749b..00000000 --- a/exercises-latex/12-python/curve_fit.py +++ /dev/null @@ -1,27 +0,0 @@ -import numpy as np -import scipy.optimize -import uncertainties as unc -import uncertainties.unumpy as unp - - -def ucurve_fit(f, x, y, **kwargs): - """ - Uncertainties wrapper around curve_fit - y can be a uarray with uncertainties - and the parameters are returned as uncertainties.correlated_values - """ - if np.any(unp.std_devs(y) == 0): - sigma = None - else: - sigma = unp.std_devs(y) - - popt, pcov = scipy.optimize.curve_fit( - f, - x, - unp.nominal_values(y), - sigma=sigma, - absolute_sigma=True, - **kwargs, - ) - - return unc.correlated_values(popt, pcov) diff --git a/exercises-latex/12-python/data.py b/exercises-latex/12-python/data.py deleted file mode 100644 index ff63746c..00000000 --- a/exercises-latex/12-python/data.py +++ /dev/null @@ -1,13 +0,0 @@ -import numpy as np - -# Datenfile erzeugen -rng = np.random.default_rng(42) -N = 51 -data_x = np.linspace(0, 2 * np.pi, N) -error_y = rng.lognormal(-1, 0.2, size=N) -data_y = rng.normal(2 * np.sin(1.5 * data_x + np.pi / 4) + 0.5, error_y) -np.savetxt( - "data.txt", - np.column_stack([data_x, data_y, error_y]), - header="t/ms U/kV y_err/kV", -) diff --git a/exercises-latex/12-python/loesung-header-matplotlib.tex b/exercises-latex/12-python/loesung-header-matplotlib.tex deleted file mode 100644 index a5d01179..00000000 --- a/exercises-latex/12-python/loesung-header-matplotlib.tex +++ /dev/null @@ -1,16 +0,0 @@ -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} -\usepackage[ - per-mode=reciprocal, -]{siunitx} diff --git a/exercises-latex/12-python/loesung-header.tex b/exercises-latex/12-python/loesung-header.tex deleted file mode 100644 index de7b5acb..00000000 --- a/exercises-latex/12-python/loesung-header.tex +++ /dev/null @@ -1,49 +0,0 @@ -\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=reciprocal, - output-decimal-marker=., -]{siunitx} - -\usepackage{float} -\floatplacement{figure}{htbp} -\floatplacement{table}{htbp} - -\usepackage[ - labelfont=bf, - font=small, - width=0.9\textwidth, -]{caption} - -\usepackage{graphicx} -\usepackage{booktabs} - -\usepackage[ - unicode, -]{hyperref} -\usepackage{bookmark} diff --git a/exercises-latex/12-python/loesung-matplotlibrc b/exercises-latex/12-python/loesung-matplotlibrc deleted file mode 100644 index c0e846e0..00000000 --- a/exercises-latex/12-python/loesung-matplotlibrc +++ /dev/null @@ -1,12 +0,0 @@ -backend : pgf -figure.figsize : 5.78, 3.57 -figure.constrained_layout.use : True -font.family : serif -font.size : 11 -legend.fontsize : medium -xtick.labelsize : 9 -ytick.labelsize : 9 -pgf.rcfonts : False -text.usetex : True -pgf.texsystem : lualatex -pgf.preamble : \input{loesung-header-matplotlib.tex} diff --git a/exercises-latex/12-python/loesung.py b/exercises-latex/12-python/loesung.py deleted file mode 100644 index 75cbb184..00000000 --- a/exercises-latex/12-python/loesung.py +++ /dev/null @@ -1,103 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np -import uncertainties.unumpy as unp -from uncertainties.unumpy import ( - nominal_values as noms, - std_devs as stds, -) - -from curve_fit import ucurve_fit - - -def make_qty(num, unit, exp="", figures=None): - """Format an uncertainties ufloat as a \qty quantity""" - if np.any(stds([num])): - if figures is None: - figures = "" - x = "{0:.{1:}uf}".format(num, figures).replace("/", "") - else: - x = "{0:.{1:}f}".format(num, figures) - - return r"\qty{{{}{}}}{{{}}}".format(x, exp, unit) - - -t, U, U_err = np.genfromtxt("data.txt", unpack=True) -t *= 1e-3 -U = 1e3 * unp.uarray(U, U_err) - - -def f(t, a, b, c, d): - return a * np.sin(b * t + c) + d - - -params = ucurve_fit(f, t, U, p0=[1e3, 1e3, 0, 0]) - -t_plot = np.linspace(-0.5, 2 * np.pi + 0.5, 1000) * 1e-3 - -fig, ax = plt.subplots(1, 1, layout="constrained") - -ax.errorbar( - t * 1e3, - noms(U) * 1e-3, - yerr=stds(U) * 1e-3, - fmt="k_", - label="Daten", -) -ax.plot(t_plot * 1e3, f(t_plot, *noms(params)) * 1e-3, "-", label="Fit") -ax.set_xlim(t_plot[0] * 1e3, t_plot[-1] * 1e3) -ax.set_xlabel(r"$t \mathbin{/} \unit{\milli\second}$") -ax.set_ylabel(r"$U \mathbin{/} \unit{\kilo\volt}$") -ax.legend(loc="best") -fig.savefig("build/loesung-plot.pdf") - -t1, t2 = np.array_split(t * 1e3, 2) -U1, U2 = np.array_split(U * 1e-3, 2) - - -table_header = r""" - \begin{tabular}{ - S[table-format=1.3] - S[table-format=-1.2] - @{${}\pm{}$} - S[table-format=1.2] - @{\hspace*{3em}\hspace*{\tabcolsep}} - S[table-format=1.3] - S[table-format=-1.2] - @{${}\pm{}$} - S[table-format=1.2] - } - \toprule - {$t \mathbin{/} \unit{\milli\second}$} & \multicolumn{2}{c}{$U \:/\: \unit{\kilo\volt}$\hspace*{3em}} & - {$t \mathbin{/} \unit{\milli\second}$} & \multicolumn{2}{c}{$U \:/\: \unit{\kilo\volt}$} \\ - \midrule -""" - -table_footer = r""" \bottomrule - \end{tabular} -""" -row_template = ( - r" {0:1.3f} & {1.n:1.2f} & {1.s:1.2f} & {2:1.3f} & {3.n:1.2f} & {3.s:1.2f} \\" -) - - -with open("build/loesung-table.tex", "w") as f: - f.write(table_header) - for row in zip(t1, U1, t2, U2): - f.write(row_template.format(*row)) - f.write("\n") - f.write(table_footer) - - -a, b, c, d = params - -with open("build/loesung-a.tex", "w") as f: - f.write(make_qty(a * 1e-3, r"\kilo\volt")) - -with open("build/loesung-b.tex", "w") as f: - f.write(make_qty(b * 1e-3, r"\kilo\hertz")) - -with open("build/loesung-c.tex", "w") as f: - f.write(make_qty(c, "")) - -with open("build/loesung-d.tex", "w") as f: - f.write(make_qty(d * 1e-3, r"\kilo\volt")) diff --git a/exercises-latex/12-python/loesung.tex b/exercises-latex/12-python/loesung.tex deleted file mode 100644 index 79dcc94b..00000000 --- a/exercises-latex/12-python/loesung.tex +++ /dev/null @@ -1,35 +0,0 @@ -\input{loesung-header.tex} - -\begin{document} - -\section{Messwerte und Auswertung} - -Die Messdaten befinden sich in Tabelle~\ref{tab:data}. -Die Ergebnisse des Fits an die Funktion -\begin{equation} - U(t) = a \sin(b t + c) + d -\end{equation} -sind -\begin{align} - a &= \input{loesung-a.tex} \\ - b &= \input{loesung-b.tex} \\ - c &= \input{loesung-c.tex} \\ - d &= \input{loesung-d.tex} . -\end{align} -Die Messdaten und das Ergebnis des Fits sind in Abbildung~\ref{fig:plot} geplottet. - -\begin{table} - \centering - \caption{Messdaten.} - \label{tab:data} - \input{loesung-table.tex} -\end{table} - -\begin{figure} - \centering - \includegraphics{loesung-plot.pdf} - \caption{Messdaten und Fitergebnis.} - \label{fig:plot} -\end{figure} - -\end{document} diff --git a/exercises-latex/12-python/vorlage.py b/exercises-latex/12-python/vorlage.py deleted file mode 100644 index 535b0549..00000000 --- a/exercises-latex/12-python/vorlage.py +++ /dev/null @@ -1,21 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np -import uncertainties.unumpy as unp -from uncertainties.unumpy import ( - nominal_values as noms, - std_devs as stds, -) - -from curve_fit import ucurve_fit - - -def make_qty(num, unit, exp="", figures=None): - """Format an uncertainties ufloat as a \qty quantity""" - if np.any(stds([num])): - if figures is None: - figures = "" - x = "{0:.{1:}uf}".format(num, figures).replace("/", "") - else: - x = "{0:.{1:}f}".format(num, figures) - - return r"\qty{{{}{}}}{{{}}}".format(x, exp, unit) diff --git a/exercises-latex/13-tikz/Makefile-loesung b/exercises-latex/13-tikz/Makefile-loesung deleted file mode 100644 index 79add1c4..00000000 --- a/exercises-latex/13-tikz/Makefile-loesung +++ /dev/null @@ -1,57 +0,0 @@ -INTERACTION=batchmode - - -all: \ - build/loesung-pythagoras.pdf \ - build/loesung-nikolaus.pdf \ - build/loesung-bragg.pdf \ - build/loesung-circuitikz.pdf \ - build/loesung-mm-paper.pdf - - -build/loesung-pythagoras.pdf: loesung-pythagoras.tex | build - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-pythagoras.tex - - -build/loesung-mm-paper.pdf: loesung-mm-paper.tex | build - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-mm-paper.tex - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-mm-paper.tex - -build/loesung-nikolaus.pdf: loesung-nikolaus.tex | build - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-nikolaus.tex - -build/loesung-bragg.pdf: loesung-bragg.tex | build - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-bragg.tex - -build/loesung-circuitikz.pdf: loesung-circuitikz.tex | build - lualatex \ - --output-directory=build \ - --interaction=${INTERACTION} \ - --halt-on-error \ - loesung-circuitikz.tex - -build: - mkdir -p build - -clean: - rm -rf build diff --git a/exercises-latex/13-tikz/aufgabe.txt b/exercises-latex/13-tikz/aufgabe.txt deleted file mode 100644 index a8232922..00000000 --- a/exercises-latex/13-tikz/aufgabe.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Tikz-Aufgaben - -Tipps: -* Die Doku hat zahlreiche Beispiele -* Die Dokumentenklasse `standalone` ist gut geeignet - -## Aufgabe 1 - -Malt 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 - -Tipps: -* das Paket `geometry` und seine `margin` option -* Wie bekommt man die Seitenzahl weg? -* die tikz-Optionen `remember picture`, `overlay` und `shift` - -## Aufgabe 3 - -Guckt auch die Doku von `circuitikz` an, -und baut den Schaltplan für einen gedämpften Schwingkreis -mit -C = 1 µF -R = 50 Ω -L = 1 H - - -## Aufgabe 4 - -Stellt mithilfe von Tikz die Bragg-Bedingung dar. - -## Aufgabe 5 - -Zeichne eine Darstellung des Satz von Pythagoras mit Tikz - -Diese sollte folgende Elemente beinhalten -* Beschriftungen der Kanten und des rechten Winkels -* Die Flächen der Quadrate - diff --git a/exercises-latex/13-tikz/loesung-bragg.tex b/exercises-latex/13-tikz/loesung-bragg.tex deleted file mode 100644 index c9899d47..00000000 --- a/exercises-latex/13-tikz/loesung-bragg.tex +++ /dev/null @@ -1,49 +0,0 @@ -\RequirePackage{luatex85} -\documentclass{standalone} - -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} -\usepackage{tikz} - -\begin{document} - -\begin{tikzpicture} - \renewcommand\d{1cm} - \newcommand\ang{30} - - \foreach \y in {0, -\d} - { - \draw[thick, red] (0, \y) -- +(180-\ang: 4cm); - \draw[thick, red] (0, \y) -- +(\ang: 4cm); - } - - \tikzset{dot/.style={shape=circle,fill=black,scale=0.3}} - \draw[thick, blue] (270 - \ang: {cos(\ang)} * \d) -- (0, -\d) node[anchor=north east] {$\symup{\Delta}s$}; - - \foreach \y in {0, -\d} - { - \draw[dotted, thin] (-3.1, \y) -- (3.1, \y); - \foreach \x in {-3, -2, -1, 0, 1, 2, 3} - { - \node[dot] at (\x, \y) {}; - } - } - - \draw (5mm, 0) arc [start angle=0, end angle=\ang, radius=5mm]; - \node at (\ang/2: 8mm) {$θ$}; - \draw (0, 0) -- (270 - \ang: {cos(\ang)} * \d); - \draw (0, 0) -- (270 + \ang: {cos(\ang)} * \d); - \draw[dashed, thin] (0, 1) -- (0, -1*\d); - \draw[<->] (-2.5, 0) -- +(0, -\d) node[left, midway] {$d$}; -\end{tikzpicture} - -\end{document} diff --git a/exercises-latex/13-tikz/loesung-circuitikz.tex b/exercises-latex/13-tikz/loesung-circuitikz.tex deleted file mode 100644 index 684a342a..00000000 --- a/exercises-latex/13-tikz/loesung-circuitikz.tex +++ /dev/null @@ -1,37 +0,0 @@ -\RequirePackage{luatex85} -\documentclass[margin=5pt]{standalone} - -\usepackage[ngerman]{babel} - -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} - -\usepackage[ - locale=DE, -]{siunitx} - -\usepackage{tikz} -\usepackage[ - europeanresistors, % follow DIN - americaninductors, % foolow DIN, funny, isn't it? - siunitx, -]{circuitikz} - -\begin{document} - -\begin{tikzpicture} - \draw (0, 0) to[R=50<\ohm>] (4, 0) - to[C=1<\micro\farad>] (4, 4) - to[L=1<\henry>] (0, 4) -- (0, 0); -\end{tikzpicture} - -\end{document} diff --git a/exercises-latex/13-tikz/loesung-mm-paper.tex b/exercises-latex/13-tikz/loesung-mm-paper.tex deleted file mode 100644 index 259abaf4..00000000 --- a/exercises-latex/13-tikz/loesung-mm-paper.tex +++ /dev/null @@ -1,26 +0,0 @@ -\documentclass{scrartcl} - -\pagestyle{empty} -\usepackage[margin=1cm]{geometry} -\usepackage{xcolor} - -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} -\usepackage{tikz} - -\begin{document}% -\begin{tikzpicture}[remember picture, overlay, shift=(current page.north west)]% - \draw[step=1mm, black!10, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); - \draw[step=5mm, black!20, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); - \draw[step=10mm, black!30, very thin] (1cm, -1cm) grid +(\textwidth, -\textheight); -\end{tikzpicture}% -\end{document}% diff --git a/exercises-latex/13-tikz/loesung-nikolaus.tex b/exercises-latex/13-tikz/loesung-nikolaus.tex deleted file mode 100644 index 709a34b5..00000000 --- a/exercises-latex/13-tikz/loesung-nikolaus.tex +++ /dev/null @@ -1,32 +0,0 @@ -\RequirePackage{luatex85} -\documentclass{standalone} - -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} -\usepackage{tikz} - -\begin{document} - -\begin{tikzpicture} - \newcommand\len{2cm} - - \draw[rounded corners] (0, 0) -- ++(0, \len) - -- ++( \len/2, \len/2) - -- ++( \len/2, -\len/2) - -- ++(-\len, 0) - -- ++( \len, -\len) - -- ++(-\len, 0) - -- ++( \len, +\len) - -- ++( 0, -\len); -\end{tikzpicture} - -\end{document} diff --git a/exercises-latex/13-tikz/loesung-pythagoras.tex b/exercises-latex/13-tikz/loesung-pythagoras.tex deleted file mode 100644 index ed297d32..00000000 --- a/exercises-latex/13-tikz/loesung-pythagoras.tex +++ /dev/null @@ -1,38 +0,0 @@ -\RequirePackage{luatex85} -\documentclass{standalone} - -\usepackage{mathtools} -\usepackage{fontspec} -\usepackage[ - math-style=ISO, - bold-style=ISO, - sans-style=italic, - nabla=upright, - partial=upright, - mathrm=sym, -]{unicode-math} -\setmathfont{Latin Modern Math} -\usepackage{tikz} - -\begin{document} -\begin{tikzpicture} - \newcommand\width{3cm} - \newcommand\height{2cm} - - \coordinate (A) at (\width, \height); - \coordinate (B) at (0, 0); - \coordinate (C) at (\width, 0); - \coordinate (D) at (-\height, \width); - \coordinate (E) at (-\height + \width, \width + \height); - - \draw[thick] (A) -- (B) node[midway, below right] {$c$} - -- (C) node[midway, above] {$a$} - -- cycle node[midway, left] {$b$}; - \draw[dashed] (A) rectangle +(\height, -\height) node [pos=0.5] {$b^2$}; - \draw[dashed] (B) rectangle +(\width, -\width) node [pos=0.5] {$a^2$}; - \draw[dashed] (B) -- (D) -- (E) -- (A) -- cycle; - \path (B) -- (E) node[midway, anchor=center] {$c^2$}; - \draw (C) ++ (0, 3mm) arc [start angle=90, end angle=180, radius=3mm]; - \node[xshift=-1mm, yshift=1mm] at (C) {$\cdot$}; -\end{tikzpicture} -\end{document} diff --git a/exercises-latex/14-beamer/Makefile-loesung b/exercises-latex/14-beamer/Makefile-loesung deleted file mode 100644 index 916c43cc..00000000 --- a/exercises-latex/14-beamer/Makefile-loesung +++ /dev/null @@ -1,11 +0,0 @@ -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/14-beamer/aufgabe.txt deleted file mode 100644 index c0f4021a..00000000 --- a/exercises-latex/14-beamer/aufgabe.txt +++ /dev/null @@ -1,12 +0,0 @@ -Aufgabe 1: -Erstellt eine Präsentation mit: -* Titelseite mit 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 diff --git a/exercises-latex/14-beamer/loesung.tex b/exercises-latex/14-beamer/loesung.tex deleted file mode 100644 index 0a9adae9..00000000 --- a/exercises-latex/14-beamer/loesung.tex +++ /dev/null @@ -1,103 +0,0 @@ -\PassOptionsToPackage{unicode}{hyperref} -\PassOptionsToPackage{aux}{rerunfilecheck} - -\documentclass{beamer} - -\usefonttheme{professionalfonts} -\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[ - math-micro=µ, - locale=DE, -]{siunitx} - -\usetheme{Frankfurt} -\usecolortheme{seagull} -\setbeamertemplate{navigation symbols}{} - -\author{PeP et al.\ e.\,V.} -\institute{TU Dortmund} -\date{Toolbox-Workshop 2016} -\title{Beamer-Musterlösung} - -\begin{document} - -\begin{frame} - \maketitle -\end{frame} - -\begin{frame}{Übersicht} - \tableofcontents -\end{frame} - -\section{Toller Plot} - -\begin{frame}{Plot} - \begin{columns}[c, onlytextwidth] - \begin{column}{0.42\textwidth} - \includegraphics[width=\textwidth]{example-image-a} - \end{column} - \begin{column}{0.52\textwidth} - \begin{itemize} - \item Dies ist ein Beispielbild - \item Es kommt mit dem Paket \texttt{mwe} - \item Gut zum Testen - \end{itemize} - \end{column} - \end{columns} -\end{frame} - -\section{Maxwell-Gleichungen} - -\begin{frame}{Maxwell-Gleichungen} - \begin{columns}[t, onlytextwidth] - \begin{column}{0.45\textwidth} - \begin{block}{Maxwell I} - \begin{equation} - \nabla \cdot \symbf{E} = \frac{ρ}{ε_0} - \end{equation} - \end{block} - \end{column} - \begin{column}{0.45\textwidth} - \begin{block}{Maxwell II} - \begin{equation} - \nabla \cdot \symbf{B} = 0 - \end{equation} - \end{block} - \end{column} - \end{columns} - \begin{columns}[t, onlytextwidth] - \begin{column}{0.45\textwidth} - \begin{block}{Maxwell III} - \begin{equation} - \nabla \times \symbf{E} = - \partial_t \symbf{B} - \end{equation} - \end{block} - \end{column} - \begin{column}{0.45\textwidth} - \begin{block}{Maxwell IV} - \setlength{\abovedisplayskip}{0pt} - \begin{equation} - \nabla \times \symbf{B} = μ_0 \symbf{j} - μ_0 ε_0 \partial_t \symbf{E} - \end{equation} - \end{block} - \end{column} - \end{columns} -\end{frame} - -\end{document} 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 \ From 5a779731ba3c9d64d2d5a2a8ebe034f7883b050b Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 16:29:17 +0200 Subject: [PATCH 04/13] spellcheck python exercises --- .../1-python/2-average/aufgabe.txt | 4 +++- .../1-python/4-histogram/aufgabe.txt | 2 +- .../1-python/5-readwrite/aufgabe.txt | 4 +++- .../1-python/6-wordcount/aufgabe.txt | 4 +++- .../1-python/7-fstrings/aufgabe.txt | 18 +++++++++--------- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/exercises-toolbox/1-python/2-average/aufgabe.txt b/exercises-toolbox/1-python/2-average/aufgabe.txt index 394431c1..c3535df7 100644 --- a/exercises-toolbox/1-python/2-average/aufgabe.txt +++ b/exercises-toolbox/1-python/2-average/aufgabe.txt @@ -1,4 +1,6 @@ -Aufgabe: average +# Average + +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/4-histogram/aufgabe.txt b/exercises-toolbox/1-python/4-histogram/aufgabe.txt index 3a195be4..878a3294 100644 --- a/exercises-toolbox/1-python/4-histogram/aufgabe.txt +++ b/exercises-toolbox/1-python/4-histogram/aufgabe.txt @@ -14,5 +14,5 @@ X ******** ** -Tipp: Wenn man einen String mit einer Zahl n multipliziert, erhält einen neuen String, +Tipp: Wenn man einen String mit einer Zahl n multipliziert, erhält man einen neuen String, der den alten n mal enthält. diff --git a/exercises-toolbox/1-python/5-readwrite/aufgabe.txt b/exercises-toolbox/1-python/5-readwrite/aufgabe.txt index 1f80558b..bd14338e 100644 --- a/exercises-toolbox/1-python/5-readwrite/aufgabe.txt +++ b/exercises-toolbox/1-python/5-readwrite/aufgabe.txt @@ -1,4 +1,4 @@ -Aufgabe: read write +# read write Öffne die Python-Dokumentation unter @@ -9,6 +9,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/6-wordcount/aufgabe.txt b/exercises-toolbox/1-python/6-wordcount/aufgabe.txt index 3cad657c..4757bb72 100644 --- a/exercises-toolbox/1-python/6-wordcount/aufgabe.txt +++ b/exercises-toolbox/1-python/6-wordcount/aufgabe.txt @@ -1,4 +1,6 @@ -Aufgabe: wordcount +# wordcount + +Aufgabe: Die Beispieldatei "text.txt" enthält das erste Kapitel eines bekannten Kinderbuchs. Schreibe ein Python-Skript "wordcount.py", welches zählt wie oft jedes Wort im Text vorkommt. diff --git a/exercises-toolbox/1-python/7-fstrings/aufgabe.txt b/exercises-toolbox/1-python/7-fstrings/aufgabe.txt index bc8d88be..05c20952 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,14 +32,14 @@ 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 die +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 die Anführungszeichen eingetragen werden. Tipp: @@ -60,7 +60,7 @@ Neben der Ausgabe von Werten ist es mit f-strings auch möglich, die Werte selbst vor der Ausgabe zu formatieren. So lassen sich beispielsweise Dezimalzahlen auf eine angegebene Stelle runden. -Runde die Massen der Metalle vor dem ausgeben auf zwei Nachkommastellen. +Runde die Massen der Metalle vor dem Ausgeben auf zwei Nachkommastellen. Tipp: Formatierung für Variablenwerte gibt man nach einem Doppelpunkt an. @@ -72,6 +72,6 @@ print(f"{x:.5f}" Ausgabe: 123.45679 -Zu beachten ist, das hier beim runden nur die vierte Nachkommastelle verwendet -wird, um zu entscheiden ob aufgerundet wird. Wenn man die 8 mit einer 4 +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. From 59b617069d7fac8910ad526757c200baa2319467 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 16:40:10 +0200 Subject: [PATCH 05/13] grammar check numpy exercises --- exercises-toolbox/2-numpy/1-arrays/aufgabe.txt | 14 ++++++++------ exercises-toolbox/2-numpy/1-arrays/loesung.py | 2 +- exercises-toolbox/2-numpy/2-indexing/aufgabe.txt | 11 +++++++---- exercises-toolbox/2-numpy/2-indexing/loesung.py | 4 ++-- exercises-toolbox/2-numpy/2-indexing/vorlage.py | 4 ++-- exercises-toolbox/2-numpy/3-filter/aufgabe.txt | 4 +++- exercises-toolbox/2-numpy/4-gauss/aufgabe.txt | 4 +++- exercises-toolbox/2-numpy/5-functions/aufgabe.txt | 14 ++++++++------ exercises-toolbox/2-numpy/5-functions/loesung.py | 4 ++-- 9 files changed, 36 insertions(+), 25 deletions(-) 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 From 3be1721c09d32f1d60616415c1078d96912598b6 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 17:08:38 +0200 Subject: [PATCH 06/13] matplotlib grammar check --- exercises-toolbox/3-matplotlib/aufgaben_1--5.txt | 6 +++--- exercises-toolbox/3-matplotlib/aufgaben_6--7.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) 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. From 4d50cf935778a861e643ffb1c302d9794e9a349a Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 17:08:48 +0200 Subject: [PATCH 07/13] scipy grammar check --- exercises-toolbox/4-scipy/1-constants/aufgabe.txt | 4 +++- exercises-toolbox/4-scipy/2-linregress/aufgabe.txt | 4 ++++ exercises-toolbox/4-scipy/3-curve_fit/aufgabe.txt | 4 ++++ exercises-toolbox/4-scipy/4-peakdetect/aufgabe.txt | 6 +++++- exercises-toolbox/4-scipy/5-beugung/aufgabe.txt | 2 ++ 5 files changed, 18 insertions(+), 2 deletions(-) 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. From b0301b8358919f82bf008856c4fbf8d2fb3a574c Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 17:23:53 +0200 Subject: [PATCH 08/13] uncertainties grammar check --- exercises-toolbox/5-uncertainties/1-formel/aufgabe.txt | 2 ++ .../5-uncertainties/2-linregress/aufgabe.txt | 7 ++++++- .../5-uncertainties/3-curve_fit/aufgabe.txt | 7 ++++++- .../5-uncertainties/4-linleastsquares/Makefile | 5 ++++- .../4-linleastsquares/linleastsquares.tex | 10 +++++----- 5 files changed, 23 insertions(+), 8 deletions(-) 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} From 41995b8e9321f5da3643719c6b3120332caa45ff Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 17:24:12 +0200 Subject: [PATCH 09/13] grammar check of last exercises --- exercises-toolbox/6-make/aufgabe.txt | 6 ++- exercises-toolbox/7-git/aufgabe.txt | 4 +- .../303_Der_Lock-In-Verstaerker/aufgabe.txt | 10 +++- .../aufgabe.txt | 7 ++- .../8-all/406_Beugung_am_Spalt/I.txt | 53 ------------------- .../8-all/406_Beugung_am_Spalt/L.txt | 3 -- .../406_Beugung_am_Spalt/Makefile-loesung | 2 - .../8-all/406_Beugung_am_Spalt/aufgabe.txt | 17 ------ .../8-all/406_Beugung_am_Spalt/lambda.txt | 3 -- .../8-all/406_Beugung_am_Spalt/loesung.py | 37 ------------- .../702_Aktivierung_mit_Neutronen/aufgabe.txt | 7 ++- 11 files changed, 28 insertions(+), 121 deletions(-) delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/I.txt delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/L.txt delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/Makefile-loesung delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/aufgabe.txt delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/lambda.txt delete mode 100644 exercises-toolbox/8-all/406_Beugung_am_Spalt/loesung.py 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: From 10edd8c307696f4db70cd69d3ed1cd5a5c957289 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 18:01:19 +0200 Subject: [PATCH 10/13] matplotlib notebook, grammar check --- python/matplotlib.ipynb | 77 +++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 38 deletions(-) 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, From c592e1163b784bac51117c86c529bdf0b988bb2e Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 18:15:36 +0200 Subject: [PATCH 11/13] numpy notebook grammar check --- python/numeric-python.ipynb | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) 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, From c4a5f1fa8c6245cf7a3ffb98f98e41a5bc8ccc11 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 18:32:36 +0200 Subject: [PATCH 12/13] python notebook grammar check --- python/python.ipynb | 88 ++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/python/python.ipynb b/python/python.ipynb index d2d634e1..84c1fb2a 100644 --- a/python/python.ipynb +++ b/python/python.ipynb @@ -6,7 +6,7 @@ "source": [ "![Python](https://www.python.org/static/community_logos/python-logo-generic.svg)\n", "\n", - "- Aktuelle Version: Python 3.10\n", + "- Aktuelle Version: Python 3.11\n", "- *Interpretierte* Programmiersprache\n", " - Kein Kompilieren\n", " - Programme werden mit dem `python`-Programm ausgeführt\n", @@ -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 Anaconda installiert" + "Weitere Module hast du in deiner `toolbox` Umgebung 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." ] }, @@ -1716,9 +1714,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." ] }, { @@ -1747,10 +1745,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`" ] }, { @@ -1771,10 +1768,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'` " ] }, { @@ -1796,15 +1792,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", @@ -1842,9 +1838,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." ] }, { @@ -1977,9 +1973,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." ] } ], @@ -2000,7 +1996,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.3" + "version": "3.10.11" } }, "nbformat": 4, From 77356a9c78a3c51ed5ca67d801a6368ed339c665 Mon Sep 17 00:00:00 2001 From: Christian Beckmann Date: Wed, 13 Sep 2023 18:39:17 +0200 Subject: [PATCH 13/13] scipy, uncertainties, sympy grammar check --- python/scientific-python.ipynb | 31 ++++++++++++------------------- python/uncertainties.ipynb | 15 +++++++-------- 2 files changed, 19 insertions(+), 27 deletions(-) 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,