pgfplots «Слишком большое измерение» возвращено при построении графика рациональной функции

pgfplots «Слишком большое измерение» возвращено при построении графика рациональной функции

Я уже некоторое время использую pgfplotsдля построения графиков, и недавно столкнулся с ситуацией, когда мне нужно построить график рациональных функций. Большинство из них сработали нормально, но один из них вызвал ошибку «Слишком большой размер». Вот мой код:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[axis lines=middle, ymax=10, ymin=-10, xlabel=$x$, ylabel=$y$]
      \addplot[only marks, scatter, scatter src=explicit, point meta=y] coordinates {
        (-4, 4)
        (-3, 5)
        (-2, 10)
        (-1, -5)
        (0, 0)
        (1, 1)
        (2, 1.429)
      };
      \addplot[smooth, domain=-10:-1.5, variable=\x, samples=301, unbounded coords=jump, variable=\x] {(5 * \x) / (2 * \x + 3)};
      \addplot[smooth, domain=-1.5:10, variable=\x, samples=301, unbounded coords=jump, variable=\x] {(5 * \x) / (2 * \x + 3)};
      \addplot[dashed, domain=-10:10] {5 / 2};
      \draw[dashed] ({axis cs:-1.5,0}|-{rel axis cs:0,0}) -- ({axis cs:-1.5,0}|-{rel axis cs:0,1});
    \end{axis}
  \end{tikzpicture}

\end{document}

Этого можно избежать, ограничив области второго и третьего графиков до -3:-1.5и 1.5:3соответственно. Я не вижу, как я могу получить слишком большое число, и могу только представить, что это проблема с десятичным недорасходом. Как мне исправить эту проблему?

решение1

unbounded coordsключ работает только вы получаете точный infкак координата. Однако если координата становится слишком большой, но не infон пытается обработать это число и вы получаете эту ошибку. Чтобы избежать таких проблем используйте restrict <x,y> to domainключ

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[axis lines=middle, ymax=10, ymin=-10, xlabel=$x$, ylabel=$y$,restrict y to domain=-10:10 ]
      \addplot[only marks, scatter, scatter src=explicit, point meta=y] coordinates {
        (-4, 4)
        (-3, 5)
        (-2, 10)
        (-1, -5)
        (0, 0)
        (1, 1)
        (2, 1.429)
      };
      \addplot[domain=-10:-1.5,samples=301, unbounded coords=discard] {((5*x)/(2*x + 3))};
      \addplot[domain=-1.5:10, samples=301, unbounded coords=discard] {((5*x)/(2*x + 3))};
      \addplot[dashed, domain=-10:10] {5 / 2};
      \draw[dashed] ({axis cs:-1.5,0}|-{rel axis cs:0,0}) -- ({axis cs:-1.5,0}|-{rel axis cs:0,1});
    \end{axis}
  \end{tikzpicture}
\end{document}

введите описание изображения здесь

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