# Nur `pgfplots`
Mit einigen verschachtelten `\foreach` kann man leicht summieren.
\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{mathtools,pgfplots}
\begin{document}
\begin{align*}
f(x) &=
\begin{cases*}
-1 & f\"ur $-\frac12<x<0$ \\
1 & f\"ur $0\le x<\frac12$ \\
\end{cases*} \\
S_N(f)(x) &= \sum_{m=1}^N \frac4\pi \frac{\sin((2m-1)\pi x)}{2m-1}
\end{align*}
\begin{tikzpicture}
\begin{axis}[
no markers,
samples=100,
smooth,
domain=-1.2:1.4,
axis lines=middle,
width=\linewidth
]
\pgfplotsinvokeforeach{1,...,4}{
\xdef\sn{}
\foreach \m in {1,...,#1} {
\xdef\sn{\sn+4/pi*sin(deg((2*\m-1)*pi*x))/(2*\m-1)}
}
\expandafter\addplot\expandafter{\sn};
\addlegendentry{$S_{#1}(f)(x)$};
}
\begin{scope}[
every node/.style = {draw,fill=blue,circle,inner sep=1pt}
]
\draw (axis cs:0,1) node[label={[blue]above right:A}] {} -- (axis cs:0.5,1) node[label={[blue]above right:B}] {};
\draw (axis cs:0,-1) node[label={[blue]above right:C}] {} -- (axis cs:-0.5,-1) node[label={[blue]above right:E}] {};
\end{scope}
\end{axis}
\end{tikzpicture}
\end{document}
> ![alt text][1]
# `pgfplots` mit `gnuplot`
Dieses muss mit `--shell-escape` gesetzt werden. Die Ausgabe wird nicht nochmal gezeigt, da sie gleich aussieht.
\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{mathtools,pgfplots}
\begin{document}
\begin{align*}
f(x) &=
\begin{cases*}
-1 & f\"ur $-\frac12<x<0$ \\
1 & f\"ur $0\le x<\frac12$ \\
\end{cases*} \\
S_N(f)(x) &= \sum_{m=1}^N \frac4\pi \frac{\sin((2m-1)\pi x)}{2m-1}
\end{align*}
\begin{tikzpicture}
\begin{axis}[
no markers,
smooth,
axis lines=middle,
width=\linewidth
]
\pgfplotsinvokeforeach{1,...,4}{
\addplot gnuplot[raw gnuplot] {plot[-1.2:1.4] sum[m=1:#1] (4/pi*sin((2*m-1)*pi*x)/(2*m-1))};
}
\end{axis}
\end{tikzpicture}
\end{document}
# Anwendungsfall
Mit dem Paket `subcaption` kann man leicht mehrere Bilder nebeneinander anordnen und wenn man die `\foreach`-Schleife außen rum baut, spart man sich noch viel Schreibarbeit.
\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{mathtools,pgfplots,subcaption}
\begin{document}
\begin{align*}
f(x) &=
\begin{cases*}
-1 & f\"ur $-\frac12<x<0$ \\
1 & f\"ur $0\le x<\frac12$ \\
\end{cases*} \\
S_N(f)(x) &= \sum_{m=1}^N \frac4\pi \frac{\sin((2m-1)\pi x)}{2m-1}
\end{align*}
\begin{figure}
\centering
\foreach \N in {1,...,3} {
\begin{subfigure}{0.49\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[
no markers,
samples=100,
smooth,
domain=-1.2:1.4,
axis lines=middle,
width=\linewidth,
]
\xdef\sn{}
\foreach \m in {1,...,\N} {
\xdef\sn{\sn+4/pi*sin(deg((2*\m-1)*pi*x))/(2*\m-1)}
}
\expandafter\addplot\expandafter{\sn};
\begin{scope}[
every node/.style = {draw,fill=blue,circle,inner sep=1pt}
]
\draw (axis cs:0,1) node {} -- (axis cs:0.5,1) node {};
\draw (axis cs:0,-1) node {} -- (axis cs:-0.5,-1) node {};
\end{scope}
\end{axis}
\end{tikzpicture}
\caption{$S_{\N}(f)(x)$}
\end{subfigure}
}
\caption{Entwicklung in Partialsummen.}
\end{figure}
\end{document}
> ![alt text][2]
---
# Nur `pgfplots`
Zum Spaß mal für N = 1,2,3,...,100. Laut dem Unix-Tool `time` dauert der Aufruf
time pdflatex plot.tex
bei folgenden Rechner-Spezifikationen
Model Identifier: iMac13,1
Processor Name: Intel Core i5
Processor Speed: 2.7 GHz
Number of Processors: 1
Total Number of Cores: 4
Memory: 8 GB
stolze 14 Minuten und 51 Sekunden, sieht aber cool aus :-)
> ![alt text][2]
text][3]
[1]: http://texwelt.de/wissen/upfiles/r_2.png
[2]: http://texwelt.de/wissen/upfiles/r_4.png
[3]: http://texwelt.de/wissen/upfiles/r_3.png