Research Article
Polynomial GCD Derived through Monic Polynomial Subtractions
function Z = poly_roots(p) | % *** Solve multiple-root polymonials *** | % | mz = length(p)-max(find(p)); | p0 = p(min(find(p)):max(find(p))); | q0 = polyder(p0); | if length(p0) < 2, Z = [0,mz]; return, end; | g = polygcd(p,q); | u0 = deconv(p0,g0); | v0 = deconv(q0,g0); | w0 = polyder(u0); | z0 = roots(u0); | m0 = polyval(v0,z0)./polyval(w0,z0); | Z = [z0,round(abs(m0))]; | if mz > 0, Z = [Z; 0,mz]; end; |
|