У меня есть многочлены нетривиальной степени (4+), и мне нужно надежно и эффективно определить, имеют ли они корень в интервале [0, T]. Точное расположение или количество корней меня не волнует, мне просто нужно знать, есть ли хотя бы один.
Прямо сейчас я использую интервальную арифметику для быстрой проверки, могу ли я доказать, что корни не могут существовать. Если я не могу, я использую Jenkins-Traub для поиска всех корней полинома. Это явно неэффективно, так как проверяет все настоящие корни и находит их точное положение, информация, которая мне в конечном итоге не нужна.
Есть ли стандартный алгоритм, который я должен использовать? Если нет, есть ли какие-либо другие эффективные проверки, которые я мог бы сделать, прежде чем выполнять полное решение Дженкинса-Трауба для всех корней?
Например, одна оптимизация, которую я мог бы сделать, — это проверить, имеет ли мой многочлен f(t) один и тот же знак при 0 и T. Если нет, то очевидно, что в интервале есть корень. Если это так, я могу найти корни f'(t) и вычислить f для всех корней f' в интервале [0,T]. f(t) не имеет корня в этом интервале тогда и только тогда, когда все эти оценки имеют тот же знак, что и f(0) и f(T). Это уменьшает степень многочлена, который мне нужно найти, на единицу. Не большая оптимизация, но, возможно, лучше, чем ничего.