Grafische Darstellung einer rationalen Funktion und einer vertikalen Linie mit pgfplots

Grafische Darstellung einer rationalen Funktion und einer vertikalen Linie mit pgfplots

Ich hätte gerne den Code, der TikZ anweist, den Graphen für die rationale Funktion zu zeichnen y=(x^{2}+5x+6)/(x^{2}+2x-3). Ich habe versucht, zu verwenden addplot[very thin,blue]{frac(x^{2}+5x+6)/(x^{2}+2x-3)}. Dieser Graph hat eine vertikale Asymptote x = 1. Wie lautet der Code zum Zeichnen dieser Linie – als gestrichelte Linie – mit Pfeilspitzen?

\documentclass[10pt]{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}


\begin{document}

\hspace*{\fill}
\begin{tikzpicture}
\begin{axis}[axis equal image,
          xmax=8,ymax=7,
          axis lines=middle,
          restrict y to domain=-7:7,
          enlargelimits={abs=1cm},
          axis line style={latex-latex},
          ticklabel style={fill=white},
          ytick=\empty,
          xtick={-3}
          %xlabel=$x$,ylabel=$y$,
]
\addplot[domain=-10:10,mark=none,samples=10] {frac{x + 2}{x - 1} node [above left, yshift=3pt]{$\scriptstyle{y}=\frac{x^{2}+5x+6}{x^{2}+2x-3}$};
\draw [fill=white] (-3,0) circle [radius=1.5pt];
\end{axis}
\end{tikzpicture}
\hspace{\fill}

\end{document}

Antwort1

Mit meiner Version von PGFplots \addplotlässt sich der von Ihnen angegebene Befehl nicht einmal kompilieren, daher musste ich raten, was Sie erreichen möchten. In PGFplots können Sie Brüche einfach wie folgt schreiben: 1/(x^2).

Mit Matthews Kommentar zu Jakes Antwort aufdiese Fragex=1Sie können mit der Taste eine Asymptote bei zeichnen vasymptote=1. Um das Diagramm zuverlässig abzuschneiden, ohne viele Stichproben zu verwenden (orangefarbene Kurve), können Sie die beiden Teile separat darstellen und dabei angeben, domaindass es etwas früher endet x=1(schwarze Kurve).

Einige Kurven

\documentclass[10pt]{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\pgfplotsset{vasymptote/.style={
    before end axis/.append code={
        \draw[densely dashed] ({rel axis cs:0,0} -| {axis cs:#1,0})
        -- ({rel axis cs:0,1} -| {axis cs:#1,0});
    }
}}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis equal image,
    axis lines=middle,
    xmin=-10,xmax=10,
    ymin=-10,ymax=10,
    enlargelimits={abs=1cm},
    axis line style={latex-latex},
    ticklabel style={fill=white},
    ytick={-10,10},
    xtick={-3,-10,10},
    vasymptote=1,
]
% This doesn't clip to y=-10:10 nicely
% because there are too few samples near the asymptote:
\addplot[very thick, orange, domain=-10:10,samples=200, restrict y to domain=-10:10]
    {(x^2+5*x+6)/(x^2+2*x-3)};

% Draw the two parts separately with individual domains:
\addplot[samples=50,domain=-10:1-0.27] {(x^2+5*x+6)/(x^2+2*x-3)};
\addplot[samples=50,domain=1+0.33:10]  {(x^2+5*x+6)/(x^2+2*x-3)};

\draw [fill=white] (-3,0) circle [radius=1.5pt]; % What is this?
\end{axis}
\end{tikzpicture}
\end{document}

Antwort2

Die Lösung von Mark Wibrow führt zu einer permanenten Katastrophe, wenn plotpoints=14*(2^n)+1(für jede nicht-negative ganze Zahl n).

Um ein solches Problem zu beheben, kann (nur zum Spaß) die folgende Lösung verwendet werden.

\documentclass[pstricks,border=20pt,12pt]{standalone}
\usepackage{pst-plot}
\def\f{(x+2)/(x-1)}

\begin{document}
\begin{psgraph}[algebraic,plotpoints=1000,Dy=5,Dx=2]{->}(0,0)(-11,-30)(11,35){20cm}{20cm}
    \psset{linecolor=red}
    \psplot{-10}{0.9}{\f}
    \psplot{1.1}{10}{\f}
    \psset{linestyle=dashed,linecolor=blue}
    \psline(1,-30)(1,35)
    \psline(-11,1)(11,1)
\end{psgraph}
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Nur zum Spaß, mit PSTricks :O

\documentclass[pstricks,border=5]{standalone}
\usepackage{pst-plot}
\begin{document}
\psset{xunit=20pt,yunit=20pt}
\begin{pspicture}*(-7.5,-7.5)(7.5,7.5)
  \psgrid[gridlabels=0,gridcolor=gray!25,subgridcolor=gray!10](-7,-7)(7,7)
  \psaxes[labels=none,ticksize=-2pt 2pt]{<->}(0,0)(-7,-7)(7,7)[$x$,-90][$y$,0]
  \psplot[linecolor=blue,plotstyle=line,algebraic, yMaxValue=7,plotpoints=1000]
      {-7}{7}{(x^2+5*x+6)/(x^2+2*x-3)} 
  \psline[linestyle=dashed](1,-7)(1,7)
  \rput(4.5,4){$\displaystyle f(x)=\frac{x^2+5x+6}{x^2+2x-3}$}
\end{pspicture}
\end{document} 

Bildbeschreibung hier eingeben

Antwort4

Alles was Sie brauchen, sind ein paar Addplot-Befehle:

  \addplot[domain=-10:10,samples=1000]
  {(x^2+5*x+6)/(x^2+2*x-3)};
  \addplot[dashed, purple, latex-latex]
  coordinates{(1,-6) (1,6)};

Die erste sollte Ihre reale Funktion darstellen, die zweite zeichnet eine vertikale Linie mit den Koordinaten. Die latex-latexOption fügt latexan beiden Enden Pfeilspitzen hinzu. Wenn Sie keine Pfeilspitzen an beiden Enden möchten, entfernen Sie einfach die entsprechenden latex. Wenn Sie möchten, dass die vertikale Linie länger ist, ersetzen Sie einfach -6 und 6 in den Koordinaten durch etwas Größeres, z. B. -15 und 15.

hier ist ein vollständiges Beispiel:

\begin{tikzpicture}
\begin{axis}[axis equal image,
          xmin=-8, xmax=8,
          ymin=-7, ymax=7,
          axis lines=middle,
          restrict y to domain=-10:10,
          enlargelimits={abs=1cm},
          axis line style={-latex},
          ytick=\empty,
          xtick={-3},
          %xlabel=$x$,ylabel=$y$,
  ]
  \addplot[domain=-10:10,samples=1000]
  {(x^2+5*x+6)/(x^2+2*x-3)};
  \addplot[dashed, purple, latex-latex]
  coordinates{(1,-6) (1,6)};
\end{axis}
\end{tikzpicture}

verwandte Informationen