.png)
Ich versuche, die Grafik in Tikz zu zeichnen f(x)=x*cos(1/x)
und verwende den folgenden Code:
\documentclass[10pt]{article}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\draw[->,color=black] (-0.45754230805133705,0.0) -- (0.6210968701809529,0.0);
\foreach \x in {-0.4,-0.30000000000000004,-0.20000000000000004,-0.10000000000000003,0.19999999999999998,0.3,0.4,0.5,0.6}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
\draw[->,color=black] (0.0,-0.340872843559345) -- (0.0,0.38634286875659907);
\foreach \y in {-0.30000000000000004,-0.20000000000000004,-0.10000000000000003,0.19999999999999998,0.3}
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
\draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$};
\clip(-0.45754230805133705,-0.340872843559345) rectangle (0.6210968701809529,0.38634286875659907);
\draw[smooth,samples=100,domain=-0.45754230805133705:0.6210968701809529] plot(\x,{(\x)*\sigma\upsilon\nu((1.0/(\x))*180/pi)});
\end{tikzpicture}
\end{document}
Es lässt sich jedoch nicht kompilieren. Ich vermute, das Problem liegt darin, dass die Funktion nicht bei Null definiert ist. Den obigen Code habe ich von Geogebra erhalten. Irgendwelche Ideen? Ich hätte gerne den vollständigen Code!
Antwort1
Ich würde den Plot einfach mit dem pgfplots
Paket erstellen, das auf folgendem aufbaut, pgf
aber eine „natürlichere“ Schnittstelle zum Plotten bietet:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples = 1000]
\addplot[mark = none] {x * cos ( 180 / ( x / pi ) ) };
\end{axis}
\end{tikzpicture}
\end{document}
Ich musste die Beispiele hier hochladen, sonst sind nicht genügend Details vorhanden: Ich bin nicht ganz sicher, welchen Teil der Handlung Sie eigentlich wollen!
(Beachten Sie, dass das pgf
mathematische System Winkel in Grad erwartet, sodass ich wie im automatisch generierten Code in der Frage einen Wert im Bogenmaß umrechnen musste x
.)
Das Verschieben der Achsen von einer „Box“ (üblicher wissenschaftlicher Plotstil) in die Mitte (üblicher für das Plotten von Formeln) und das „Vergrößern“ können relativ einfach erreicht werden.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines = middle, domain = -1:1, samples = 1000]
\addplot[mark = none] {x * cos ( 180 / ( x / pi ) ) };
\end{axis}
\end{tikzpicture}
\end{document}
Antwort2
Eine Just-for-Fun-Lösung mit PSTricks.
\documentclass[pstricks,border=20pt,12pt,dvipsnames]{standalone}
\usepackage{pst-plot}
\def\f{x*cos(1/x)}
\begin{document}
\begin{psgraph}[algebraic,Dx=0.025,Dy=0.01,plotpoints=1000]{->}(0,0)(-.1,-.1)(.1,.1){15cm}{!}
\psplot[linecolor=Red]{-.1}{-0.005}{\f}
\psplot[linecolor=Red]{0.005}{.1}{\f}
\end{psgraph}
\end{document}
Vergrößerte Animation
\documentclass[pstricks,border=20pt,12pt,dvipsnames]{standalone}
\usepackage{pst-plot}
\usepackage[nomessages]{fp}
\def\f{x*cos(1/x)}
\begin{document}
\foreach \i in {1.5,1.4,...,0.1}{%
\FPeval\D{round(\i/5:2)}%
\begin{psgraph}[algebraic,Dx=\D,Dy=\D,plotpoints=1000]{->}(0,0)(-\i,-\i)(\i,\i){20cm}{!}
\psplot[linecolor=Red]{-\i}{\D\space 10 div neg}{\f}
\psplot[linecolor=Red]{\D\space 10 div}{\i}{\f}
\end{psgraph}}
\end{document}