Gráfico de x*cos(1/x)

Gráfico de x*cos(1/x)

Estou tentando desenhar no tikz o gráfico f(x)=x*cos(1/x)e estou usando o seguinte código:

\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}

No entanto, ele não compila. Acho que o problema é que a função não está definida em zero. O código acima me foi fornecido pelo Geogebra. Alguma ideia? Gostaria de ter o código completo!

Responder1

Eu simplesmente faria a plotagem usando o pgfplotspacote, que se baseia, pgfmas é uma interface mais 'natural' para plotagem:

\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}

Eu precisava aumentar as amostras aqui, caso contrário não há detalhes suficientes: não tenho certeza de que parte da trama você realmente está procurando!

(Observe que o pgfsistema matemático espera ângulos em graus, assim como no código gerado automaticamente na pergunta, tive que converter de um valor xem radianos.)

Mover os eixos de uma 'caixa' (estilo de plotagem científica comum) para central (mais comum para traçar fórmulas) e 'aumentar o zoom' pode ser alcançado com relativa facilidade

\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}

Responder2

Uma solução divertida com 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}

insira a descrição da imagem aqui

Animação ampliada

\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}

insira a descrição da imagem aqui

informação relacionada