pgfplots による関数のプロットに関する問題 (Takagi 関数)

pgfplots による関数のプロットに関する問題 (Takagi 関数)

私は、合計すると次のようになるステップ関数をプロットしようとしています。高木関数最初のステップ関数のグラフは正常ですが、2 番目のグラフは失敗しています。下の MWE を参照してください (最初のグラフは黒、2 番目のグラフは赤)。どうすれば修正できますか?

\documentclass[border=5mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{pgfplots}

\tikzset{
declare function={Floor(\x)=round(\x-0.5);},
declare function={Ceil(\x)=round(\x+0.5);},
declare function={Distance(\x)=min(\x-Floor(\x),Ceil(\x)-x);},
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={at={(0.5,-0.2)},anchor=north}
]

\addplot [
mark=none,
domain=0.0001:2,
samples=500,
smooth,
thick,black,
] {Distance(x)};
\addlegendentry{$x\mapsto \varphi(x)
  :=\min\{x-\lfloor x\rfloor,\lceil x\rceil-x\}
:=\operatorname{dist}(x,\mathbb{Z})$}

\addplot [
mark=none,
domain=0.00001:2,
samples=500,
smooth,
thick,red,
] {Distance(2*x)/2};
\addlegendentry{$x\mapsto \frac{1}{2}\varphi(2x)$}
\end{axis}
\end{tikzpicture}
\end{document} 

ここに画像の説明を入力してください

答え1

\x関数の定義の最後にバックスラッシュを忘れただけですDistance。また、コメントで述べたように、と はpgfmathすでに定義されているため、自分で定義する必要はありません。floorceil

\documentclass[border=5mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{pgfplots}

\tikzset{
declare function={Distance(\x)=min(\x-floor(\x),ceil(\x)-\x);},
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={at={(0.5,-0.2)},anchor=north}
]

\addplot [
mark=none,
domain=0.0001:2,
samples=500,
smooth,
thick,black,
] {Distance(x)};
\addlegendentry{$x\mapsto \varphi(x)
  :=\min\{x-\lfloor x\rfloor,\lceil x\rceil-x\}
:=\operatorname{dist}(x,\mathbb{Z})$}

\addplot [
mark=none,
domain=0.00001:2,
samples=500,
smooth,
thick,red,
] {Distance(2*x)/2};
\addlegendentry{$x\mapsto \frac{1}{2}\varphi(2x)$}
\end{axis}
\end{tikzpicture}
\end{document} 

ここに画像の説明を入力してください

関連情報