Я предполагаю, что вы рассматриваете полиномы с целыми коэффициентами.
Вы выбрали неверную отправную точку для своих расследований; Ваша цель - найти хорошие оценки для реальных корней. Поиск алгебраической формулы, чтобы вы могли оценить ее с достаточной точностью, - это то, что вы можете сделать, но это не совсем то, что нужно делать здесь. (если, конечно, « k
-ый по величине вещественный корень многочлена» не является одной из ваших алгебраических операций)
Намного лучше начать с использования теоремы Штурма для выделения корней многочлена. Затем вы можете получить более точные оценки с помощью бинарного поиска, но если это слишком медленно, вы можете использовать метод Ньютона для быстрого получения оценок с высокой точностью.
Но это только поиск сертификатов. Остается вопрос о том, какие сертификаты могут существовать.
Прежде всего, я укажу, что вы можете напрямую вычислить, находятся ли два корня точно на единицах, например, вычисляя gcd ( p ( x ) , p ( x - k ) ) . Вам также нужно будет решить, что вы хотите делать с повторяющимися корнями, и действовать соответствующим образом. Я предполагаю, что вы будете иметь дело с этим делом специально.kgcd(p(x),p(x−k))
Если мы знаем, что два корня не находятся точно в единицах, это означает, что вы можете получить оценку с достаточной точностью, чтобы доказать, что они либо больше, либо меньше, чем k единиц. например, есть два вида сертификатов:kk
Первый вид (доказательство в отрицании)
- не корень рap
- не имеет корней в ( а - к , а )p(a−k,a)
- имеет три корня в ( a , ∞ )p(a,∞)
Второй вид (доказательство в позитиве)
- не корень рap
- имеет по крайней мере два корня в ( а - к , а )p(a−k,a)
- имеет два корня в ( a , ∞ )p(a,∞)
Сертификат можно проверить с помощью теоремы Штурма. Теперь, ваш вопрос о размере сертификата сводится к нахождению , сколько битов точности нужно представлять .a
Другими словами, каковы границы возможных значений , где a , b - корни из f ?a−b−ka,bf
Я не уверен в отличном подходе, но тот, который должен дать вам кое-что, должен заметить, что все эти значения являются корнями полинома:
g(x)=Resy(f(y),f(x+y+k))
Почему? Напомним, что результат двух моничных многочленов является произведением всех разностей их корней, поэтому
g(x)=cd2∏a,b(b−(a−x−k))=∏a,b(x−(a−b−k))
где - ведущий коэффициент, а d - степень f . (возможно я написал формулу для - g ( x ) вместо g ( x )cdf−g(x)g(x) ; я никогда не уверен в знаке)
Поэтому вопрос состоит в том, чтобы найти оценки того, насколько большими могут быть коэффициенты , а затем, как только вы это узнаете, найти оценки того, насколько близок корень из ggg к нулю.
(или, альтернативно, найдите наибольшую величину, которую может иметь корень обратного полинома от ; корни обратного полинома являются обратными корням из g )gg