
Ich möchte die Wurzeln eines beliebigen Polynoms in der komplexen Ebene darstellen.
Beispiel: Gegeben sei $P(x)=x^4-x^3-1$. Ich möchte alle vier Wurzeln dieses Polynoms auf der komplexen Ebene $Oxy$ darstellen.
Ich nehme an, dass Tikz in diesem Fall ein nützliches Tool sein könnte, aber ich habe mit diesem Paket keine Erfahrung.
Antwort1
Wenn Sie sich mit technischerer Mathematik beschäftigen, sollten Sie das sagetex
Paket verwenden, da es Ihnen Zugriff auf ein Open-Source-CAS namensSALBEIDie Dokumentation zu CTAN istHier. Hier ist die schnelle und einfache Methode, um zu bekommen, was Sie wollen.
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
x = polygen(QQ)
f = x^4-x^3-1
root_list = f.roots(CC)
real_roots = []
for root in root_list:
real_roots += [root[0].n(digits=3)]
P = list_plot(real_roots,color='red',size=25)
\end{sagesilent}
The roots of the polynomial $\sage{f}$ plotted in the complex plane
\begin{center}
\sageplot[scale=.8]{P}
\end{center}
The roots of $\sage{f}$ are $\sage{real_roots}$.
\end{document}
Hier ist die Ausgabe:
Ich kenne die Feinheiten des Codes nicht, ich habe nur etwas Code zusammengehackt, indem ich aufDasUndDasum den Code herauszufinden. Ich denke,
x = polygen(QQ)
Sie können damit Wurzeln von Polynomen mit rationalen Koeffizienten finden und f.roots(CC)
SAGE anweisen, alle komplexen Wurzeln zu finden. Da SAGE ein CAS ist, könnten diese Zahlen Objekte wie sqrt(2) sein und wir möchten sie in Dezimalzahlen umwandeln, die dargestellt werden können. Dies wird durch erreicht for root in root_list: real_roots += [root[0].n(digits=3)]
. Das eigentliche Diagramm wird in einer Variablen, P, gespeichert, wobei P = list_plot(real_roots,color='red',size=25)
sich Farbe und Größe auf die Punkte beziehen, die zunächst zu klein sind, um leicht gesehen zu werden. Dies alles wird im sagesilent
Modus erledigt, der wie ein Stück Papier ist, das nicht in das Dokument gelangt. Verwenden Sie im LaTeX-Code, \sage{}
um Zahlen/Berechnungen abzurufen und \sageplot{}
um die Diagramme abzurufen, die in SAGE erstellt werden. Die Erstellung der Diagramme durch Sage hilft, den Code kurz zu halten, und da ein CAS die Berechnungen durchführt, können Sie die Funktion ändern (denken Sie nur daran, dass Sie eine Multiplikation zwischen Koeffizienten und Variablen benötigen) und SAGE wird das Ergebnis ausrechnen. Mit etwas mehr Code können Sie das Diagramm zu einem schöneren tikz
Diagramm machen, Sie können nachlesen, wie ich das für die Zeta-Funktion gemacht habeHier. Dies wird einige zusätzliche Zeilen in Anspruch nehmen. Beachten Sie, dass SAGE Ihnen in meinem Code auch die 4 Nullen durch geben konnte \sage{real_roots}
. Wenn ein CAS die Arbeit übernimmt, können Fehler vermieden werden.
SAGE ist nicht Teil der LaTeX-Distribution. Der beste Weg, darauf zuzugreifen, ist über ein kostenloses Cocalc-Konto. Klicken Sie dazu aufHier.
Antwort2
TikZ ist kein Computeralgebrasystem. Natürlich kann man die Wurzeln selbst berechnen und in Polarkoordinaten darstellen. (Im Prinzip könnte man Ti sogarkZ Lösen Sie die Gleichungen, die die Wurzeln numerisch bestimmen, aber das wäre wohl ein bisschen verrückt.)
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{amsmath}
\DeclareMathOperator{\re}{Re}
\DeclareMathOperator{\im}{Im}
\begin{document}
\begin{tikzpicture}[scale=4]
\draw[-latex] (-1.5,0) -- (1.75,0) node[below left] {$\re z$};
\draw[-latex] (0,-1.5) -- (0,1.5) node[below right] {$\im z$};
\draw (1,0.05) -- (1,-0.05) node[below]{1};
\draw (0.05,1) -- (-0.05,1) node[left]{i};
\foreach \X/\Y in {-76.5/0.94,76.5/0.94,180/0.82,0/1.38}
{\fill (\X:\Y) circle[radius=1pt];}
\end{tikzpicture}
\end{document}
Antwort3
Das nächste Mal sollten Sie ein minimales funktionierendes Beispiel posten, um mehr Benutzer auf Ihren Beitrag aufmerksam zu machen. Wie dem auch sei, Sie sind ein neuer Benutzer, daher ist diese Antwort nur als Willkommensgruß bei TeX.SE gedacht!
Erstens glaube ich nicht, dass es mehr als zwei echte Wurzeln hat.
Sie können es ganz einfach mit Ti plottenkZ:
\documentclass[tikz]{standalone}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[>=stealth,scale=2]
\draw[->] (0,-2.5)--(0,2.5) node[left] {$y$};
\draw[->,name path=ox] (-2.5,0)--(2.5,0) node[above]{$x$};
\draw (0,0) node[below left] {$O$};
\foreach \i in {-2,-1,1,2} {
\draw (-.05,\i)--(.05,\i);
\draw (0,\i) node[left] {$\i$};
\draw (\i,-.05)--(\i,.05);
\draw (\i,0) node[below] {$\i$};
}
\draw[red,name path=pl] plot[smooth,samples=500,domain=-1.1:1.6] (\x,{\x*\x*\x*\x-\x*\x*\x-1});
\path[name intersections={of=ox and pl,by={i1,i2}}];
\fill (i1) circle (1pt) node[above right] {$A$};
\fill (i2) circle (1pt) node[below right] {$B$};
\end{tikzpicture}
\end{document}
Wenn Sie nun die Schnittpunkte haben, können Sie deren Koordinaten ermitteln:
\documentclass[tikz]{standalone}
\usetikzlibrary{intersections}
\newdimen\xa
\newdimen\xb
\newdimen\ya
\newdimen\yb
\makeatletter
\def\convertto#1#2{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1}
\makeatother
% https://tex.stackexchange.com/a/239496/156344
\begin{document}
\begin{tikzpicture}[>=stealth,scale=2]
\draw[->] (0,-2.5)--(0,2.5) node[left] {$y$};
\draw[->,name path=ox] (-2.5,0)--(2.5,0) node[above]{$x$};
\draw (0,0) node[below left] {$O$};
\foreach \i in {-2,-1,1,2} {
\draw (-.05,\i)--(.05,\i);
\draw (0,\i) node[left] {$\i$};
\draw (\i,-.05)--(\i,.05);
\draw (\i,0) node[below] {$\i$};
}
\draw[red,name path=pl] plot[smooth,samples=500,domain=-1.1:1.6] (\x,{\x*\x*\x*\x-\x*\x*\x-1});
\path[name intersections={of=ox and pl,by={i1,i2}}];
\fill (i1) circle (1pt) node[above right] {$A$};
\path (i1); \pgfgetlastxy{\xa}{\ya}
\fill (i2) circle (1pt) node[below right] {$B$};
\path (i2); \pgfgetlastxy{\xb}{\yb}
\draw (0,-3) node[text width=10cm,align=left] {%
There are two roots:\\
$A$ at $({\convertto{cm}{\xa}*2}, 0)$ and $B$ at $({\convertto{cm}{\xb}*2}, 0)$.};
\end{tikzpicture}
\end{document}
Natürlich kannst du es immer \xa
und \xb
überall verwenden ;-)
Wie Murmeltier sagte, TikZ ist kein Rechner. Es kann uns nur dabei helfen, die reellen Wurzeln mithilfe von Schnittpunkten zu finden. Und ich glaube nicht, dass dies mit einem LaTeX-Tool einfach ist, außer man findet die Wurzeln selbst.