繪製函數 witz Tikz - 這個洞從哪裡來?

繪製函數 witz Tikz - 這個洞從哪裡來?

我正在嘗試繪製雙曲線,但由於某種原因,它在圖中出現了一個洞,我無法弄清楚是什麼原因導致的:

\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}

示範

相關內容