答案1
最简单的解决方案是绘制两条抛物线,一条倒置,然后将它们都剪下来,只显示线上方的部分:
\documentclass[border=3.14,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-5,0)--(5,0);
\begin{scope}
\clip (-5,0) rectangle (5,6);
\draw (-4,6) parabola bend (0,-2) (4,6);
\draw (-4,-6) parabola bend (0,2) (4,-6);
\end{scope}
\end{tikzpicture}
\end{document}
答案2
另一个简单的解决方案是使用plot
函数并相应地定义抛物线:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-5,0)--(5,0);
\draw[semithick, red] plot [domain=-2:2] (2*\x,{abs(\x*\x-1)});
\end{tikzpicture}
\end{document}
编辑:
或者在选项中声明函数tikzpicture
并使用 200 个样本而不是默认数量(如果我没记错的话,是 30):
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function = {f(\x)={abs(\x*\x-1)};}
]
\draw (-5,0) -- (5,0);
\draw[semithick, red] plot [domain=-2:2, samples=200] (2*\x,{f(\x)});
\end{tikzpicture}
\end{document}
答案3
这真的只是为了好玩。你能制造 Ti钾Z 自动将抛物线(或任何您绘制的图形)反映在 x 轴上。这可以通过安装非线性变换来实现,在这种情况下这特别简单。
\documentclass[tikz,border=3mm]{standalone}
\usepgfmodule{nonlineartransformations}
\makeatletter
\def\yreflect{%
\pgfmathsetmacro{\myy}{abs(\pgf@y)}%
\pgf@y=\myy pt}
\begin{document}
\begin{tikzpicture}
\begin{scope}[transform shape nonlinear=true]
\pgftransformnonlinear{\yreflect}
\draw (-5,0)--(5,0);
\draw (-4,6) parabola bend (0,-2) (4,6);
\end{scope}
\end{tikzpicture}
\end{document}
可以看出,存在小的差距,所以解决方案并不像Skillmon 的解决方案。