\documentclass[12pt]{article}

\usepackage{german}
\usepackage[utf8]{inputenc} % erlaubt direkte Nutzung von Umlauten im TeX dokument
\usepackage{hyperref}

\usepackage[intlimits]{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}

\usepackage{pgfplots}
\usepackage{pgfplotstable} % fuer numeriktabellen

\author{Christian Feuersänger}
\title{Hilfreiches für Programmieraufgaben}

\begin{document}

\maketitle
\begin{abstract}
	Für Programmieraufgaben muss man oft Tabellen erstellen, nachverarbeiten und vielleicht auch als Plot visualisieren.

	Hiermit zeige ich eine mögliche Lösung auf, die sehr gut mit dem Werkzeug \LaTeX\ zusammen funktioniert, frei verfügbar ist und auch für \LaTeX\ Diplomarbeiten später von Nutzen sein kann (nicht nur in der Numerik).
\end{abstract}
\tableofcontents

\section{Tabellen und Postprocessing mit pgfplotstable}

\paragraph{Eingabe:} eine (Konvergenz-) Tabelle,  tab-separiert mit spaltennamen.
\hrule
\begin{verbatim}
# pgfplotstable.example1.dat :
# Convergence results
# fictional source, generated 2008
level   dof     error1  error2  
1       4       2.50000000e-01  7.57858283e-01 
2       16      6.25000000e-02  5.00000000e-01 
3       64      1.56250000e-02  2.87174589e-01 
4       256     3.90625000e-03  1.43587294e-01 
5       1024    9.76562500e-04  4.41941738e-02 
6       4096    2.44140625e-04  1.69802322e-02 
7       16384   6.10351562e-05  8.20091159e-03 
8       65536   1.52587891e-05  3.90625000e-03 
9       262144  3.81469727e-06  1.95312500e-03 
10      1048576 9.53674316e-07  9.76562500e-04 
\end{verbatim}
\hrule

\paragraph{Ausgabebeispiel:} Zwei der Tabellenspalten, dazu zwei generierte Spalten für die Raten
\[ c_i := \log_2 \left( \frac{e_{i-1}}{e_i} \right): \]


\hrule
\begin{verbatim}
\usepackage{pgfplotstable}
...

\pgfplotstabletypeset[
    create on use/rate1/.style={create col/dyadic refinement rate={error1}},
    create on use/rate2/.style={create col/dyadic refinement rate={error2}},
    columns={error1,error2,rate1,rate2},
]
    {pgfplotstable.example1.dat}
\end{verbatim}

\hrule

\pgfplotstabletypeset[%
    create on use/rate1/.style={create col/dyadic refinement rate={error1}},
    create on use/rate2/.style={create col/dyadic refinement rate={error2}},
    columns={error1,error2,rate1,rate2},
]
    {pgfplotstable.example1.dat}

\paragraph{Beispiele und Dokumentation:} \url{http://pgfplots.sourceforge.net/pgfplotstable.pdf}

\paragraph{Installation in Windows:} Mik\TeX\ und \verb|\usepackage{pgfplotstable}|.

\paragraph{Installation in Linux:} siehe Dokumentation.



\section{Plotten mit pgfplots}
Oft brauch man irgendwelche Plots. In der Numerik sind das vor allem Konvergenzresultate. Wenn man 
\[ \text{error} = O(\text{dof}^{\alpha}) = c\cdot \text{dof}^{\alpha} \]
erwartet, gilt
\[ \log ( \text{error} ) = \alpha \log( \text{dof} ) + \log c, \]
d.h.\ im Doppel--Logarithmischen Plot erwartet man eine Gerade mit Steigung~$\alpha$.

\vspace{0.2cm}
\hrule
\begin{verbatim}
\usepackage{pgfplots}
...

\begin{tikzpicture}
\begin{loglogaxis}[xlabel=Dof,ylabel=$L_2$ error]
	\addplot table[x=dof,y=error1] {pgfplotstable.example1.dat};
\end{loglogaxis}
\end{tikzpicture}
\end{verbatim}
\hrule
\vspace{1cm}

\begin{tikzpicture}
\begin{loglogaxis}[xlabel=Dof,ylabel=$L_2$ error]
	\addplot table[x=dof,y=error1] {pgfplotstable.example1.dat};
\end{loglogaxis}
\end{tikzpicture}

\paragraph{Beispiele und Dokumentation:} \url{http://pgfplots.sourceforge.net/pgfplots.pdf}
\paragraph{Installation in Windows:} Mik\TeX\ und \verb|\usepackage{pgfplots}|.

\paragraph{Installation in Linux:} siehe Dokumentation.
\end{document}
