tikz 中的绘图变得参差不齐,应该平滑一些

tikz 中的绘图变得参差不齐,应该平滑一些

我尝试使用 tikz 绘制一个函数。但是,当我稍微更改一个参数时,它看起来很糟糕(见下面的代码)。该函数只是一个 6 次多项式。我做错了什么?

可以更改的参数是\s。如果是,0.8我会收到一个Dimension too large!我也不明白的错误。

第一张图片的参数\s0.75。第二张图片的参数为0.65,平滑得多,但仍然很糟糕。

在此处输入图片描述在此处输入图片描述

(这个参数的原因是,最后我想为该参数的不同值绘制该函数。)

\documentclass{article} 
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[domain=0:1,scale=3]
\def \d {3};
\draw[->] (0,0) -- (1,0); %axis
\draw[->] (0,0) -- (0,1);
\draw[color=black,domain=0:1] plot[samples=100](\x,{\x});
\pgfmathsetmacro{\s}{0.75}; %the closer to 0.8, the worse (smaller = better)
\draw[color=black,domain=\s:1] plot[samples=100](\x,{\x*pow(\x-(2*\s-1),\d)*pow(\x-1,\d)/(pow(1-\s,\d)*pow(\s-1,\d))});
\end{tikzpicture}
\end{document}

答案1

您还可以使用该fpu库来获得更高的精度。

\documentclass{standalone} 
\usepackage{tikz}
\usetikzlibrary{fpu}
\begin{document}
\begin{tikzpicture}[domain=0:1,scale=3,
  /pgf/fpu,/pgf/fpu/output format=fixed  % activate fpu for tikzpicture
  ]
\def \d {3};
\draw[->] (0,0) -- (1,0); %axis
\draw[->] (0,0) -- (0,1);
\draw[color=black,domain=0:1] plot[samples=100](\x,{\x});
\pgfmathsetmacro{\s}{0.75}; %the closer to 0.8, the worse (smaller = better)
\draw[color=black,domain=\s:1] plot[samples=100](\x,{\x*pow(\x-(2*\s-1),\d)*pow(\x-1,\d)/(pow(1-\s,\d)*pow(\s-1,\d))});
\end{tikzpicture}
\end{document}

答案2

这只是部分答案:这似乎是一个数值问题。tikz 的算法精度似乎很低。重新排列多项式中的项以增加表达式的稳定性,结果曲线更加平滑。基本上,我将表达式a^d / b^d 改为(a/b)^d

\pgfmathsetmacro{\s}{0.8};
\draw[color=black,domain=\s:1] plot[samples=100](\x,{\x*pow((\x-(2*\s-1))/(1-\s),\d)*pow((\x-1)/(\s-1),\d)});

相关内容