Roots of Polynomials
If the Java applet fails to start due to Java Security issues,
click
here.
Alternatively, you can try this pure Javascript version:
This applet computes the complex roots of a large number of randomly generated
polynomials and plots them in the complex plane.
By default, the coefficients on the random polynomials are independent Gaussian random
variables with mean zero and variance one.
Other distributions can be selected from the pulldown menus.
The theoretical density, as derived in
this paper,
is also shown for comparison.
By default, only 1000 random polynomials are generated. Changing the value to a
larger setting, say a few thousand, makes the computation take longer but the
empirical distribution begins to look very much like the theoretical density.
Using Matlab, one can compute the empirical distributions much more quickly.
Here's a Matlab code to do it:
findroots.m
Here's a few screenshots...
Gaussian: 50 million polynomials:
\( a_0 + a_1 z + \cdots + a_{10} z^{10}, \qquad a_i \in N(0,1) \)

Cauchy: 50 million polynomials:
\( a_0 + a_1 z + \cdots + a_{10} z^{10}, \qquad a_i \in \mbox{Cauchy}(0,1) \)



Taylor Style: 5 million polynomials:
\( a_0 + a_1 z + a_2 \frac{z^2}{2!} + \cdots + a_{10} \frac{z^{10}}{10!}, \qquad a_i \in N(0,1) \)

Uniform: 500,000 polynomials:
\( a_0 + a_1 z + \cdots + a_{10} z^{10}, \qquad a_i \in \mbox{Unif}(0,1) \)



Taylor Style w/ complex coefficients: 5 million polynomials:
\( a_0 + a_1 z + a_2 \frac{z^2}{2!} + \cdots + a_{10} \frac{z^{10}}{10!}, \qquad a_i \in N(0,1) + i N(0,1) \)

Root Taylor Style w/ complex coefficients: 5 million polynomials:
\( a_0 + a_1 z + a_2 \frac{z^2}{\sqrt{2!}} + \cdots + a_{10} \frac{z^{10}}{\sqrt{10!}}, \qquad a_i \in N(0,1) + i N(0,1) \)
