Как найти корень полинома

Finding polynomial roots is a long-standing problem that has been the object of much research throughout history. A testament to this is that up until the 19th century, algebra meant essentially theory of polynomial equations.

Principles[edit]

Finding the root of a linear polynomial (degree one) is easy and needs only one division: the general equation {displaystyle ax+b=0} has solution {displaystyle x=-b/a.} For quadratic polynomials (degree two), the quadratic formula produces a solution, but its numerical evaluation may require some care for ensuring numerical stability. For degrees three and four, there are closed-form solutions in terms of radicals, which are generally not convenient for numerical evaluation, as being too complicated and involving the computation of several nth roots whose computation is not easier than the direct computation of the roots of the polynomial (for example the expression of the real roots of a cubic polynomial may involve non-real cube roots). For polynomials of degree five or higher Abel–Ruffini theorem asserts that there is, in general, no radical expression of the roots.

So, except for very low degrees, root finding of polynomials consists of finding approximations of the roots. By the fundamental theorem of algebra, a polynomial of degree n has exactly n real or complex roots counting multiplicities.

It follows that the problem of root finding for polynomials may be split in three different subproblems;

  • Finding one root
  • Finding all roots
  • Finding roots in a specific region of the complex plane, typically the real roots or the real roots in a given interval (for example, when roots represents a physical quantity, only the real positive ones are interesting).

For finding one root, Newton’s method and other general iterative methods work generally well.

For finding all the roots, arguably the most reliable method is the Francis QR algorithm computing the eigenvalues of the Companion matrix corresponding to the polynomial, implemented as the standard method[1] in MATLAB.

The oldest method of finding all roots is to start by finding a single root. When a root r has been found, it can be removed from the polynomial by dividing out the binomial xr. The resulting polynomial contains the remaining roots, which can be found by iterating on this process. However, except for low degrees, this does not work well because of the numerical instability: Wilkinson’s polynomial shows that a very small modification of one coefficient may change dramatically not only the value of the roots, but also their nature (real or complex). Also, even with a good approximation, when one evaluates a polynomial at an approximate root, one may get a result that is far to be close to zero. For example, if a polynomial of degree 20 (the degree of Wilkinson’s polynomial) has a root close to 10, the derivative of the polynomial at the root may be of the order of {displaystyle 10^{20};} this implies that an error of 10^{{-10}} on the value of the root may produce a value of the polynomial at the approximate root that is of the order of {displaystyle 10^{10}.}

For avoiding these problems, methods have been elaborated, which compute all roots simultaneously, to any desired accuracy. Presently the most efficient method is Aberth method. A free implementation is available under the name of MPSolve. This is a reference implementation, which can find routinely the roots of polynomials of degree larger than 1,000, with more than 1,000 significant decimal digits.

The methods for computing all roots may be used for computing real roots. However, it may be difficult to decide whether a root with a small imaginary part is real or not. Moreover, as the number of the real roots is, on the average, the logarithm of the degree, it is a waste of computer resources to compute the non-real roots when one is interested in real roots.

The oldest method for computing the number of real roots, and the number of roots in an interval results from Sturm’s theorem, but the methods based on Descartes’ rule of signs and its extensions—Budan’s and Vincent’s theorems—are generally more efficient. For root finding, all proceed by reducing the size of the intervals in which roots are searched until getting intervals containing zero or one root. Then the intervals containing one root may be further reduced for getting a quadratic convergence of Newton’s method to the isolated roots. The main computer algebra systems (Maple, Mathematica, SageMath, PARI/GP) have each a variant of this method as the default algorithm for the real roots of a polynomial.

The class of methods is based on converting the problem of finding polynomial roots to the problem of finding eigenvalues of the companion matrix of the polynomial,[1] in principle, can use any eigenvalue algorithm to find the roots of the polynomial. However, for efficiency reasons one prefers methods that employ the structure of the matrix, that is, can be implemented in matrix-free form. Among these methods are the power method, whose application to the transpose of the companion matrix is the classical Bernoulli’s method to find the root of greatest modulus. The inverse power method with shifts, which finds some smallest root first, is what drives the complex (cpoly) variant of the Jenkins–Traub algorithm and gives it its numerical stability. Additionally, it has fast convergence with order {displaystyle 1+varphi approx 2.6} (where varphi is the golden ratio) even in the presence of clustered roots. This fast convergence comes with a cost of three polynomial evaluations per step, resulting in a residual of O(|f(x)|2+3φ), that is a slower convergence than with three steps of Newton’s method.

