tikz用plot画图象报错dimension too large

发布于 2022-03-18 10:25:55

代码如下:
begin{tikzpicture}
draw[smooth,domain=0:2,samples=300]
plot(x,{pow(0.2+0.003pow(10,x)+0.0030.00056*pow(100,x),-1)});
end{tikzpicture}
函数体是没有问题的,定义域domain如果在较小时能正常编译,如0:2,
但是增加到0:2.2便会报错dimension too large,而我需要画到0:6.5
请问这为什么会报错,以及如何实现我的画图目标
谢谢

查看更多

关注者
0
被浏览
2k
芒果不盲
芒果不盲 2022-03-18
学好TiKZ和tcolorbox!
  • 首先,提问请提供完整的最小工作示例,即包含文档类,导言区,正文区等等
  • 其次,代码请用代码块包裹起来,具体用法请了解 md 语法
  • 你的问题报错 Dimension too large,是的, tikz(或者说tex里面的dimexpr) 本身算不了这么大的数值
  • 猜测 plot 是在你的 domain = x:y 中,按 samples = 300, 等距离取点(或许是),然后光滑曲线连接起来即可.
  • 也就所说,如下代码
...
\draw[] plot[domain = 0:1,samples = 10] plot(\x,2*\x);
...

其实就是在取点 (0,0),(0.1,0.2),(0.2,0.4),..., 然后连接即可

  • 问题在于 tikz 算不了那么大的数值,我们可以改用 l3fp 来为其作计算,这里直接使用 xfp 包提供的\fpeval 命令,代码如下
\documentclass[margin = 1cm]{standalone}
\usepackage{tikz,xfp}
\begin{document}
\begin{tikzpicture}[x = 0.2cm,very thin]
  \draw[-latex] (-1,0) -- (5,0);
  \draw[-latex] (0,-0.2) -- (0,1.5);
  \draw [blue]
  plot [domain=0:4.25, samples=144, smooth] (\x,\fpeval{1/(1+0.015*10^{\x})});
\end{tikzpicture}
\end{document}

1.png


当然,你也可以选择 tkz-fct 宏包,它是借助 gnuplot 来绘图的,所以你的电脑必须装有这个软件,并且需要启用 --shell-escape 参数编译,代码如下

\documentclass[margin = 1cm]{standalone}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=1.2,ystep=0.2]
\tkzAxeXY
\tkzFct[color=blue,domain=0:6.5]{1/(1+0.015*10**x)}  
\end{tikzpicture}
\end{document}

2.png

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览