Problema ao usar atan em pgfplots

Problema ao usar atan em pgfplots

Estou tentando plotar algo usando atan no pgfplots, mas sempre resulta em centenas de erros.

Estou usando um exemplo que encontrei aqui:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\pgfplotsset{compat=1.9}
\begin{tikzpicture}
\begin{axis}[
     width=160pt,compat=1.5.1,grid style={ultra thin},every axis plot post/.append style={thick},
     x tick label style={font=\tiny},y tick label style={font=\tiny},
     scale only axis,grid=major,axis lines=middle,
     xlabel={$x$},
     ylabel={$y$},
     xmin=-200,
     xmax=200,
     domain=-200:210,
     ymin=-5.5,
     ymax=5.5,
     xtick={-150,-100,...,150},
     ytick={-5, -4,...,5},
     restrict y to domain=-20:20,
     legend style={at={(0.5,-0.05)},anchor=north,nodes={right}},
 ]
 \addplot[mark=none,color=blue, samples=500]{rad(atan(x))};
 \addlegendentry{$y = \tan^{-1}x $};
 \end{axis}
\end{tikzpicture}

\end{document}

Os erros são:

! Undefined control sequence.
<recently read> \pgfmath@multiply@thousand 

l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Undefined control sequence.
\pgfmath@basic@atan@ ... pt \pgfmath@table@lookup 
                                                  {\pgfmath@x }{pgfmath@atan...
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Missing number, treated as zero.
<to be read again> 
                   }
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

E isso continua indefinidamente. Mais de cem erros e então ele para de compilar sem nenhum resultado. O que estou fazendo de errado aqui?

Responder1

De acordo com seu arquivo de log, você tem pgfplots1.11 e pgf2.10 . Posso reproduzir o problema nesta combinação.

Funciona com ambos os pacotes atualizados (ou seja, pgfplots1.11 e pgf3.00).

Funciona com pgfplots1.10 e pgf2.10.

As alternativas de soluções para você são:

  1. atualize o PGF para 3.00 ou

  2. fazer downgrade do pgfplots para 1.10 ou

  3. usar \addplot ... gnuplot {atan(x)};por enquanto.

EDITARAcontece que este problema é na verdade pior do que o previsto: os relatórios emSequência de controle indefinida: \pgfmath@multiply@thousandeMiktex 2.9 pgfplots, problema de colisão da biblioteca circuitikzparecem ter a mesma causa raiz.

A causa raiz é a pgfplotstentativa de corrigir a versão antiga do PGF; mas esse patch não é aplicado (ou seja, é um bug no pgfplots).

Para contornar isso, você pode proceder de acordo com a opção (1) ou (2). Ou você pode adicionar as linhas

% HACK: deactivate feature 'trig format' but restore compatibility
% between pgfplots 1.11 and tikz 2.10:
\csname pgfutil@ifundefined\endcsname{pgfmathiftrigonometricusesdeg}{%
    \def\pgfmathiftrigonometricusesdeg#1#2{#1}%
}{}%

antescarregando pgfplots. Neste caso, assumirá que tudo está atualizado e não tentará aplicar o patch quebrado. Risco de aplicar este patch: o recurso trig format plotsintroduzido no pgfplots1.11 não funcionará. Mas eventualmente (provavelmente com a versão que virá depois do PGF 3.0.0).

informação relacionada