Skip to main content

Timeline for Finding all roots of a polynomial

Current License: CC BY-SA 4.0

20 events
when toggle format what by license comment
Aug 10, 2018 at 17:53 history edited Michael Hardy CC BY-SA 4.0
added 6 characters in body
Aug 10, 2018 at 17:43 comment added David C. Ullrich @AndrejBauer Good point. Except sometimes $|p(z)|$ small does imply there's a root nearby. See new and improved answer below...
May 7, 2010 at 18:17 comment added Pace Nielsen @Qiaochu: I didn't notice that. Thank you. There are methods, in the more general case, that avoid the issue I brought up. But with integer coefficients, one can compute multiple zeros more easily.
Apr 30, 2010 at 11:11 comment added Roland Bacher Another method to speed up things: Search (approximatively) all $2n$ zeroes of the real part of $f$ restricted to the circle of radius $\rho=R+1$ and follow these zeroes (meeting at zeroes of the derivative) by decreasing $\rho$ until hitting roots .
Apr 29, 2010 at 19:47 comment added Qiaochu Yuan @Pace: the original problem specified integer coefficients. But I understand your concern.
Apr 29, 2010 at 19:27 comment added Pace Nielsen @damiano: I imagine that the coefficients of the polynomial are not perfectly understood, and can only be computed to arbitrary accuracy. I believe that in that case it is impossible to prove that a polynomial is non-zero. Hence, it is impossible to tell if the gcd is non-constant.
Apr 29, 2010 at 16:07 comment added damiano @Andrej Bauer: this is true, but maybe it can be fixed as follows. First, reduce to the case in which the roots are simple (by dividing by the gcd with the derivative). So now we know how many roots we are looking for. Fix a precision and start with Qiaochu's strategy. As you decrease the size of $\epsilon$, the sets (not nec connected) of squares will start zooming in on the set of zeros, leaving out the "far-away" regions where there is no zero. When you found an $\epsilon$ such that, within your precision, you only have $\deg(f)$ "basins" for your candidate roots, you stop.
Apr 29, 2010 at 15:31 comment added Qiaochu Yuan Thanks, Andrej. Do you know if Dror's improvement avoids this problem?
Apr 29, 2010 at 15:31 history edited Qiaochu Yuan CC BY-SA 2.5
added 74 characters in body
Apr 29, 2010 at 11:59 comment added Andrej Bauer The proposed answer does not work. If the task is to list all the zeroes then the algorithm must decide which squares of side length $\epsilon$ contain zeroes and which do not. How is it supposed to do that? Just because an approximate value at a point in the mesh is close to zero does not mean there is an actual zero there. What you are proposing is to compute a sequence of nested compact sets (finite unions of squares) whose intersection is the set of zeroes. But the trouble is that some of the squares may "disappear" after a while, so it's hard to tell where the zeroes actuall are.
Apr 1, 2010 at 18:05 vote accept Chris
Apr 1, 2010 at 18:05 vote accept Chris
Apr 1, 2010 at 18:05
Apr 1, 2010 at 14:00 comment added Dror Speiser A somewhat similar idea, due to Mike Meylan, follows: bound the circle in a square. Then, recursively, subdivide the square into 4 squares. Now approximately compute the argument principle integral around each square, and zoom in on any square that had a value larger than 0. This reduces the complexity dependence on $R$ from quadratic to linear.
Mar 31, 2010 at 23:27 comment added Dror Speiser :) It really is terrible...
Mar 31, 2010 at 23:04 comment added Ryan Budney To speed up your "Now subdivide..." argument you'd compute some Lipschitz bounds for the polynomial's derivative on your subdivisions and apply Kantorovich's theorem (using Newton's method to find the roots). In practice this is very fast.
Mar 31, 2010 at 21:52 history edited Qiaochu Yuan CC BY-SA 2.5
deleted 24 characters in body
Mar 31, 2010 at 21:45 history edited Qiaochu Yuan CC BY-SA 2.5
added 232 characters in body
Mar 31, 2010 at 20:49 history edited Qiaochu Yuan CC BY-SA 2.5
added 9 characters in body
Mar 31, 2010 at 20:44 history edited Qiaochu Yuan CC BY-SA 2.5
added 194 characters in body
Mar 31, 2010 at 20:38 history answered Qiaochu Yuan CC BY-SA 2.5