TikZ 中 ln 函数出现奇怪的数值异常

TikZ 中 ln 函数出现奇怪的数值异常

尽管钛Z 手册明确指出,不应期望 PGF 的数学库非常精确,绘制函数时存在不连续性,ln我发现异常地很大(不连续性发生在参数值 0.125 附近,大约为 0.03,这在图上非常明显——即使不是专门为显示错误而制作的图!)。更奇怪的是,当绘图值的密度变得足够高时,错误就会消失!请参阅以下 MWE 及其结果:

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=500cm, y=50cm, thick]
\foreach \x in {0.120, 0.122, 0.124, 0.126, 0.128, 0.130}
 \draw (\x, -2.13) -- +(0, -4pt) node[below]{\x};
\foreach \y in {-2.12, -2.10, -2.08, -2.06, -2.04, -2.02}
 \draw (0.119, \y) -- +(-4pt, 0) node[left]{\y};
\draw[green] plot[domain=0.12:0.13, samples=95] (\x, {ln(\x)});
\draw[red] plot[domain=0.12:0.13, samples=94] (\x, {ln(\x)});
\end{tikzpicture}
\end{document}

编译结果显示 TikZ 绘图 ln 函数存在数值错误

有人可以解释一下发生了什么吗……?

答案1

我不知道这话从何而来,但是,最近的(适用于 3.1.8b,不适用于 3.1.5b) TiZ/PGF 您可以使用以下fpu版本ln

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{fpu}
\begin{document}
\begin{tikzpicture}[x=500cm, y=50cm, thick, /pgf/fpu/install only={ln}]
\foreach \x in {0.120, 0.122, 0.124, 0.126, 0.128, 0.130}
 \draw (\x, -2.13) -- +(0, -4pt) node[below]{\x};
\foreach \y in {-2.12, -2.10, -2.08, -2.06, -2.04, -2.02}
 \draw (0.119, \y) -- +(-4pt, 0) node[left]{\y};
\draw[green] plot[ domain=0.12:0.13, samples=95] (\x, {ln(\x)});
\draw[red] plot[ domain=0.12:0.13, samples=94] (\x, {ln(\x)});
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容