TikZ 未检测到曲线的第三个交点

TikZ 未检测到曲线的第三个交点

我想找到某个图形的交点-值,以便在曲线之间创建混合路径。但是,出于某种原因,TikZ 没有检测到第三个交叉点。

以下是代码:

\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usetikzlibrary{pgfplots.fillbetween,intersections}

\begin{document}
\begin{tikzpicture}

\begin{axis}[axis lines=middle, xlabel=$x$, ylabel=$y$,
             xlabel style={below right}, ylabel style={above left}, ticks=none,
             xmin=0, xmax=3.5, ymin=0, ymax=1]

\addplot[name path=Tb, domain={0.4:3.4},samples=500] {-3/x^2+(8*0.85)/(3*x-1)};

\draw[name path=l1] (axis cs:0.5, 0.57) -- (axis cs:3.35,0.57);
\draw[red, name path=part1, intersection segments={of=Tb and l1, sequence={L1--R2--L3}}];

\fill [name intersections={of=l1 and Tb, name=E, total=\t}]
[red] 
\foreach \s in {1,2,...,\t}{(E-\s) circle (1pt)};

\end{axis}

\end{tikzpicture}

\end{document}

输出如下: 在此处输入图片描述

我们清楚地看到,曲线之间有第三个交点,但 TikZ 无法检测到它。即使我将水平线分成两部分,TikZ 也无法检测到最后一个点。有什么办法可以解决这个问题吗?

答案1

  • 我鼓励你升级你的 ˙pgfplots` 安装(找到第三个交点并不重要,但无论如何,这样做是值得的)
  • 我猜,你喜欢获得以下图表:

在此处输入图片描述

与您的 MWE 相比,我在绘制红线时仅添加了第四段,并使用了pgfplots版本 1.11 之后启用的最新语法:

\documentclass[border=3.141592]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.fillbetween,
                intersections}
\pgfplotsset{compat=1.17} % <---

\begin{document}
    \begin{tikzpicture}
\begin{axis}[
    axis lines=middle, 
    xlabel=$x$, ylabel=$y$,
    xlabel style={below right}, 
    ylabel style={above left}, 
    ticks=none,
    xmin=0, xmax=3.5, ymin=0, ymax=1
                ]

\addplot[name path=Tb, domain={0.4:3.4},samples=101] {-3/x^2+(8*0.85)/(3*x-1)};

\draw[name path=l1] (0.5, 0.57) -- (3.35,0.57);
\draw[red, intersection segments={of=Tb and l1, sequence={L1--R2--L3--R4}}]; % <---

\fill [name intersections={of=l1 and Tb, name=E, total=\t}] 
      [red, very thick, semitransparent]
    \foreach \s in {1,2,...,\t}{(E-\s) circle[radius=2pt] };
\end{axis}
    \end{tikzpicture}
\end{document}

该解决方案也适用于pgfplots1.15 版本(未经测试)。

答案2

只是检查一下...(使用tzplot包裹:)

在此处输入图片描述

\documentclass[tikz]{standalone}

\usepackage{tzplot}   %%

\begin{document}

\begin{tikzpicture}[scale=2.2]
\tzhelplines[step=.5](3.5,1)
\tzaxes*(3.5,1){$x$}{$y$}
\def\Tb{-3/(\x)^2+(8*0.85)/(3*\x-1)}
\begin{scope}
  \clip(0,0)rectangle(3.5,1);
  \tzfn\Tb[0.4:3.4]
  \tzhfnat[red]"hori"{0.57}[0.4:3.4]
  \tzXpoint{Tb}{hori}(A)
\end{scope}
\tzdots*(A)(A-2)(A-3);   %% (A)=(A-1)
\end{tikzpicture}

\end{document}

相关内容