我正在尝试在 tikzpicture 中创建一个分段图。尝试模拟此答案中的示例绘制分段函数对我来说不起作用,而且我不明白为什么这段代码不起作用。
\documentclass[11pt, letterpaper]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
declare function={
func(\x)= (\x<=0) * ((0.5)*exp(\x)) +
and(\x>0) * (1-(0.5)*exp(-\x))
;
}
]
\begin{axis}[
axis x line=middle, axis y line=middle,
ymin=0, ymax=1, ytick={0,0.5,1}, ylabel=$F_{X-Y}(t)$,
xmin=-5, xmax=5, xtick={-5,...,5}, xlabel=$t$,
]
\addplot[blue, domain=-5:5, smooth]{func(x)};
\end{axis}
\end{tikzpicture}
\end{document}
任何帮助将不胜感激!
答案1
欢迎!您and
只使用一个参数进行调用,在我看来(但我可能错了)您and
根本不想要。(您也可以将函数更改为仅使用abs
和sign
函数,请参阅afunc
定义。)
\documentclass[11pt, letterpaper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[
declare function={
func(\x)= (\x<=0) * ((0.5)*exp(\x)) +
(\x>0) * (1-(0.5)*exp(-\x));
afunc(\x)=0.5*(1+sign(\x)-sign(\x)*exp(-abs(\x)));
}
]
\begin{axis}[
axis x line=middle, axis y line=middle,
ymin=0, ymax=1, ytick={0,0.5,1}, ylabel=$F_{X-Y}(t)$,
xmin=-5, xmax=5, xtick={-5,...,5}, xlabel=$t$,
]
\addplot[blue, domain=-5:5, smooth]{func(x)};
\addplot[red, domain=-5:5, smooth,dashed,thick]{afunc(x)};
\end{axis}
\end{tikzpicture}
\end{document}
当然,该函数也可以用 来近似tanh
。
\documentclass[11pt, letterpaper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[
declare function={
func(\x)= (\x<=0) * ((0.5)*exp(\x)) +
(\x>0) * (1-(0.5)*exp(-\x));
}
]
\begin{axis}[
axis x line=middle, axis y line=middle,
ymin=0, ymax=1, ytick={0,0.5,1}, ylabel=$F_{X-Y}(t)$,
xmin=-5, xmax=5, xtick={-5,...,5}, xlabel=$t$,
]
\addplot[blue, domain=-5:5, smooth]{func(x)};
\addplot[red, domain=-5:5, smooth,dashed,thick]{0.5*tanh(x/1.5)+0.5};
\end{axis}
\end{tikzpicture}
\end{document}