Graph von x*cos(1/x)

Graph von x*cos(1/x)

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 pgfplotsPaket erstellen, das auf folgendem aufbaut, pgfaber 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 pgfmathematische 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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

verwandte Informationen