![在 tikz 中绘制 S 型函数及其导数](https://linux22.com/image/398147/%E5%9C%A8%20tikz%20%E4%B8%AD%E7%BB%98%E5%88%B6%20S%20%E5%9E%8B%E5%87%BD%E6%95%B0%E5%8F%8A%E5%85%B6%E5%AF%BC%E6%95%B0.png)
我使用以下 tikz 代码创建了 S 型函数图:
\documentclass{minimal}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}%
[
grid=major,
xmin=-6,
xmax=6,
axis x line=bottom,
ytick={0,.5,1},
ymax=1,
axis y line=middle,
]
\addplot%
[
blue,%
mark=none,
samples=100,
domain=-6:6,
]
(x,{1/(1+exp(-x))});
\end{axis}
\end{tikzpicture}
\end{document}
是否可以使用红色虚线将 S 型函数的导数添加到图形中,并在两条线的右上角添加图例,而无需离开 tikz 环境?
S 型函数:σ = 1/(1+exp(-x))
导数:σ(x)(1−σ(x)
答案1
可以说最方便的方法是使用declare function
键声明函数,然后绘制它们。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={sigma(\x)=1/(1+exp(-\x));
sigmap(\x)=sigma(\x)*(1-sigma(\x));}]
\begin{axis}%
[
grid=major,
xmin=-6,
xmax=6,
axis x line=bottom,
ytick={0,.5,1},
ymax=1,
axis y line=middle,
samples=100,
domain=-6:6,
legend style={at={(1,0.9)}}
]
\addplot[blue,mark=none] (x,{sigma(x)});
\addplot[red,dotted,mark=none] (x,{sigmap(x)});
\legend{$\sigma(x)$,$\sigma'(x)$}
\end{axis}
\end{tikzpicture}
\end{document}