Я пытаюсь построить гиперболу, но по какой-то причине в графике появляется дыра, и я не могу понять, в чем причина:
\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}