Finding one root[edit]

The most widely used method for computing a root is Newton’s method, which consists of the iterations of the computation of

{displaystyle x_{n+1}=x_{n}-{frac {f(x_{n})}{f'(x_{n})}},}

by starting from a well-chosen value x_{0}.

If f is a polynomial, the computation is faster when using Horner’s method or evaluation with preprocessing for computing the polynomial and its derivative in each iteration.

Though the convergence is generally quadratic, it may converge much slowly or even not converge at all. In particular, if the polynomial has no real root, and x_{0} is real, then Newton’s method cannot converge. However, if the polynomial has a real root, which is larger than the larger real root of its derivative, then Newton’s method converges quadratically to this largest root if x_{0} is larger than this larger root (there are easy ways for computing an upper bound of the roots, see Properties of polynomial roots). This is the starting point of Horner method for computing the roots.

When one root r has been found, one may use Euclidean division for removing the factor xr from the polynomial. Computing a root of the resulting quotient, and repeating the process provides, in principle, a way for computing all roots. However, this iterative scheme is numerically unstable; the approximation errors accumulate during the successive factorizations, so that the last roots are determined with a polynomial that deviates widely from a factor of the original polynomial. To reduce this error, one may, for each root that is found, restart Newton’s method with the original polynomial, and this approximate root as starting value.

However, there is no warranty that this will allow finding all roots. In fact, the problem of finding the roots of a polynomial from its coefficients can be highly ill-conditioned. This is illustrated by
Wilkinson’s polynomial: the roots of this polynomial of degree 20 are the 20 first positive integers; changing the last bit of the 32-bit representation of one of its coefficient (equal to –210) produces a polynomial with only 10 real roots and 10 complex roots with imaginary parts larger than 0.6.

Closely related to Newton’s method are Halley’s method and Laguerre’s method. Both use the polynomial and its two first derivations for an iterative process that has a cubic convergence. Combining two consecutive steps of these methods into a single test, one gets a rate of convergence of 9, at the cost of 6 polynomial evaluations (with Horner rule). On the other hand, combining three steps of Newtons method gives a rate of convergence of 8 at the cost of the same number of polynomial evaluation. This gives a slight advantage to these methods (less clear for Laguerre’s method, as a square root has to be computed at each step).

When applying these methods to polynomials with real coefficients and real starting points, Newton’s and Halley’s method stay inside the real number line. One has to choose complex starting points to find complex roots. In contrast, the Laguerre method with a square root in its evaluation will leave the real axis of its own accord.

Finding roots in pairs[edit]

If the given polynomial only has real coefficients, one may wish to avoid computations with complex numbers. To that effect, one has to find quadratic factors for pairs of conjugate complex roots. The application of the multidimensional Newton’s method to this task results in Bairstow’s method.

The real variant of Jenkins–Traub algorithm is an improvement of this method.

Finding all roots at once[edit]

The simple Durand–Kerner and the slightly more complicated Aberth method simultaneously find all of the roots using only simple complex number arithmetic. Accelerated algorithms for multi-point evaluation and interpolation similar to the fast Fourier transform can help speed them up for large degrees of the polynomial. It is advisable to choose an asymmetric, but evenly distributed set of initial points. The implementation of this method in the free software MPSolve is a reference for its efficiency and its accuracy.

Another method with this style is the Dandelin–Gräffe method (sometimes also ascribed to Lobachevsky), which uses polynomial transformations to repeatedly and implicitly square the roots. This greatly magnifies variances in the roots. Applying Viète’s formulas, one obtains easy approximations for the modulus of the roots, and with some more effort, for the roots themselves.

Exclusion and enclosure methods[edit]

Several fast tests exist that tell if a segment of the real line or a region of the complex plane contains no roots. By bounding the modulus of the roots and recursively subdividing the initial region indicated by these bounds, one can isolate small regions that may contain roots and then apply other methods to locate them exactly.

All these methods involve finding the coefficients of shifted and scaled versions of the polynomial. For large degrees, FFT-based accelerated methods become viable.

For real roots, see next sections.

The Lehmer–Schur algorithm uses the Schur–Cohn test for circles; a variant, Wilf’s global bisection algorithm uses a winding number computation for rectangular regions in the complex plane.

The splitting circle method uses FFT-based polynomial transformations to find large-degree factors corresponding to clusters of roots. The precision of the factorization is maximized using a Newton-type iteration. This method is useful for finding the roots of polynomials of high degree to arbitrary precision; it has almost optimal complexity in this setting.[citation needed]

Real-root isolation[edit]

Finding the real roots of a polynomial with real coefficients is a problem that has received much attention since the beginning of 19th century, and is still an active domain of research. Most root-finding algorithms can find some real roots, but cannot certify having found all the roots. Methods for finding all complex roots, such as Aberth method can provide the real roots. However, because of the numerical instability of polynomials (see Wilkinson’s polynomial), they may need arbitrary-precision arithmetic for deciding which roots are real. Moreover, they compute all complex roots when only few are real.

It follows that the standard way of computing real roots is to compute first disjoint intervals, called isolating intervals, such that each one contains exactly one real root, and together they contain all the roots. This computation is called real-root isolation. Having isolating interval, one may use fast numerical methods, such as Newton’s method for improving the precision of the result.

The oldest complete algorithm for real-root isolation results from Sturm’s theorem. However, it appears to be much less efficient than the methods based on Descartes’ rule of signs and Vincent’s theorem. These methods divide into two main classes, one using continued fractions and the other using bisection. Both method have been dramatically improved since the beginning of 21st century. With these improvements they reach a computational complexity that is similar to that of the best algorithms for computing all the roots (even when all roots are real).

These algorithms have been implemented and are available in Mathematica (continued fraction method) and Maple (bisection method). Both implementations can routinely find the real roots of polynomials of degree higher than 1,000.

Finding multiple roots of polynomials[edit]

Numerical computation of multiple roots[edit]

Multiple roots are highly sensitive, known to be ill-conditioned and inaccurate in numerical computation in general. A method by
Zhonggang Zeng (2004), implemented as a MATLAB package, computes multiple roots and corresponding multiplicities of a polynomial accurately even if the coefficients are inexact.[2][3][4]

The method can be summarized in two steps. Let p be the given polynomial. The first step determines the multiplicity structure by applying square-free factorization with a numerical greatest common divisor algorithm.[4] This allows writing p as

{displaystyle (*);;;;p(x)=a(x-z_{1})^{m_{1}}cdots (x-z_{k})^{m_{k}},}

where {displaystyle m_{1},ldots ,m_{k}} are the multiplicities of the distinct roots. This equation is an overdetermined system for having k variables z_1,ldots,z_k on n equations matching coefficients with k<n (the leading coefficient a is not a variable). The least squares solution is no longer ill-conditioned in most cases. The second step applies the Gauss-Newton algorithm to solve the overdetermined system for the distinct roots.

The sensitivity of multiple roots can be regularized due to a geometric property of multiple roots discovered by William Kahan (1972) and the overdetermined system model (*) maintains the multiplicities {displaystyle m_{1},ldots ,m_{k}}.

Square-free factorization[edit]

For polynomials whose coefficients are exactly given as integers or rational numbers, there is an efficient method to factorize them into factors that have only simple roots and whose coefficients are also exactly given. This method, called square-free factorization, is based on the multiple roots of a polynomial being the roots of the greatest common divisor of the polynomial and its derivative.

The square-free factorization of a polynomial p is a factorization p=p_{1}p_{2}^{2}cdots p_{k}^{k} where each p_{i} is either 1 or a polynomial without multiple roots, and two different p_{i} do not have any common root.

An efficient method to compute this factorization is Yun’s algorithm.

References[edit]

  1. ^ a b «Polynomial roots — MATLAB roots». MathWorks. 2021-03-01. Retrieved 2021-09-20.
  2. ^ McNamee, J.M. (2007). Numerical Methods for Roots of Polynomials, Part I. Elsevier. p. 257-278.
  3. ^ Stetter, H.J. (2004). Numerical Polynomial Algebra. SIAM. p. 223.
  4. ^ a b
    Zeng, Zhonggang (2004). «Computing multiple roots of inexact polynomials». Mathematics of Computation. 74 (250): 869-903. arXiv:2301.07880. doi:10.1090/S0025-5718-04-01692-8.

    Zeng, Zhonggang (2004). «Algorithm 835: MultRoot – A Matlab package for computing polynomial roots and multiplicities». ACM Transaction on Mathematical Software. 30: 218-236. doi:10.1145/992200.992209. S2CID 18188044.

Вычисление корней полинома

Вычисляет вещественные корни полинома любой степени численным методом или аналитически, если аналитическое решение существует

Калькулятор вычисляет вещественные корни полинома с целыми или рациональными коэффициентами. Для полинома степени меньше 5 используются аналитические формулы, для полиномов более высоких степеней применяется численный метод. Перед вычислением корней делается попытка разложения исходного многочлена на множители свободные от квадратов. Для иллюстрации отображается график, определяемый полиномом функции. Функция проверяется на четность и нечетность для сокращения области вычислений корней.

PLANETCALC, Вычисление корней многочлена любой степени

Вычисление корней многочлена любой степени

Коэффициенты многочлена, разделенные пробелом.

Точность вычисления

Знаков после запятой: 5

Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

График

Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Алгоритм вычисления вещественных корней полинома любой степени

  • Выполняется проверка на четность — если f(x) = f(-x) — функция четная, если f(x)=-f(-x) — функция нечетная, для этих случаев корни можно искать только в положительной области, отрицательные корни — это положительные с обратным знаком. В противном случае — корни ищутся и в отрицательной и в положительной области
  • Многочлен раскладывается на свободные от квадратов множители при помощи алгоритма Юна Разложение многочлена на свободные от квадратов множители.
  • Каждый множитель, полученный на предыдущем шаге представляет собой многочлен, который решается аналитически если степень<5:
    • Для многочлена 1-й степени — корень — это свободный член с противоположным знаком, деленный на коэффициент при x
    • Многочлен 2-й степени решается при помощи Решение квадратного уравнения
    • 3-й степени Кубическое уравнение
    • 4-й степени Решение уравнения 4-й степени
  • Если степень многочлена больше или равна 5, применяются численные методы
    • Для работы численных методов необходимо уточнить области локализации корней, для этого мы используем алгоритм VAS-CF: Изоляция корней многочлена. Если многочлен четный или нечетный, то для поиска берем только положительную область.
    • Далее для каждого интервала изоляции находится корень методом: Метод бисекции
    • Если многочлен четный или нечетный добавляем в результат полученные ранее корни с противоположным знаком

Ссылка скопирована в буфер обмена

Похожие калькуляторы

  • • Изоляция корней многочлена
  • • Метод выделения полного квадрата
  • • Разложение многочлена на свободные от квадратов множители
  • • Интерполяционный многочлен Ньютона (полином Ньютона)
  • • Интерполяционный многочлен Лагранжа (полином Лагранжа)
  • • Раздел: Алгебра ( 46 калькуляторов )

PLANETCALC, Вычисление корней полинома

Если при значении

многочлен

принимает значение
,
то число

называется корнем этого многочлена.

Число

является корнем многочлена тогда и
только тогда, когда

делится на
,
т.е.
.
Если при этом

делится на
,
но уже не делится на
,
то

называется
-кратным
корнем многочлена
.
Корни кратности

называются простыми корнями многочлена.

Чтобы проверить, будет ли число

корнем многочлена

и какой кратности, можно воспользоваться
схемой Горнера. Сначала

делится на
,
затем, если остаток равен нулю, полученное
частное делится снова на

и т.д. до получения ненулевого остатка.

Пример 1. Проверить, является ли
число

корнем многочлена

и найти кратность.

Решение. Деление на

осуществляем по схеме Горнера


— корень кратности 2.

Пусть

— все различные корни многочлена

с кратностями, равными соответственно

— старший коэффициент
.
Тогда
.Корень
многочлена кратности

является корнем кратности

для его производной. Поэтому
,
где

— многочлен, уже не имеющий

своими корнями. Отсюда н.о.д. многочленов

и

равен
.

Следовательно, многочлен

имеет числа

простыми корнями.

Теперь для отыскания всех корней
многочлена

достаточно найти все корни многочлена
.
Это бывает сделать проще, так как степень

меньше степени
,
когда
.
Построение многочлена

называется отделением кратных корней
многочлена
.

Пример 2. Отделить кратные корни
многочлена
.

Решение.
.
Находим
.
Для этого делим с остатком

на
:


делится на остаток
.
Поэтому
.
Искомый многочлен, отделяющий кратные
корни
,
равен
.

Заметим, что в примере 2 все корни

легко вычислить.

Литература:
— § 22,
— § 9.4;


— № 555-559, 563-566, 569, 570, 585.

§ 3. Вычисление корней многочлена.

Задача вычисления корней некоторого
многочлена часто возникает в практике.
Согласно основной теореме алгебры, все
корни произвольного многочлена

с коэффициентами из числового поля

содержатся в поле комплексных чисел
.
Однако не существует какого-либо
универсального метода вычисления этих
корней. Метод решения этой задачи зависит
от степени многочлена и числового поля
.
Мы перечислим лишь самые основные методы
решения задачи вычисления корней
многочлена.

  1. Корни многочленов 3-й и 4-й степени.

Если
,
то для отыскания всех корней многочлена

необходимо решить уравнение

(1)

Разделим обе части (1) на
.
В результате получим уравнение

(2)

имеющее те же корни, что и уравнение
(1). Сделаем теперь замену неизвестного
.
Эту замену проще всего осуществить,
представляя многочлен

по степеням

с помощью схемы Горнера (§
1) и делая затем замену
.
В результате замены получим уравнение

(3)

Корни уравнения (3) находятся по формуле
Кардано

где,
,

(корни извлекаются в поле комплексных
чисел
).
Применяя эту формулу, нужно для каждого
их трех значений

брать то значение
,
для которого выполняется условие

(такое значение всегда существует).

Если

— все корни уравнения (3), то

— все корни уравнения (1) и многочлена
.

Пример 1. Найти корни многочлена
.

Решение. Разложим многочлен

по степеням
.
Полагая
,
получим уравнение
.
Его корни находятся по формуле
,
где

или
.
Значениями корня

являются числа
.
Соответствующие им значения второго
корня

Отсюда
.
Корни многочлена
,
.

Если

— многочлен 4-й степени, то для вычисления
его корней достаточно иметь способ
вычисления всех корней уравнения вида

(4)

Способ Феррари решения уравнения (4)
состоит в следующем.

Левую часть (4) представляют в виде

, (5)

а затем подбирают

так, чтобы выражение в квадратных скобках
стало квадратом двучлена первой степени.
Для этого необходимо и достаточно
выполнение условия

, (6)

из которого следует, что

является корнем вспомогательного
кубического уравнения (6). Теперь находим
какой-нибудь один корень

и, подставляя его значение в (5), разлагаем
левую часть (4) как разность квадратов
на множители. Задача вычисления корней
сведена теперь к решению двух квадратных
уравнений.

Пример 2. Найти корни многочлена
.

Решение. Составим уравнение

(7)

Представим левую часть (7) в виде

(8)

Подберем

так, чтобы дискриминант квадратного
трехчлена в квадратных скобках был
равен нулю:

или

.

Можно заметить, что 4 — один из корней
этого уравнения. Тогда подставим

в (8) и уравнение (7) примет вид:

или

.

Отсюда, решая уравнения

и
,
получим корни нашего многочлена

Литература:

— § 38,

— № 167, 173, 174.

2. Рациональные корни
многочленов с рациональными коэффициентами.

Многочлен

имеет те же корни, что и многочлен

с целыми коэффициентами, полученный из

умножением на общее кратное знаменателей
всех коэффициентов
.

Если несократимая дробь

является корнем многочлена

с целыми коэффициентами, то выполняются
следующие условия:

1)

— делитель числа
;

2)

— делитель числа
;

3) для любого целого числа

