在 tikz 中声明函数

在 tikz 中声明函数

我正在尝试使用 pgfplots 绘制一个复杂函数declare function。由于它无法编译,我试图解决这个问题。似乎当我从另一个函数定义一个函数时,它会产生问题。以下是说明该问题的最小示例。有人能帮帮我吗?

以下代码可以编译:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[
    declare function = {
      U1(\x,\b) = \b * \x - 0.5 ;
      P(\x, \b) = U1(\x, \b) ;
    }
  ]
  \begin{axis}
    \addplot {U1(x,2)} ;
  \end{axis}
\end{tikzpicture}
\end{document}

但以下代码无法编译:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[
    declare function = {
      U1(\x,\b) = \b * \x - 0.5 ;
      P(\x, \b) = U1(\x, \b) ;
    }
  ]
  \begin{axis}
    \addplot {P(x,2)} ;
  \end{axis}
\end{tikzpicture}
\end{document}

错误信息是

! Illegal parameter number in definition of \pgfmathfloat@expression.
<to be read again>
                   \crcr
l.12     \addplot {P(x,2)} ;

答案1

您必须删除以下空格P(\x, \b) = ...

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[
    declare function = {
      U1(\x,\b) = \b * \x - 0.5 ;
      P(\x,\b) = U1(\x, \b) ; % <------ space removed
    }
  ]
  \begin{axis}
    \addplot {P(x,2)} ;
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容