Graphical interpretation of the complex roots of a quadratic equation.
Inspired by this post and this paper.






Edit and compile if you like:
% Author: Izaak Neutelings (April 2022)
% Inspiration:
% https://math.stackexchange.com/questions/401745/help-understanding-complex-roots
% https://doi.org/10.5539/jmr.v10n6p91
\documentclass[border=3pt,tikz]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{physics}
\usepackage[outline]{contour} % glow around text
\contourlength{1.0pt}
\usetikzlibrary{3d}
\tikzset{>=latex} % for LaTeX arrow head
\usepackage{xcolor}
\colorlet{myblue}{blue!75!black}
\colorlet{mydarkblue}{blue!50!black}
\colorlet{myred}{red!65!black}
\colorlet{mydarkred}{red!40!black}
\tikzstyle{xline}=[myblue,very thick]
\tikzstyle{round xline}=[xline,line cap=round]
\tikzstyle{area}=[xline,fill=myblue!20,fill opacity=0.5]
\tikzstyle{yzp}=[canvas is zy plane at x=0]
\tikzstyle{xzp}=[canvas is xz plane at y=0]
\tikzstyle{xyp}=[canvas is xy plane at z=0]
\def\tick#1#2{\draw[thick] (#1) ++ (#2:0.11) --++ (#2-180:0.22)}
\def\N{50}
\begin{document}
% ONE REAL solutions
\begin{tikzpicture}[scale=1]
\message{^^JReal solutions}
\def\xmin{-0.4} % x axis minimum
\def\xmax{3.8} % x axis maximum
\def\ymin{-0.4} % y axis minimum
\def\ymax{2.7} % y axis maximum
\def\tmax{1.85} % parameter t maximum (upper)
\def\A{0.7} % parabola amplitude
\def\a{1.75} % parabola minimum
\coordinate (M) at (\a,0); % parabola minimum
\coordinate (R) at (\a,0); % root
% PARABOLA BACK
\draw[area,fill opacity=0.2,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\A*(\t-\a)^2});
% AXES
\draw[->,black,thick] (\xmin,0) -- (\xmax,0) node[below] {$x$};
\draw[->,black,thick] (0,\ymin,0) -- (0,\ymax+0.01) node[anchor=-30,inner sep=1] {$y$};
% PARABOLA
\draw[xline,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\A*(\t-\a)^2});
\node[mydarkblue,left=-5,scale=0.9] at (\xmax,\ymax) {$y=A(x-a)^2$};
% TICKS
\tick{R}{90}
node[below=-1,scale=0.9,mydarkred] {$a$};
% POINTS
\fill[myred] (M) circle(0.05);
\fill[myred] (R) circle(0.05);
\end{tikzpicture}
% REAL solutions
\begin{tikzpicture}[scale=1]
\message{^^JReal solutions}
\def\xmin{-0.4} % x axis minimum
\def\xmax{3.8} % x axis maximum
\def\ymin{-0.8} % y axis minimum
\def\ymax{2.4} % y axis maximum
\def\tmax{1.85} % parameter t maximum (upper)
\def\A{0.8} % parabola amplitude
\def\a{1.75} % parabola minimum
\def\b{0.6} % parabola vertical offset
\pgfmathsetmacro\r{sqrt(\b/\A)} % root
\coordinate (M) at (\a,-\b); % parabola minimum
\coordinate (R+) at (\a+\r,0); % largest root
\coordinate (R-) at (\a-\r,0); % smallest root
% PARABOLA BACK
\draw[area,fill opacity=0.2,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\A*(\t-\a)^2-\b});
% AXES
\draw[->,black,thick] (\xmin,0) -- (\xmax,0) node[below] {$x$};
\draw[->,black,thick] (0,\ymin,0) -- (0,\ymax+0.01) node[anchor=-30,inner sep=1] {$y$};
% PARABOLA
\draw[xline,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\A*(\t-\a)^2-\b});
\node[mydarkblue,left=-5,scale=0.9] at (\xmax,\ymax) {$y=A(x-a)^2+b$};
% TICKS
\draw[mydarkred,densely dashed] (0,-\b) -- (M) -- (\a,0);
\tick{0,-\b}{0} node[left=0,scale=0.9] {$b$};
\tick{\a,0}{-90}
node[above=0,scale=0.85] {$a$};
\tick{R-}{-90}
node[left=5,above=-1,scale=0.8,mydarkred] {\contour{white}{$a-\sqrt{b/A}$}}; %\dfrac{b}{A}
\tick{R+}{-90}
node[right=7,above=-1,scale=0.8,mydarkred] {\contour{white}{$a+\sqrt{b/A}$}}; %\dfrac{b}{A}
% POINTS
\fill[myred] (M) circle(0.05);
\fill[myred] (R+) circle(0.05) (R-) circle(0.05);
\end{tikzpicture}
% IMAGINARY solutions
\def\ymax{2.7} % y axis maximum
\def\tmax{1.78} % parameter t maximum (upper)
\def\tlow{1.42} % parameter t maximum (lower)
\begin{tikzpicture}[scale=1]
\message{^^JImaginary solutions}
\def\xmin{-2.0} % x axis minimum
\def\xmax{2.2} % x axis maximum
\def\ymin{-0.8} % y axis minimum
\def\A{0.6} % parabola amplitude
\def\b{0.5} % parabola vertical offset
\pgfmathsetmacro\r{sqrt(\b/\A)} % root
\coordinate (M) at (0,\b); % parabola minimum
\coordinate (R+) at ( \r,0); % root with positive Im[z]
\coordinate (R-) at (-\r,0); % root with negative Im[z]
\coordinate (P+) at ( \r,2*\b); % root with positive Im[z], shifted
\coordinate (P-) at (-\r,2*\b); % root with negative Im[z], shifted
% PARABOLA BACK
\draw[area,fill opacity=0.2,samples=\N,smooth,variable=\t,domain=-\tmax:\tmax]
plot (\t,{\b+\A*\t*\t});
% AXES
\draw[->,black,thick] (\xmin,0) -- (\xmax,0) node[below] {$x$};
\draw[->,black,thick] (0,\ymin,0) -- (0,\ymax+0.01) node[anchor=-30,inner sep=1] {$y$};
% PARABOLA
\draw[xline,samples=\N,smooth,variable=\t,domain=-\tmax:\tmax]
plot (\t,{\b+\A*\t*\t});
\draw[area,thin,fill opacity=0.1,samples=\N,smooth,variable=\t,domain=-\tlow:\tlow]
plot (\t,{\b-\A*\t*\t});
\node[mydarkblue,right=4,scale=0.9] at (0,\ymax) {$y=Ax^2+b$};
\draw[mydarkred,densely dashed] (R+) |- (0,2*\b) -| (R-);
% TICKS
\tick{0,\b}{0} node[above=1,left=-1,scale=0.9] {\contour{white}{$b$}};
\tick{0,2*\b}{0} node[above=1,left=-1,scale=0.9] {\contour{myblue!4}{$2b$}};
\tick{-\r,0}{90}
node[left=2,below=-2,scale=0.9,mydarkred] {\contour{white}{$-\sqrt{b/A}$}}; %\dfrac{b}{A}
\tick{\r,0}{90}
node[right=2,below=-2,scale=0.9,mydarkred] {\contour{white}{$+\sqrt{b/A}$}}; %\dfrac{b}{A}
% POINTS
\fill[myred] (M) circle(0.05);
\fill[myred] (R+) circle(0.05) (R-) circle(0.05);
\fill[myred] (P+) circle(0.05) (P-) circle(0.05);
\end{tikzpicture}
% COMPLEX solutions
\begin{tikzpicture}[scale=1]
\message{^^JComplex solutions}
\def\xmin{-0.6} % x axis minimum
\def\xmax{3.5} % x axis maximum
\def\ymin{-0.3} % y axis minimum
\def\A{0.6} % parabola amplitude
\def\a{1.4} % parabola minimum
\def\b{0.5} % parabola vertical offset
\pgfmathsetmacro\r{sqrt(\b/\A)} % root
\coordinate (M) at (\a,\b); % parabola minimum
\coordinate (R+) at (\a+\r,0); % root with positive Im[z]
\coordinate (R-) at (\a-\r,0); % root with negative Im[z]
\coordinate (P+) at (\a+\r,2*\b); % root with positive Im[z], shifted
\coordinate (P-) at (\a-\r,2*\b); % root with negative Im[z], shifted
% PARABOLA BACK
\draw[area,fill opacity=0.25,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\b+\A*(\t-\a)^2});
% AXES
\draw[->,black,thick] (\xmin,0) -- (\xmax,0) node[below] {$x$};
\draw[->,black,thick] (0,\ymin,0) -- (0,\ymax+0.01) node[anchor=-30,inner sep=1] {$y$};
% PARABOLA
\draw[xline,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\b+\A*(\t-\a)^2});
\draw[area,thin,fill opacity=0.1,samples=\N,smooth,variable=\t,domain=\a-\tlow:\a+\tlow]
plot (\t,{\b-\A*(\t-\a)^2});
\node[mydarkblue,right=5,scale=0.9] at (0,\ymax) {$y=A(x-a)^2+b$};
\draw[mydarkred,densely dashed] (R+) |- (0,2*\b) -| (R-);
% TICKS
\draw[mydarkred,densely dashed] (0,\b) -- (M) -- (\a,0);
\tick{0,\b}{0} node[scale=0.9,left=-1] {$b$};
\tick{0,2*\b}{0} node[scale=0.9,left=-1] {$2b$};
\tick{\a,0}{90}
node[below=1,scale=0.8] {\contour{white}{$a$}}; %\dfrac{b}{A}
\tick{R-}{90}
node[left=5,below=-1,scale=0.8,mydarkred] {\contour{white}{$a-\sqrt{b/A}$}}; %\dfrac{b}{A}
\tick{R+}{90}
node[right=2,below=-1,scale=0.8,mydarkred] {\contour{white}{$a+\sqrt{b/A}$}}; %\dfrac{b}{A}
% POINTS
\fill[myred] (M) circle(0.05);
\fill[myred] (R+) circle(0.05) (R-) circle(0.05);
\fill[myred] (P+) circle(0.05) (P-) circle(0.05);
\end{tikzpicture}
% IMAGINARY ROOTS - extended graph
\def\xang{-10}
\def\zang{25}
\begin{tikzpicture}[y=(90:1),z=(\zang:1),x=(\xang:1),scale=1.1]
\message{^^JImaginary solutions - extended graph}
\def\xmax{1.8} % x axis maximum
\def\ymin{-1.3} % y axis minimum
\def\ymax{2.7} % y axis maximum
\def\zmax{1.8} % z axis maximum
\def\tmax{1.0} % parameter t maximum (upper)
\def\tlow{1.1} % parameter t maximum (lower)
\def\A{1.5} % parabola amplitude
\def\b{0.95} % parabola vertical offset
\pgfmathsetmacro\r{sqrt(\b/\A)} % root
\coordinate (M) at (0,\b,0); % parabola minimum
\coordinate (R+) at (0,0, \r); % root with positive Im[z]
\coordinate (R-) at (0,0,-\r); % root with negative Im[z]
% AXES
\draw[black,thick] (-\xmax,0,0) -- (0,0,0);
% PARABOLA
\draw[area,samples=\N,smooth,variable=\t,domain=-\tlow:\tlow]
plot (0,{\b-\A*\t*\t},\t);
\draw[area,samples=\N,smooth,variable=\t,domain=-\tmax:\tmax]
plot (\t,{\A*\t*\t+\b},0);
\node[mydarkblue,right=7,scale=0.9] at (0,0.96*\ymax,0) {$y=Ax^2+b$};
\node[mydarkblue,below=5,left=4,scale=0.9] at (0,\ymin,0) {$y=b-At^2$};
% AXES
\draw[->,black,thick] (0,\ymin,0,0) -- (0,\ymax+0.06,0) node[above left=-3] {$y$};
\draw[->,black,thick] (0,0,-\zmax) -- (0,0,\zmax) node[right=8,above=-2] {$t=\Im[z]$};
% POINTS
\tick{0,\b,0}{0} node[left=1] {$b$};
\fill[myred] (M) circle(0.05);
\fill[myred,xzp]
(R+) circle(0.05)
(R-) circle(0.05);
% FRONT
\draw[round xline,samples=\N,smooth,variable=\t]
plot[domain=0.006-\r:-0.01] (0,{\b-\A*\t*\t},\t)
plot[domain=\r/2:\r-0.008] (0,{\b-\A*\t*\t},\t);
\draw[->,black,thick,line cap=round]
(0.01,0,0) -- (\xmax,0,0) node[right=5,below=0] {$x=\Re[z]$};
% TICKS
\tick{R-}{-90} node[mydarkred,scale=0.9,anchor=-5,inner sep=2] {$-\sqrt{b/A}$};
\tick{R+}{90} node[mydarkred,scale=0.9,anchor=186,inner sep=2] {$+\sqrt{b/A}$};
\end{tikzpicture}
% COMPLEX ROOTS - extended graph
\def\xang{-7}
\def\zang{25}
\begin{tikzpicture}[y=(90:1),z=(\zang:1),x=(\xang:1),scale=1.2]
\message{^^JComplex solutions - extended graph}
\def\xmax{3.2} % x axis maximum
\def\ymin{-1.3} % y axis minimum
\def\ymax{2.8} % y axis maximum
\def\zmin{-1.6} % z axis minimum
\def\zmax{2.4} % z axis maximum
\def\tmax{1.00} % parameter t maximum (upper)
\def\tlow{1.10} % parameter t maximum (lower)
\def\A{1.5} % parabola amplitude
\def\a{1.5} % parabola minimum
\def\b{1.1} % parabola vertical offset
\pgfmathsetmacro\r{sqrt(\b/\A)} % root
\coordinate (M) at (\a,\b,0); % parabola minimum
\coordinate (R+) at (\a,0, \r); % root with positive Im[z]
\coordinate (R-) at (\a,0,-\r); % root with negative Im[z]
% AXES
\draw[black,thick] (-0.1*\ymax,0,0) -- (\a,0,0);
\draw[->,black,thick] (0,\ymin,0,0) -- (0,\ymax,0) node[above left=-3] {$y$};
\draw[->,black,thick] (0,0,\zmin) -- (0,0,\zmax) node[above=1,right=1] {$t=\Im[z]$};
\draw[mydarkred,densely dashed]
(R+) -- (0,0,\r);
% PARABOLA
\draw[area,samples=\N,smooth,variable=\t,domain=-\tlow:\tlow]
plot (\a,{\b-\A*\t*\t},\t);
\draw[area,samples=\N,smooth,variable=\t,domain=\a-\tmax:\a+\tmax]
plot (\t,{\b+\A*(\t-\a)^2},0);
\node[mydarkblue,right=2,scale=0.9] at (\a,\ymax,0) {$y=A(x-a)^2+b$};
\node[mydarkblue,right=0,scale=0.9] at (0.6*\a,0.9*\ymin,0) {$y=b-At^2$ ($x=a$)};
% POINTS
\fill[myred] (M) circle(0.05);
\fill[myred,xzp]
(R+) circle(0.05)
(R-) circle(0.05);
\draw[mydarkred,densely dashed]
(M) -- (0,\b,0)
(R-) -- (0,0,-\r)
(R+) -- (R-);
% FRONT
\draw[round xline,samples=\N,smooth,variable=\t]
plot[domain=0.006-\r:-0.01] (\a,{\b-\A*\t*\t},\t)
plot[domain=\r/2:\r-0.008] (\a,{\b-\A*\t*\t},\t);
\draw[->,black,thick,line cap=round]
(\a,0,0) -- (\xmax,0,0) node[right=5,below=0] {$x=\Re[z]$};
% TICKS
\tick{\a,0,0}{90} node[below=-1] {$a$};
\tick{0,0,-\r}{-90}
node[mydarkred,scale=0.9,anchor=-40,inner sep=0] {$-\sqrt{b/A}$};
\tick{0,0,\r}{-90}
node[mydarkred,scale=0.9,anchor=-40,inner sep=0] {$+\sqrt{b/A}$};
\tick{0,\b,0}{0} node[left=0] {$b$};
\end{tikzpicture}
% QUADRATIC EQUATION
\begin{tikzpicture}[scale=1]
\node[align=left] at (0,0) {
\begin{minipage}{9.2cm}
Take an upward (convex) parabola with a quadratic equation
\begin{equation}\label{real}
y = A(x-a)^2 + b,
\end{equation}
with real $A,b>0$.
If $a=0$, there two imaginary roots
\begin{equation*}
x = \pm i\sqrt{\frac{b}{A}}.
\end{equation*}
If $a\neq0$, there are two complex solutions
\begin{equation*}
x = a \pm i\sqrt{\frac{b}{A}}.
\end{equation*}
To extend the graph from the real $x$ axis to the complex plane,
substitute a complex number \mbox{$z = x + it$} for real $x$, $t$:
\begin{equation*}
y = \Re\!\big[ A(x+it-a)^2 + b \big].
\end{equation*}
Rewriting,
\begin{equation*}
y = \Re\!\big[ A(x-a)^2 -At^2 + b \big].
\end{equation*}
If $t=0$, we retrieve the ``real parabola'' \eqref{real}.
The ``complex parabola'' that has the same solution for $x=a$ is
\begin{equation*}
y = b -At^2.
\end{equation*}
\end{minipage}
};
\end{tikzpicture}
\end{document}Click to download: complex_roots.tex • complex_roots.pdf
Open in Overleaf: complex_roots.tex