Дан многочлен p(x) степени 5 с целыми коэффициентами. Какие свойства делимости и остатков при делении на x-1 и x+1 можно использовать, чтобы определить наличие целых корней? Предложите алгоритм проверки и проанализируйте границы применимости
Ключевые свойства и наблюдения - Остаток при делении на x−1x-1x−1 равен значению в точке 111: p(x)=(x−1)q(x)+p(1),p(x)=(x-1)q(x)+p(1),p(x)=(x−1)q(x)+p(1), поэтому p(1)=0p(1)=0p(1)=0 тогда и только тогда x−1x-1x−1 делит p(x)p(x)p(x) (корень x=1x=1x=1). - Аналогично для x+1x+1x+1: p(x)=(x+1)r(x)+p(−1),p(x)=(x+1)r(x)+p(-1),p(x)=(x+1)r(x)+p(−1), поэтому p(−1)=0p(-1)=0p(−1)=0 ⇔ x=−1x=-1x=−1 — корень. - Если целое число ttt — корень p(t)=0p(t)=0p(t)=0, то из первой формулы при подстановке x=tx=tx=t получаем: (t−1)∣p(1).(t-1)\mid p(1).(t−1)∣p(1). Из второй: (t+1)∣p(−1).(t+1)\mid p(-1).(t+1)∣p(−1).
- По теореме о рациональных корнях (для целых коэффициентов) любое целое корень ttt делит свободный член a0a_0a0: t∣a0.t\mid a_0.t∣a0. Следовательно для любого целого корня ttt одновременно выполняются три необходимых условия: t∣a0,(t−1)∣p(1),(t+1)∣p(−1).
t\mid a_0,\qquad (t-1)\mid p(1),\qquad (t+1)\mid p(-1). t∣a0,(t−1)∣p(1),(t+1)∣p(−1).
Это сильно сужает кандидатов, но не даёт достаточного условия (последняя тройка условий не гарантирует p(t)=0p(t)=0p(t)=0). Алгоритм проверки целых корней (практически эффективный) 1. Вычислить свободный член a0a_0a0, значения p(1)p(1)p(1) и p(−1)p(-1)p(−1). 2. Найти все целые делители D={±d: d∣a0}D=\{\pm d:\ d\mid a_0\}D={±d:d∣a0}. 3. Для каждого t∈Dt\in Dt∈D отсеять, если не выполняются: (t−1)∣p(1)(t-1)\mid p(1)(t−1)∣p(1) или (t+1)∣p(−1)(t+1)\mid p(-1)(t+1)∣p(−1). 4. Для оставшихся кандидатов вычислить p(t)p(t)p(t). Если для некоторого tttp(t)=0p(t)=0p(t)=0, то найден целый корень. 5. Если нужно все целые корни, при каждом найденном целом корне выполнить деление многочлена на (x−t)(x-t)(x−t) и повторить процесс для многочлена меньшей степени. Анализ границ применимости и замечания - Условия из пункта 3 являются необходимыми, но не достаточными: кандидат может пройти проверки делимости, но не быть корнем (нужно проверять p(t)=0p(t)=0p(t)=0). - Метод особенно эффективен, когда ∣a0∣|a_0|∣a0∣, ∣p(1)∣|p(1)|∣p(1)∣ и ∣p(−1)∣|p(-1)|∣p(−1)∣ малы (мало делителей). В худшем случае число кандидатов — число делителей a0a_0a0 (обычно экспоненциально меньше по сравнению с перебором больших диапазонов). - Если p(1)=0p(1)=0p(1)=0 или p(−1)=0p(-1)=0p(−1)=0, соответствующие корни сразу обнаруживаются. - Этот подход применим ко всем многочленам с целыми коэффициентами любой степени (не зависит от того, что степень равна 5); степень влияет только на скорость деления и число потенциальных целых корней. - Для дополнительного отсева можно использовать модульные проверки по простым числам (например, если p(t)≢0(modm)p(t)\not\equiv0\pmod mp(t)≡0(modm) для некоторого mmm, то ttt не корень), или теоремы о границах корней (например, оценки Коши) чтобы ограничить абсолютное значение возможных корней.
- Остаток при делении на x−1x-1x−1 равен значению в точке 111: p(x)=(x−1)q(x)+p(1),p(x)=(x-1)q(x)+p(1),p(x)=(x−1)q(x)+p(1), поэтому p(1)=0p(1)=0p(1)=0 тогда и только тогда x−1x-1x−1 делит p(x)p(x)p(x) (корень x=1x=1x=1).
- Аналогично для x+1x+1x+1: p(x)=(x+1)r(x)+p(−1),p(x)=(x+1)r(x)+p(-1),p(x)=(x+1)r(x)+p(−1), поэтому p(−1)=0p(-1)=0p(−1)=0 ⇔ x=−1x=-1x=−1 — корень.
- Если целое число ttt — корень p(t)=0p(t)=0p(t)=0, то из первой формулы при подстановке x=tx=tx=t получаем: (t−1)∣p(1).(t-1)\mid p(1).(t−1)∣p(1). Из второй: (t+1)∣p(−1).(t+1)\mid p(-1).(t+1)∣p(−1). - По теореме о рациональных корнях (для целых коэффициентов) любое целое корень ttt делит свободный член a0a_0a0 : t∣a0.t\mid a_0.t∣a0 .
Следовательно для любого целого корня ttt одновременно выполняются три необходимых условия:
t∣a0,(t−1)∣p(1),(t+1)∣p(−1). t\mid a_0,\qquad (t-1)\mid p(1),\qquad (t+1)\mid p(-1).
t∣a0 ,(t−1)∣p(1),(t+1)∣p(−1). Это сильно сужает кандидатов, но не даёт достаточного условия (последняя тройка условий не гарантирует p(t)=0p(t)=0p(t)=0).
Алгоритм проверки целых корней (практически эффективный)
1. Вычислить свободный член a0a_0a0 , значения p(1)p(1)p(1) и p(−1)p(-1)p(−1).
2. Найти все целые делители D={±d: d∣a0}D=\{\pm d:\ d\mid a_0\}D={±d: d∣a0 }.
3. Для каждого t∈Dt\in Dt∈D отсеять, если не выполняются: (t−1)∣p(1)(t-1)\mid p(1)(t−1)∣p(1) или (t+1)∣p(−1)(t+1)\mid p(-1)(t+1)∣p(−1).
4. Для оставшихся кандидатов вычислить p(t)p(t)p(t). Если для некоторого ttt p(t)=0p(t)=0p(t)=0, то найден целый корень.
5. Если нужно все целые корни, при каждом найденном целом корне выполнить деление многочлена на (x−t)(x-t)(x−t) и повторить процесс для многочлена меньшей степени.
Анализ границ применимости и замечания
- Условия из пункта 3 являются необходимыми, но не достаточными: кандидат может пройти проверки делимости, но не быть корнем (нужно проверять p(t)=0p(t)=0p(t)=0).
- Метод особенно эффективен, когда ∣a0∣|a_0|∣a0 ∣, ∣p(1)∣|p(1)|∣p(1)∣ и ∣p(−1)∣|p(-1)|∣p(−1)∣ малы (мало делителей). В худшем случае число кандидатов — число делителей a0a_0a0 (обычно экспоненциально меньше по сравнению с перебором больших диапазонов).
- Если p(1)=0p(1)=0p(1)=0 или p(−1)=0p(-1)=0p(−1)=0, соответствующие корни сразу обнаруживаются.
- Этот подход применим ко всем многочленам с целыми коэффициентами любой степени (не зависит от того, что степень равна 5); степень влияет только на скорость деления и число потенциальных целых корней.
- Для дополнительного отсева можно использовать модульные проверки по простым числам (например, если p(t)≢0(modm)p(t)\not\equiv0\pmod mp(t)≡0(modm) для некоторого mmm, то ttt не корень), или теоремы о границах корней (например, оценки Коши) чтобы ограничить абсолютное значение возможных корней.