A given polynomial having multiple roots is solved by the routine
Z = poly_roots(p)
Input p: polynomial coefficient vector
Output Z: root-multiplicity pairs
The MATLAB source code is very simple and compact (fewer then 50 lines) and amazingly gives the expected results for any test polynomials of very high degree and multiplicities.
In this simple routine 'poly_roots.m', except for a MATLAB built-in function 'roots.m', all the required computations involve only simple elementary arithematic operations (such
as additions, subtractions, multiplications, divisions, and integer exponations), without applying any high mathematics. The only routine 'roots.m' is used here mainly to solve a simple roots polynomial (not any multiple roots polynomials).
Most of the calculations in this routine involve elementary arithematic operations, therefore, it is fairly easy to improve the expected results from the existing double precision to vpi' multiple precision.
For detail description, please refer to
F.C. Chang, "Solving multple-root polynomials" IEEE Antennas and Propagation Magazine, Vol.51, No.6, pp. 151-155, Dec. 2009.
Feng Cheng Chang (2023). Polynomials with multiple roots solved (https://www.mathworks.com/matlabcentral/fileexchange/25375-polynomials-with-multiple-roots-solved), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: Solving multiple-root polynomials
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Correct a tiny bug, pinpointed by a reader.
Minor correction to poly_roots.m
Update the original source code. It involves only simple elementary operations, except 'roots.m'. It may easily convert into multiple precision later.
add some examples
Update the m-file to speed up operations. Also present 17 typical examples for test polynomials in MATLAB script file.
Update m-file -- improve help description
Update the m-file, the very small roots can thus be solved.