我正在尝试使用 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}