Построение графиков функций с помощью Tikz — откуда взялась эта дыра?

Построение графиков функций с помощью 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 не является системой компьютерной алгебры.

Поэтому мы должны помочь Ти.к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}

демо

Связанный контент