TikZ zeichnet die Funktion falsch. - Wie kann der Code verbessert werden?

TikZ zeichnet die Funktion falsch. - Wie kann der Code verbessert werden?

Wir haben diesen TikZ-Code und es wurde gesagt, dass dieser ein anderes Ergebnis als Geogebra liefert (https://artofproblemsolving.com/community/c68h3228155_need_help_with_tikz):

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[thick, domain=-1.5:2] plot(\x, {2.8*\x^4+4.77*\x^3-5.47*\x^2-7.61*\x});
\end{tikzpicture}

Auch die Asymptote liefert ein anderes Ergebnis als TikZ, siehe Beitrag Nr. 2 im obigen Link.

Was kann in TikZ besser gemacht werden?

Antwort1

Das Problem liegt in der Erweiterung/Vorrangstellung der -Erweiterung \x. Sie können verwenden@Skillmons Lösungoder fügen Sie Klammern hinzu:

\documentclass[border=3.14,tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[thick, red, domain=-1.5:2] plot(\x, {2.8*(\x)^4+4.77*(\x)^3-5.47*(\x)^2-7.61*(\x)});
\draw[thick, dotted, domain=-1.5:2] plot(\x, {2.8*\x*\x*\x*\x+4.77*\x*\x*\x-5.47*\x*\x-7.61*\x});
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Das Problem der Vorzeichenpriorität wird noch deutlicher, wenn Sie Folgendes tun:

\documentclass[border=3.14,tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[thick, red, domain=-1.5:2] plot(\x, {\x^2});
\draw[thick, dotted, domain=-1.5:2] plot(\x, {(\x)^2});
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Es scheint, dass, wenn beispielsweise \x^2erweitert wird und der Wert negativ ist, sagen wir -2, Sie erhalten -2^2, was als interpretiert wird -4.

Antwort2

TikZ hat Probleme mit der Exponentenfunktion. Verwenden Sie \x*\x*\x*\xanstelle von \x^4usw.:

\documentclass[border=3.14,tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[thick, domain=-1.5:2] plot(\x, {2.8*\x*\x*\x*\x+4.77*\x*\x*\x-5.47*\x*\x-7.61*\x});
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Um dies weiter zu verbessern: Reduzieren Sie domain(Ihre Funktion wird bei x=2 ausgewertet und ergibt 45,86), erhöhen Sie samplesund verwenden Sie ggf. smooth.


\documentclass[border=3.14,tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[thin, red, domain=-1.5:1.5, samples=101, smooth] plot(\x, {2.8*\x*\x*\x*\x+4.77*\x*\x*\x-5.47*\x*\x-7.61*\x});
\end{tikzpicture}

\end{document}

Wenn Sie immer noch numerische Probleme mit Ihrer Funktion haben (was bei dieser Funktion nicht der Fall ist, aber vorkommen kann), sollten Sie das pgfmath-xfpPaket verwenden. Es verlangsamt Ihre Diagramme ein wenig, aber die Verwendung damit definierter Funktionen ergibt eine viel bessere Auflösung:

\documentclass[border=3.14,tikz]{standalone}

\usepackage{pgfmath-xfp}

\begin{document}

\begin{tikzpicture}[scale=.5]
\draw[->] (-3,0)--(5,0) node[below]{$x$};
\draw[->] (0,-7)--(0,3) node[left]{$y$};
\draw[red, domain=-1.5:1.5, samples=101, smooth] plot(\x, {2.8*\x*\x*\x*\x+4.77*\x*\x*\x-5.47*\x*\x-7.61*\x});
\pgfmxfpdeclarefunction{myfunction}{1}
  {2.8*(#1)^4+4.77*(#1)^3-5.47*(#1)^2-7.61*(#1)}
\draw[very thin, blue, domain=-1.5:1.5, samples=101,smooth] plot(\x, {myfunction(\x)});
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen