为什么两个具有不同名称的相同函数定义会产生两个不同的图?

为什么两个具有不同名称的相同函数定义会产生两个不同的图?

在下面的代码片段中,我本来期望和r(x)s(x)同一行,但输出是两条截然不同的线如下图所示

在此处输入图片描述

如果使用该名称作为函数名存在问题r,那么我本来期望出现某种错误消息,但却没有找到。

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\pgfmathdeclarefunction{r}{1}{\pgfmathparse{(2.0)}}
\pgfmathdeclarefunction{s}{1}{\pgfmathparse{(2.0)}}

\tikzstyle{MyPlotStyle}=[domain=-5:5, samples=50, ultra thick]

\begin{document}
Plot of $r(x)=2$ and $s(x)=2$ using PGF Version \pgfversion.

\begin{tikzpicture}
  \begin{axis}
    \addplot[MyPlotStyle, red ]{r(x)};
    \addplot[MyPlotStyle, blue]{s(x)};
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

在 中pgfmathparser.code.texr被定义为应用函数的数学运算符deg,以便能够以弧度指定角度(\pgfmathparse{3.14r}\pgfmathresult产生(几乎)180),因此您不应该将此名称用于您自己的函数。不过,我同意,如果您尝试使用已经被运算符占用的名称定义新函数,应该会出现错误消息,特别是因为运算符似乎优先。您可能希望为此提交错误报告/功能请求。

相关内容