使用声明函数绘制分段函数

使用声明函数绘制分段函数

我正在尝试绘制分段定义函数,但不知何故我无法正确绘制。见下文。

上面是要绘制的函数,下面是失败的绘制。

我使用以下代码

\begin{tikzpicture}[
declare function={
func(\x)=(\x >8/10) * (6/10* \x) +
 and(\x > 0.6,\x <= 0.8)* (6/9* \x )    + 
            (\x<=0.6) * (\x*6/8);
}
]
\begin{axis}[xmin=0,xmax=1,
              ymin=0,ymax=1,
              x dir=reverse]
\addplot[]{func(x)};
\end{axis}
\end{tikzpicture}

我的理解是,and(cond,cond)当两个条件都成立时,结果为 1,否则为 0。那么,我声明的函数难道不正确吗?我看到第一部分是正确的。但我不明白为什么它后面没有像预期的那样跳转。我也不明白为什么在 0.4 而不是 0.6 处出现扭结。

我期望函数会减少(因为我反转了 x 轴)并在 0.8 和 0.6 处向上跳跃。我做错了什么?

我遇到了同样的问题

\pgfmathdeclarefunction{func}{1}{% \pgfmathparse{...

提前致谢!

答案1

您没有做错任何事。只是您使用了默认样本编号和默认域。调整它们即可得到结果。

\begin{tikzpicture}[
declare function={func(\x)=(\x>0.8)*(0.6*\x)+and(\x>0.6,\x<=0.8)*(2/3*\x)+(\x<=0.6)*(\x*0.75);}
]
\begin{axis}[xmin=0,xmax=1,samples=351,domain=0:1,
              ymin=0,ymax=1,
              x dir=reverse]
\addplot[]{func(x)};
\end{axis}
\end{tikzpicture}

在此处输入图片描述

相关内容