我正在尝试使用 tikz 绘制一个函数。不幸的是,我无法使用 pgfplot,因为当我打开 pgfplot 包时,它会与 tikz 使用的现有 latex 绘图和绘图代码发生冲突。以下是代码,
\begin{tikzpicture}
\draw[->] (-3,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-3) -- (0,4.2) node[above] {$y$};
\draw[scale=0.7,domain=-3:3,smooth,variable=\x,blue] plot ({\x}, {1/(1+exp((-\x)/0.6))});
\end{tikzpicture}
当我想锐化曲线的步长时,我只需将数字 0.6 减小到 0.2 或其他值。但是,当我将此功能设置为 0.2 时,我收到错误消息,表示尺寸太大。可以使用 tikz 修复它吗?
答案1
\documentclass{article}
\usepackage{tikz}
\begin{document}
You wish to plot
\[f(x)~=~\frac{1}{1+\exp(-x/\alpha)}~=~\frac{1}{1+\exp(-2a\,x)}\]
with $a=1/(2\alpha)$. However,
\[f(x)~=~\frac{\exp(a\,x)}{\exp(a\,x)+\exp(-a\,x)}
~=~\frac{1}{2}\,\frac{\cosh(a\,x)+\sinh(a\,x)}{\cosh(a\,x)}
~=~\frac{1}{2}\,\left[1+\tanh(a\,x)\right]\;.\]
\begin{tikzpicture}
\draw[->] (-3,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-3) -- (0,4.2) node[above] {$y$};
\draw[scale=0.7,domain=-3:3,smooth,variable=\x,blue] plot ({\x},
{exp(2.5*\x)/(exp(2.5*\x)+exp(-2.5*\x))});
\end{tikzpicture}
\begin{tikzpicture}
\draw[->] (-3,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-3) -- (0,4.2) node[above] {$y$};
\draw[scale=0.7,domain=-3:3,smooth,variable=\x,red] plot ({\x},
{0.5*(1+tanh(2.5*\x))});
\end{tikzpicture}
\end{document}
答案2
我找到了一个解决方案来修复之前的问题问题已发布。我根据自己的问题对其进行了调整,重新缩放了轴以更好地查看图表,增加了采样率以使图表更平滑,并根据他们的解决方案添加了额外的代码。这是代码。
\documentclass{article}
\usepackage{tikz}
\usepackage{expl3}
\ExplSyntaxOn
\cs_set_eq:NN \fpeval \fp_eval:n
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
\draw[->] (-3,0) -- (3.5,0) node[right] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[above] {$y$};
\draw[samples=400,scale=1,domain=-3:3,smooth,variable=\x,blue] plot ({\x}, {\fpeval{1/(1+exp((-\x+1)/0.01))}});
\end{tikzpicture}
\end{document}
这是 $\alpha=0.6$ 的结果,
这是 $\alpha=0.01$ 的结果,