roots_

roots_(c) works with poorly scaled polynomials and does not return zero when c(end) is nonzero.

Vous suivez désormais cette soumission

This fixes the MATLAB roots function to work with poorly scaled polynomials. For example,
c = 10.^(20:-1:0);
x = roots(c); max(abs(polyval(c,x))) % 7.647251195518823e-08
x = roots_(c); max(abs(polyval(c,x))) % 7.257804400984254e-14
This also fixes the MATLAB roots function to work with small roots. For example, roots([1,1,1,1e-32]) incorrectly gives a root of exact zero. roots_([1,1,1,1e-32]) gives the correct root of -1e-32.
(Reported as Case Number 04335183 on 30 Jun 2020 and Case Number 07198299 on 05 Aug 2024.)

Citation pour cette source

Kenneth Johnson (2026). roots_ (https://fr.mathworks.com/matlabcentral/fileexchange/84280-roots_), MATLAB Central File Exchange. Extrait(e) le .

Informations générales

Compatibilité avec les versions de MATLAB

  • Compatible avec toutes les versions

Plateformes compatibles

  • Windows
  • macOS
  • Linux
Version Publié le Notes de version Action
1.1.2

Fix problem with complex coefficients. (Replace find(logical(c)) with find(c~=0).)

1.1.1

Eliminate infinite roots.

1.1.0

Modified to work with poorly scaled polynomials.

1.0.1

Added tag "polynomial roots".

1.0.0