pgf 图:缺失数字,视为零

pgf 图:缺失数字,视为零

我正在尝试cos(ln(x))使用绘图pgfplots但是我得到了这个我无法弄清楚的奇怪错误。

以下是我的 MWE:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xmin = 1, xmax = 2]

\addplot[blue, samples=50]{ ln(x)             };
\addplot[red, samples=50]{ cos(deg(x))        };

\addplot[green, samples=50]{ cos(deg(ln(x))   };

\end{axis}
\end{tikzpicture}
\end{document}

错误来自行:\addplot[green, samples=50]{ cos(deg(ln(x)) };并且如下:

第 14 行:缺失数字,视为零。...ot[green, samples=50]{ cos(deg(ln(x)) };

第 14 行:非法测量单位(插入 pt)。...ot[green, samples=50]{ cos(deg(ln(x)) };

我很困惑,因为绘图ln(x)cos(deg(x))没有返回任何错误。并且ln(x)在 1 到 2 上表现得非常好...

答案1

出现错误是因为您尝试计算cos(deg(ln(x)))的负值x,其中 的解ln(x)是复数,并且ln(0)是 -∞ ( -inf)。它似乎deg可以处理这些值,但cos实际上却不能,原因我不知道。

之所以不会出现问题,是ln(x)因为pgfplots的初始设置为unbounded coords=discard,这意味着如果它的计算结果为 ±∞(+inf-inf)或 为nan(“不是数字”),它会丢弃该值。这对 不起作用cos(deg(ln(x))),因为您尝试计算cos(nan)cos(-inf),这就是为什么只在最后一个图中出现错误的原因。

发生这种情况是因为您没有domain为绘图指定,这意味着它将使用默认域-5:5

domain=1:2因此,通过在轴上指定(或仅限于最后一个图):

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xmin = 1, xmax = 2,domain=1:2]

\addplot[blue, samples=50]{ ln(x)             };
\addplot[red, samples=50]{ cos(deg(x))        };
\addplot[green, samples=50]{ cos(deg(ln(x)))  };

\end{axis}
\end{tikzpicture}
\end{document}

输出

相关内容