NROOTS: complex polynomial root finder

NROOTS finds all the roots of real/complex polynomials. Accuracy is better than with ROOTS.
1K Downloads
Updated 9 Mar 2011

View License

NROOTS attempts to find all the roots of a real/complex polynomial. It uses a two-step algorithm: a first-approximation to a root is found via the companion matrix method (as per the built-in function ROOTS) and then this approximation is refined (polished) via a Newton-Raphson iteration scheme. The Newton-Raphson refinement will be rejected if it does not represent an improvement over the original root OR if the refined root actually corresponds to a different ("incorrect") root.

The algorithm is about an order of magnitude slower though generally more accurate (see figure for illustration) than ROOTS.

---------------------------------------

Note: NROOTS' goal is basically to polish output from ROOTS. In the (hopefully rare) situations where ROOTS fails to compute one or more roots accurately, NROOTS will be similarly unlikely to succeed. However, NROOTS seems to work very well in "non-pathological" cases. An algorithm such as e.g. MULTROOT by Z. Zeng (2004) would be more suitable for problems involving, say, degenerate roots (although the accuracy comes at the expense of speed and simplicity).

Further note: I wrote this algorithm for the purpose of finding accurately non-degenerate roots of degree-5 complex polynomials, for which purpose it works well. However, suggestions as to how the algorithm might be made more robust, versatile or efficient would be appreciated.

Cite As

Vinesh Rajpaul (2024). NROOTS: complex polynomial root finder (https://www.mathworks.com/matlabcentral/fileexchange/30696-nroots-complex-polynomial-root-finder), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2008a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Polynomials in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.0.0