![如何用 tikz 绘制椭圆曲线,例如 Y^2 = X^3 - X?](https://linux22.com/image/460552/%E5%A6%82%E4%BD%95%E7%94%A8%20tikz%20%E7%BB%98%E5%88%B6%E6%A4%AD%E5%9C%86%E6%9B%B2%E7%BA%BF%EF%BC%8C%E4%BE%8B%E5%A6%82%20Y%5E2%20%3D%20X%5E3%20-%20X%EF%BC%9F.png)
我需要使用 tikz 包绘制椭圆曲线 Y^2 = X^3 - X(如下所示)。由于 tikz 不支持隐式曲线,我尝试创建一个 pfgplot,在其中添加一个用于正平方根的图和一个用于负平方根的图,但我仍然遇到问题。
这是我迄今为止的代码:
\documentclass[10pt]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis x line=center,
axis y line=center,
xtick={-1,1},
xmin=-2,
xmax=2,
ymin=-2,
ymax=2,
]
\addplot[mark=none,samples=200,domain=-2:2] {sqrt(x^3-x)};
\addplot[mark=none,samples=200,domain=-2:2] {-sqrt(x^3-x)};
\end{axis}
\end{tikzpicture}
\end{document}
输出结果如下:
如您所见,曲线在 x 轴附近不连接,并且 0 和 1 之间也有奇怪的线。有没有办法解决这些问题,或者有没有更好的方法来绘制椭圆?
答案1
您可以对曲线进行重新参数化,或者更简单地将样本设置为奇数。在这种情况下,将样本设置为奇数将在临界点 和 处对曲线进行采样x=-1
。x=0
唯一x=1
剩下的就是确保两侧没有通过线连接 - 这可以通过在两个图上分割域或使用如下过滤器来实现:
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
xtick={-1,1},
xmin=-2, xmax=2,
ymin=-2, ymax=2,
]
\addplot[red, domain=-2:2, samples=201, y filter/.expression={x>0&&x<1?nan:y}, unbounded coords=jump, smooth] {sqrt(x^3-x)};
\addplot[red, domain=-2:2, samples=201, y filter/.expression={x>0&&x<1?nan:y}, unbounded coords=jump, smooth] {-sqrt(x^3-x)};
\end{axis}
\end{tikzpicture}
\end{document}