我使用 Tikz 绘制了以下函数图表。
这没问题,只是我希望函数等于 0 而不是负值。因此我尝试使用“max(0,f(x))”,其中 f(x) 是我的函数(如下所示):
\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (4,4);
\draw[
samples=100,
fixed point arithmetic,
scale=1.3,domain=0.001:4,smooth,variable=\x,blue] plot
({\x},{max(0,(\x*(0.005*\x)^0.5-0.005)/((0.33*\x+(0.005*\x)^0.5)))});
\end{tikzpicture}
\end{document}
但此代码无法运行。我做错了什么?
答案1
删除fixed point arithmetic
应该可以确保你得到你想要的。因为,当你指定约束时fixed point
,max(.)
假设它的域是整数(我认为)。但是,你的函数返回实值。因此,这将导致内部矛盾,因此你会看到错误。如果你现在删除约束,一切都应该如你所愿。下面是该MWE
问题的基础解决方案。
\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{fp}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (4,4);
\draw[
samples=100,
scale=1.3,domain=0.001:4,smooth,variable=\x,blue] plot ({\x},{max(0,(\x*(0.005*\x)^0.5-0.005)/((0.33*\x+(0.005*\x)^0.5)))});
\end{tikzpicture}
\end{document}
这将给你:
答案2
使用ifthenelse
条件,无论有没有 ,结果都是好的fixed point arithmetic
。我猜这支持@marmot对该max
功能的询问。
按照@marmot 的建议,我还重新定义了该max
函数,以Max(x,y)
避免ifthenelse
重复测试该函数。
\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\begin{document}
\tikzset{declare function={Max(\X,\Y)=ifthenelse(\X>\Y,\X,\Y);}}
\begin{tikzpicture}
\draw (0,0) rectangle (4,4);
\draw[
samples=100,
fixed point arithmetic,
scale=1.3,domain=0.001:4,
smooth,
variable=\x,blue] plot
({\x},{Max(((\x*(0.005*\x)^0.5-0.005)/((0.33*\x+(0.005*\x)^0.5))),
0)});
\end{tikzpicture}
\end{document}