Es gibt kein Verfahren, das zuverlässig in endlicher Zeit alle realen Nullstellen aller möglichen Polynome findet. Wenn du also sagst, dass dein Verfahren in 95% aller Fälle funktioniert, dann finde ich, ist das schon ziemlich gut und du bist fertig.
Das, was du machst, ist Rumprobieren in willkürlichen Intervallschritten. Bei dem einen Polynom kann es mit 1000000 Intervallschritten klappen, bei dem anderen funktioniert es nur mit 1000001 Schritten und wieder ein anderes geht nur mit 523233 Schritten. Das liegt doch total in der Natur der Sache, dass du einfach die Funktion an 'n' Stellen samplest und hoffst, dort zwei Stellen mit unterschiedlichem Vorzeichen erwischt zu haben.
Besonders tückisch ist für deinen Algorithmus (und sowieso auch für Bisektion) das Polynom 25x⁴ - 50x³ + 35x² - 10x + 1, welches nämlich keine Vorzeichenwechsel besitzt. Die Nullstellen sind auch gleichzeitig Minima.
Um solche Polynome auch noch abzudecken, könntest du einfach das Ableitungspolynom bilden und dessen Nullstellen mit deinem Verfahren finden. Wenn du die hast, testest du einfach, ob das auch Nullstellen des ursprünglichen Polynoms sind.