число

является делителем числа
.

Поэтому все рациональные корни многочлена

(если они существуют) нужно искать среди
несократимых дробей, удовлетворяющих
условиям 1, 2, 3.

Если
,
то все рациональные корни

являются целыми числами.

Пример. Найти рациональные корни
многочлена

и определить их кратность.

Решение. Если

— несократимая дробь, является корнем
,
то

делит 12, а

делит 2. Все делители 12:
,
а делители 2: 1,2.

Зафиксируем
.
Тогда по (3) условию
.
В качестве

возьмем

и
.
Тогда

и
.
.
.
Числа 1 и -1 не являются корнями. Если
число

— корень, то

и
.
Такому условию удовлетворяют -2, 4. С
помощью схемы Горнера выясняем, что
число -2 является корнем кратности 2.

Далее, зафиксируем
.
Тогда

и

().
Проверять надо лишь

взаимно простые с
,
т.е.,
.
Среди этих чисел условию ()
удовлетворяют -1, 3. Проверяя по схеме
Горнера дроби

и

выясняем, что корнем является
.
Итак,

— простой корень,

— корень кратности 2.

Литература:

— § 57,

— § 11, 3,

— № 649-651.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Grim soul алчный старьевщик как найти
  • Ветер времени вылетает как исправить
  • Опера сертификат безопасности как исправить
  • Как найти длину окружности по диаметру 15см
  • Симс 4 как найти куклу вуду