Das Problem ist, dass `\foreach` grouping ist, `\addplot` aber nicht gruppiert sein darf (Warum steht irgendwo im Manual, kann mich aber gerade nicht erinnern). Es gibt zum einen die Alternative `\pgfplotsforeachungrouped` was die gleiche Syntax wie `\foreach` hat und `\pgfplotsinvokeforeach` bei dem man *keine* Iterationsvariable hat, sondern `#1` im Schleifenkörper verwendet. Der Vorteil daran ist, dass es keinerlei Expansion bedarf um den Iteratiosschritt zu bekommen. Daher verwende ich das fast immer.
Statt den Wert von `k` an die Kurven zu schreiben würde ich sie lieber unterschiedlich einfärben (ich habe einen Gradient von rot nach blau gewählt) und eine Legende machen. Das erspart viele Kopfschmerzen, die eine unterschiedliche Positionierung für jedes verschiedene `k` mit sich gebracht hätte.
> Hat jemand eine Idee für einen gescheiten Maßstab, so dass die Kurven 'kurviger' werden?
Keine Ahnung, was hier gemeint ist. Damit die Kurven glatter werden dreht man einfach `samples` hoch, aber `samples=200` ist schon ziemlich viel. Zusätzlich kann man die geplotteten Punkte statt mit geraden Linien mit Splines verbinden indem man die Option `smooth` mitgibt.
\documentclass{article}
\pagestyle{empty}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=$x$,ylabel=$y$,
samples=200,domain=-2:2,
ymin=-10, ymax=10,
xmax=2,
restrict y to domain=-10:10,
axis lines=middle,
legend pos=outer north east
]
\pgfplotsinvokeforeach{1,...,5}{
\addplot+[mark=none,blue!\the\numexpr(#1-1)*25\relax!red] {x^(#1+2) - x^(#1+1) -1};
\addlegendentry{$k = #1$};
}
\end{axis}
\end{tikzpicture}
\end{document}
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/test_135.pnghttp://texwelt.de/wissen/upfiles/test_136.png