diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex | 155 |
1 files changed, 116 insertions, 39 deletions
diff --git a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex index 61c566ce3b7..b5c1a3903a7 100644 --- a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex +++ b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex @@ -85,7 +85,9 @@ Dieselbe Gleichung \emph{ohne} Nummerierung kann übrigens mit der \texttt{equat \setlength{\fboxsep}{2mm} \fbox{% \begin{minipage}{0.9\textwidth} -Man beachte, dass \textbf{Gleichungen} inhaltlich ein \textbf{Teil des Texts} sind und daher neben der sprachliche \textbf{Überleitung} auch die \textbf{Interpunktion} (wie in Gl.\ \ref{eq:MyFirstEquation} gezeigt) beachtet werden muss. Bei Unsicherheiten sollte man sich passende Beispiele in einem guten Mathematik\-buch ansehen. +Man beachte, dass \textbf{Gleichungen} inhaltlich ein \textbf{Teil des Texts} sind und daher neben der sprachlichen +\textbf{Überleitung} auch die \textbf{Interpunktion} (wie in Gl.\ \ref{eq:MyFirstEquation} gezeigt) beachtet werden muss. +Bei Unsicherheiten sollte man sich passende Beispiele in einem guten Mathematik\-buch ansehen. \end{minipage}} \end{center} % @@ -355,92 +357,167 @@ manueller Nacharbeit) in das eigene \latex-Dokument übernommen werden. \section{Algorithmen} -Für die Beschreibung von Algorithmen in mathematischer Form oder auch für +Die algorithmische Darstellung ist ein wichtiges Mittel zur präzisen Beschreibung von +Berechnungsabläufen. Durch die Verwendung von \emph{mathematischer Notation} (Symbolen und Operatoren) +einerseits und den aus der Programmierung gewohnten \emph{Ablaufstrukturen} (Entscheidungen, Schleifen, +Prozeduren \etc) sind Algorithmen ein bewährtes Bindeglied zwischen der mathematischen Formulierung +und dem zugehörigen Programmcode. + +Ein wesentlicher Aspekt der algorithmischen Beschreibung -- die idealerweise der Implementierung +zumindest strukturell möglichst ähnlich sein sollte -- ist die weitgehende +\emph{Unabhängigkeit} von einer spezifischen Programmiersprache. +Dadurch ergibt sich eine bessere Lesbarkeit, breitere Anwendbarkeit und erhöhte Nachhaltigkeit +(möglicherweise über die Lebensdauer einer Programmiersprache hinaus). +Bei der Formulierung von Algorithmen sollte man \ua\ folgendes beachten:% +\footnote{Siehe auch \url{http://mirror.easyname.at/ctan/macros/latex/contrib/algorithms/algorithms.pdf} +(Abschnitt~7).} +%% +\begin{itemize} +\item +Verwende in Algorithmen die gleichen kurze Symbole (wie $a, i, x, S, \alpha \ldots$), wie man sie auch in mathematischen Definitionen und Gleichungen verwendet. +\item +Verwende nach Möglichkeit mathematische Operatoren, wie \zB\ +$=$ (\verb!$=$!) statt \texttt{==}, +$\leq$ (\verb!$\leq$!) statt \texttt{<=}, +$\cdot$ (\verb!$\cdot$!) statt \texttt{*}, +$\wedge$ (\verb!$\wedge$!) statt \texttt{\&\&}, +\usw +\item +Verwende keine Elemente oder Syntax einer spezifischen Programmiersprache +(\zB\ ist ein "`\texttt{;}"' am Ende einer Anweisung unnötig). +\item +Wenn ein Algorithmus für eine Seite zu lang wird, überlege, wie man ihn +sinnvoll auf kleinere Module aufteilen kann (meist ist dann auch die zugehörige +Programmstruktur nicht optimal). +\end{itemize} + + +Für die Notation von Algorithmen in mathematischer Form oder auch für Pseudo\-code ist in \latex selbst keine spezielle Unterstützung vorgesehen. -Dazu gibt es jedoch eine Reihe von \latex-Paketen (\zB\ \texttt{algorithms}, -\texttt{algorithmicx}, \texttt{algorithm2e}). +Dazu gibt es jedoch eine Reihe von \latex-Paketen, \zB\ \texttt{algorithms}, +\texttt{algorithm2e} und \texttt{algorithmicx}. +Letzteres wird wegen seiner einfachen Syntax auch in dieser Vorlage verwendet, +allerdings mit einigen Erweiterungen.% +\footnote{Die Datei \nolinkurl{hgbalgo.sty} des Hagenberg-Pakets erweitert die Pakete +\texttt{algorithmicx} und \texttt{algpseudocode} (s.\ \url{https://ctan.org/pkg/algorithmicx}) +durch verbesserte Einrückung, Farben \etc Weitere Details finden sich in +\url{http://mirrors.ctan.org/macros/latex/contrib/hagenberg-thesis/doc/hagenberg-thesis.pdf}.} Das Beispiel in Alg.~\ref{alg:Example} wurde mit der Float-Umgebung \texttt{algorithm} -und dem \texttt{algorithmicx}-Paket ausgeführt -(Quellcode in Prog.~\ref{prog:AlgExample}). - +und dem \texttt{algpseudocode}-Paket ausgeführt (s.\ Quellcode in Prog.\ \ref{prog:AlgExample}). +Umfangreichere Beispiele für Algorithmen mit einem ähnlichen Setup finden sich \zB\ in +\cite{BurgerBurge2015}. %%-------------------------------------------------------------------- -\begin{algorithm}[tbp] -\caption{Bikubische Interpolation in 2D. - $w_{\mathrm{cub}}()$ in Zeile \ref{alg:wcub} bezeichnet die - eindimensionale kubische Interpolationsfunktion.} +\begin{algorithm} +\caption{Beispiel für einen mit \texttt{algorithmicx} (\texttt{algpseudocode} + \texttt{hgbalgo}) +gesetzten Algorithmus zur bikubischen Interpolation in 2D. Die in den Zeilen \ref{alg:wcub1} und +\ref{alg:wcub2} verwendete Funktion $\Call{Cubic1D}{x}$ berechnet die Gewichtung +des Werts für die eindimensionale Position $x$.} \label{alg:Example} \begin{algorithmic}[1] % [1] = all lines are numbered -\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{$x,y \in \R$} - \Statex Returns the interpolated value of the image $I$ - at the continuous position $(x, y)$. +\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{two-dimensional interpolation} + \Input{$I$, original image; $x,y \in \R$, continuous position; $a$, control para\-meter.} + \Returns{the interpolated pixel value at the continuous position $(x,y)$.} + \smallskip \State $\mathit{val} \gets 0$ \For{$j \gets 0, \ldots, 3$} \Comment{iterate over 4 lines} \State $v \gets \lfloor y \rfloor - 1 + j$ \State $p \gets 0$ - \For{$i \gets 0, \ldots, 3$} \Comment{iterate over 4 columns} \State $u \gets \lfloor x \rfloor - 1 + i$ - \State $p \gets p + I(u,v) \cdot w_{\mathrm{cub}}(x - u )$ - \label{alg:wcub} - \EndFor + \State $p \gets p + I(u,v) \cdot \Call{Cubic1D}{x - u}$ % w_{\mathrm{cub}}(x - u )$ + \label{alg:wcub1} + \EndFor + \StateNN[2]{Sometimes it is useful to insert a longer, \emph{unnumbered} explanation extending + over multiple lines with proper indentation. This can be done with the (non-standard) command + \texttt{{\bs}StateNN[]\{..\}}. There is also a \texttt{{\bs}StateL\{..\}} command for long + \emph{numbered} (multi-line) statements.} - \State $\mathit{val} \gets \mathit{val} + p \cdot w_{\mathrm{cub}}(y - v)$ + \State $\mathit{val} \gets \mathit{val} + p \cdot \Call{Cubic1D}{y - v}$ + \label{alg:wcub2} \EndFor - \State\Return $\mathit{val}$ - \EndProcedure + +\medskip +\hrule +\medskip + +\Function{Cubic1D}{$x$} \Comment{piecewise cubic polynomial (1D)} + \State $z \gets 0$ + \If{$|x| < 1$} + \State $z \gets |x|^3 - 2 \cdot |x|^2 + 1$ + \ElsIf{$|x| < 2$} + \State $z \gets -|x|^3 + 5 \cdot |x|^2 - 8 \cdot |x| + 4$ + \EndIf + \State\Return{$z$} +\EndFunction + \end{algorithmic} \end{algorithm} %%-------------------------------------------------------------------- -Weitere Details finden sich im Quelltext und natürlich in der Dokumentation der verwendeten Pakete. -Umfangreichere Beispiele für Algorithmen mit diesem Setup finden sich \ua\ in \cite{BurgerBurge2015}. - \begin{program} -\caption{Quellcode zu Algorithmus \ref{alg:Example} (mit \texttt{algorithmicx}). +\caption{Quellcode zu Algorithmus \ref{alg:Example}. Wie ersichtlich, können hier auch beliebig Leerzeilen verwendet werden, was die Lesbarkeit deutlich verbessert.} \label{prog:AlgExample} \begin{LaTeXCode}[numbers=none] \begin{algorithm} -\caption{Bikubische Interpolation in 2D. - $w_{\mathrm{cub}}()$ in Zeile \ref{alg:wcub} bezeichnet die - eindimensionale kubische Interpolationsfunktion.} +\caption{Beispiel für einen mit \texttt{algorithmicx} ... } \label{alg:Example} \begin{algorithmic}[1] % [1] = all lines are numbered -\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{$x,y \in \R$} - \Statex Returns the interpolated value of the image $I$ - at the continuous position $(x, y)$. +\Procedure{BicubicInterpolation}{$I, x, y$} + \Comment{two-dimensional interpolation} + \Input{$I$, original image; $x,y \in \R$, continuous position; + $a$, control para\-meter.} + \Returns{the interpolated pixel value at the continuous position $(x,y)$.} + \smallskip \State $\mathit{val} \gets 0$ - \For{$j \gets 0, \ldots, 3$} \Comment{iterate over 4 lines} \State $v \gets \lfloor y \rfloor - 1 + j$ \State $p \gets 0$ - \For{$i \gets 0, \ldots, 3$} \Comment{iterate over 4 columns} \State $u \gets \lfloor x \rfloor - 1 + i$ - \State $p \gets p + I(u,v) \cdot w_{\mathrm{cub}}(x - u )$ - \label{alg:wcub} + \State $p \gets p + I(u,v) \cdot \Call{Cubic1D}{x - u}$ + \label{alg:wcub1} \EndFor - \State $\mathit{val} \gets - \mathit{val} + p \cdot w_{\mathrm{cub}}(y - v)$ + \StateNN[2]{Sometimes it is useful to insert a longer, ...} + + \State $\mathit{val} \gets \mathit{val} + p \cdot \Call{Cubic1D}{y - v}$ + \label{alg:wcub2} \EndFor - \State\Return $\mathit{val}$ - \EndProcedure + +\medskip\hrule\medskip + +\Function{Cubic1D}{$x$} \Comment{piecewise cubic polynomial (1D)} + \State $z \gets 0$ + \If{$|x| < 1$} + \State $z \gets |x|^3 - 2 \cdot |x|^2 + 1$ + \ElsIf{$|x| < 2$} + \State $z \gets -|x|^3 + 5 \cdot |x|^2 - 8 \cdot |x| + 4$ + \EndIf + \State\Return{$z$} +\EndFunction + \end{algorithmic} \end{algorithm} \end{LaTeXCode} \end{program} +%%-------------------------------------------------------------------- + + + + + |