我正在嘗試繪製雙曲線,但由於某種原因,它在圖中出現了一個洞,我無法弄清楚是什麼原因導致的:
\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 不是計算機代數系統。
所以我們必須幫助TikZ 做正確的事。無論如何,如果我們想要一條平滑、連續的曲線,我們可能需要一筆畫出每個組件。這可以透過選擇不同的參數化來實現,例如
\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}