Trazar las raíces de un polinomio

Trazar las raíces de un polinomio

Quiero trazar las raíces de cualquier polinomio dado en el plano complejo.

Ejemplo: Sea $P(x)=x^4-x^3-1$. Quiero trazar en el plano complejo $Oxy$ las cuatro raíces de este polinomio.

Supongo que Tikz podría ser una herramienta útil en este caso, pero no tengo experiencia con este paquete.

Respuesta1

Cuando pase a matemáticas más técnicas, debe usar el sagetexpaquete, ya que le brinda acceso a un CAS de código abierto llamadoSABIO. La documentación sobre CTAN esaquí. Aquí tienes la forma "rápida y sucia" de conseguir lo que quieres.

\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}

Aquí está el resultado: ingrese la descripción de la imagen aquí No conozco las complejidades del código, simplemente pirateé un código haciendo referencia aesteyestepara descubrir el código. Creo que x = polygen(QQ)te permitirá encontrar raíces de polinomios con coeficientes racionales y f.roots(CC)le indicará a Sage que encuentre raíces complejas. Dado que SAGE es un CAS, esos números podrían ser objetos como sqrt(2) y queremos convertirlos en decimales que se puedan trazar. Eso se logra mediante for root in root_list: real_roots += [root[0].n(digits=3)]. La gráfica real se almacena en una variable, P, donde P = list_plot(real_roots,color='red',size=25)el color y el tamaño se refieren a los puntos que inicialmente son demasiado pequeños para ser vistos fácilmente. Todo esto se hace en sagesilentmodo, que es como papel de desecho que no entra en el documento. En el código LaTeX, utilícelo \sage{}para obtener números/cálculos y \sageplot{}para obtener los gráficos que se realizan en SAGE. Hacer los gráficos a través de sage ayuda a que el código sea breve y, dado que CAS está haciendo los cálculos, puede cambiar la función (solo recuerde que necesita la multiplicación entre coeficientes y variables) y SAGE calculará el resultado. Puedes, con un poco más de codificación, hacer que la trama se vea mejor.tikz ; puede consultar cómo lo hice para la función Zeta.aquí. Esto requerirá bastantes líneas adicionales. Observe que en mi código, SAGE también pudo darle los 4 ceros por \sage{real_roots}. Tener un CAS haciendo el trabajo evita errores.

SAGE no forma parte de la distribución de LaTeX; la mejor manera de acceder es a través de una cuenta gratuita de Cocalc haciendo clicaquí.

Respuesta2

TikZ no es un sistema de álgebra informática. Por supuesto, puedes calcular las raíces tú mismo y trazarlas usando coordenadas polares. (En principio, incluso podrías dejar que TikZ resuelve las ecuaciones que determinan las raíces numéricamente, pero podría decirse que esto sería un poco loco.)

\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}

ingrese la descripción de la imagen aquí

Respuesta3

La próxima vez, deberías publicar un ejemplo práctico mínimo para atraer más usuarios a tu publicación. De todos modos, eres un usuario nuevo, así que esta respuesta es para darte la bienvenida a TeX.SE.


En primer lugar, no creo que tenga más que dos raíces reales.

Puedes trazarlo bastante fácilmente con Ti.kZ:

\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}

ingrese la descripción de la imagen aquí

Ahora, cuando tengas las intersecciones, podrás tener sus coordenadas:

\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}

ingrese la descripción de la imagen aquí

Por supuesto que siempre puedes usarlo \xay \xbdonde quieras ;-)


Como dijo la marmota, TikZ no es una calculadora. Sólo puede ayudarnos a encontrar las raíces reales mediante intersecciones. Y no creo que sea fácil hacerlo con ninguna herramienta de LaTeX que no sea encontrar las raíces usted mismo.

información relacionada