我正在尝试绘制一条双曲线,但由于某种原因,它在图中留下了一个漏洞,而我不知道是什么原因造成的:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[blue!50!black] plot[domain=(1/sqrt(2)):2,smooth,thick,samples=100] (\x,{sqrt(2*(\x*\x)-1)});
\draw[blue!50!black] plot[domain=-2:(-1/sqrt(2)),smooth,thick,samples=100] (\x,{sqrt(2*(\x*\x)-1)});
\draw[blue!50!black] plot[domain=(1/sqrt(2)):2,smooth,thick,samples=100] (\x,{-sqrt(2*(\x*\x)-1)});
\draw[blue!50!black] plot[domain=-2:(-1/sqrt(2)),smooth,thick,samples=100] (\x,{-sqrt(2*(\x*\x)-1)});
\end{tikzpicture}
\end{document}
答案1
为什么存在差距的答案是
因为 LaTeX 不是计算机代数系统。
所以我们必须帮助Ti钾Z 做正确的事。无论如何,如果我们想要一条平滑、连续的曲线,我们可能希望用一笔画出每个组件。这可以通过选择不同的参数化来实现,例如
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[blue!50!black] plot[domain=-2:2,smooth,thick,samples=101]
({(1/sqrt(2))+abs(\x)},{sign(\x)*sqrt(2*\x*\x+2*sqrt(2)*abs(\x))});
\draw[blue!50!black] plot[domain=-2:2,smooth,thick,samples=101]
({-(1/sqrt(2))-abs(\x)},{sign(\x)*sqrt(2*\x*\x+2*sqrt(2)*abs(\x))});
\end{tikzpicture}
\end{document}
也许更简单的重新参数化是
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[blue!50!black] plot[domain=-4:4,smooth,thick,samples=101]
({sqrt(1/2+\x*\x/2)},\x);
\draw[blue!50!black] plot[domain=-4:4,smooth,thick,samples=101]
({-sqrt(1/2+\x*\x/2)},\x);
\end{tikzpicture}
\end{document}
答案2
类似这样的方法可能会被使用
\documentclass{standalone} % or whatever
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,
xmax=2,
samples=101,
unbounded coords=jump,
axis lines=middle,
]
\begin{scope}[
domain=-2:-1/sqrt(2),
]
\addplot[smooth] {sqrt(2*(\x*\x)-1)};
\addplot[smooth] {-sqrt(2*(\x*\x)-1)};
\end{scope}
\begin{scope}[
domain=1/sqrt(2):2,
]
\addplot[smooth] {sqrt(2*(\x*\x)-1)};
\addplot[smooth] {-sqrt(2*(\x*\x)-1)};
\end{scope}
\end{axis}
\end{tikzpicture}
\end{document}
请注意,我们实际上可以这样做
\addplot [domain=-2:2] {sqrt(2*(\x*\x)-1)};
上半部分。它会自动计算。但之后我们得到了洞。我假设有一个选项,我们可以告诉它绘制-2:2
并额外评估+- 1/sqrt(2)
答案3
最简单的解决办法就是在间隙上画一条连接线。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[blue!50!black] plot[domain=2:(1/sqrt(2)),smooth,thick,samples=100] (\x,{sqrt(2*(\x*\x)-1)}) --
plot[domain=(1/sqrt(2)):2,smooth,thick,samples=100] (\x,{-sqrt(2*(\x*\x)-1)});
\draw[blue!50!black] plot[domain=-2:(-1/sqrt(2)),smooth,thick,samples=100] (\x,{sqrt(2*(\x*\x)-1)}) --
plot[domain=(-1/sqrt(2)):-2,smooth,thick,samples=100] (\x,{-sqrt(2*(\x*\x)-1)});
\end{tikzpicture}
\end{document}