Pierwiastki wielomianów

by Jerry Sky

2020-11-03



1. DEF

Dany jest wielomian w postaci naturalnej p(z)=anzn+an1zn1++a2z2+a1z+a0,an0 p(z) = a_n z^n + a_{n-1} z^{n-1} + \dotsb + a_2 z^2 + a_1 z + a_0, \enspace a_n \neq 0 gdzie współczynniki aka_k i zmienna zz mogą być liczbami zespolonymi (ak,zC)(a_k, z \in \mathbb{C}).


2. Zasadnicze Twierdzenie Algebry

Dowolny wielomian stopnia n1n \ge 1 nad ciałem liczb zespolonych ma co najmniej jeden pierwiastek zespolony.

Jeśli akRa_k \in \mathbb{R}, to pierwiastki występują w parach sprzężonych. Dzieląc wielomian p(z)(n1)p(z) \enspace (n\ge1) przez czynnik liniowy (zc)(z-c) otrzymamy p(z)=(zc)q(z)+R p(z) = (z-c) q(z) + R gdzie

Jeśli z=cz = c, to p(c)=Rp(c) = R.
Jeśli cc jest pierwiastkiem wielomianu pp, to R=0R = 0 oraz p(z)=(zc)q(z). p(z) = (z-c) q(z).


Jeśli r1r_1 jest pierwiastkiem pp, to pp możemy zapisać p(z)=(zr1)q1(z). p(z) = (z - r_1) q_1(z).

Zgodnie z twierdzeniem q1q_1 ma pierwiastek r2r_2 (chyba że jest wielomianem zerowego stopnia). Możemy więc podzielić q1q_1 przez czynnik liniowy zr2z - r_2 i otrzymamy p(z)=(zr1)(zr2)q2(z). p(z) = (z - r_1)(z - r_2)q_2(z).

W każdym kroku tego procesu zmniejszamy stopień qkq_k o jeden, aż qnq_n będzie stałą. Ostatecznie otrzymamy rozkład pp p(z)=(zr1)(zr2)(zrn)qnp(z) = (z - r_1)(z - r_2)\dotsb(z - r_n) q_n.

Zatem pp ma nn pierwiastków zespolonych (każdy pierwiastek liczymy tyle razy, ile wynosi jego krotność).
Jeśli akRa_k \in \mathbb{R}, pierwiastki występują w parach sprzężonych.


3. Twierdzenie#2

Wszystkie zera wielomianu p(z)=anzn+an1zn1++a2z2+a1z+a0 p(z) = a_n z^n + a_{n-1} z^{n-1} + \dotsb + a_2 z^2 + a_1 z + a_0 leżą wewnątrz koła {zC:z<ρ=1+an1max0k<nak}. \left\{ z \in \mathbb{C}: |z| < \rho = 1 + |a_n|^{-1} \cdot \max_{0 \le k < n}|a_k| \right\}.

3.1. Przykład

Znaleźć koło zawierające wszystkie zera wielomianu p(z)=z44z3+7z25z2. p(z) = z^4 - 4z^3 + 7z^2 - 5z - 2.

Promień koła ρ=1+a41max0k<4ak=8\rho = 1 + |a_4|^{-1} \cdot \max_{0 \le k <4} |a_k| = 8.


4. Notacja s(z)s(z)

Rozpatrzmy funkcję s(z)=znp(1z)s(z) = z^n \cdot p\left(\frac{1}{z}\right).
Wówczas s(z)=zn(an(1z)n+an1(1z)n1++a0)==an+an1z+an2z2++a0zn. s(z) = z^n \cdot \left( a_n \left( \frac{1}{z} \right)^n + a_{n-1} \left( \frac{1}{z} \right)^{n-1} + \dotsb + a_0 \right)=\\ = a_n + a_{n-1} z + a_{n-2} z^2 + \dotsb + a_0 z^n.

Oczywiście p(z0)=0    s(1z0)=0p(z_0) = 0 \iff s\left(\frac{1}{z_0}\right) = 0 dla z00z_0 \neq 0.


5. Twierdzenie#3

Jeżeli wszystkie zera wielomianu ss leżą w kole {zC:zρ}\left\{ z \in \mathbb{C}: |z| \le \rho \right\}, to wszystkie niezerowe miejsca zerowe wielomianu ρ\rho leżą na zewnątrz koła {zC:z<ρ1}\left\{ z \in \mathbb{C}: |z| < \rho^{-1} \right\}.

5.1. Przykład

Znaleźć koło, w którym nie ma zer wielomianu pp p(z)=z44z3+7z25z2. p(z) = z^4 - 4z^3 + 7z^2 - 5z - 2.

Wielomian ss ma postać s(z)=2z45z3+7z24z+1 s(z) = -2z^4 - 5z^3 + 7z^2 - 4z + 1

Zera ss leżą w kole o promieniu ρ=1+a41max0k<4ak=92\rho = 1 + |a_4|^{-1} \cdot \max_{0 \le k < 4} |a_k| = \frac{9}{2}. Zera pp leżą na zewnątrz koła o promieniu 29\frac{2}{9}. Stąd wszystkie zera wielomianu pp leżą w pierścieniu 29<z<8\frac{2}{9} < |z| < 8.


6. Algorytm Hornera

Załóżmy, że wielomian pp jest dany w postaci p(z)=anzn+an1zn1++a2z2+a1z+a0. p(z) = a_n z^n + a_{n-1} z^{n-1} + \dotsb + a_2 z^2 + a_1 z + a_0.

Wielomian pp możemy zapisać w postaci p(z)=(((anz+an1)z+an2)z+)z+a0. p(z) = (\dots ((a_n z + a_{n-1})z + a_{n-2})z + \dotsb)z + a_0.

Dla danego z0z_0 algorytm Hornera wyznacza p(z0)p(z_0) oraz wielomian q(z)=b0+b1z++bn1zn1q(z) = b_0 + b_1 z + \dotsb + b_{n-1} z^{n-1} taki, że p(z)=(zz0)q(z)+p(z0) p(z) = (z - z_0) q(z) + p(z_0)

Nieznane współczynniki bkb_k wielomianu qq wyznaczamy z równania anzn+an1zn1++a2z2+a1z+a0==(zz0)(b0+b1z++bn1zn1)+p(z0). a_n z^n + a_{n-1} z^{n-1} + \dotsb + a_2 z^2 + a_1 z + a_0=\\ = (z - z_0) (b_0 + b_1 z + \dotsb + b_{n-1} z^{n-1}) + p(z_0).


Otrzymujemy następujący układ równań: an=bn1an1+z0bn1=bn2a1+z0b1=b0a0+z0b0=p(z0) \begin{aligned} a_n &= b_{n-1}\\ a_{n-1} + z_0 b_{n-1} &= b_{n-2}\\ &\dotsb\\ a_1 + z_0 b_1 &= b_0\\ a_0 + z_0 b_0 &= p(z_0) \end{aligned}

  1. bn1anb_{n-1} \gets a_n
  2. for kn1k \gets n-1 down to 00:
    1. bk1ak+z0bkb_{k-1} \gets a_k + z_0 b_k
  3. return b1,b0,,bn1b_{-1}, b_0, \dots, b_{n-1}

W ręcznych obliczeniach p(z0)p(z_0) oraz q(z)q(z) użyteczna jest tabela


6.1. Przykład

Oblicz za pomocą algorytmu Hornera wartość wielomianu pp w punkcie 33 i wielomian q(z)q(z).

p(z)=z44z3+7z25z2. p(z) = z^4 - 4z^3 + 7z^2 - 5z - 2.

Konstruujemy tabelę do ręcznych obliczeń

Czyli


7. Zastosowanie metody Newtona

Przedstawimy teraz sposób wykorzystania metody Newtona do obliczania pierwiastków danego wielomianu p(z)p(z) zk+1=zkp(zk)p(zk). z_{k+1} = z_k - \frac{p(z_k)}{p'(z_k)}.

Jak efektywnie obliczyć p(zk)p(z_k) oraz p(zk)p'(z_k)?

Po zróżnicowaniu równości p(z)=(zz0)q(z)+p(z0)p(z) = (z - z_0) q(z) + p(z_0) otrzymujemy p(z)=q(z)+(zz0)q(z)p'(z) = q(z) + (z - z_0) q'(z).

Następnie dla z=z0z = z_0 otrzymujemy p(z0)=q(z0). p'(z_0) = q(z_0).

Pochodną p(z0)p'(z_0) możemy więc obliczyć stosując algorytm Hornera używając współczynników bkb_k wielomianu q(z)q(z).

7.1. Horner(n,z0,a0,,an)( p(z0), p(z0) )(n,z_0, a_0, \dots, a_n) \to \big(~p(z_0),~ p'(z_0)~\big):

  1. αan\alpha \gets a_n
  2. β0\beta \gets 0
  3. for kn1k \gets n-1 down to 00:
    1. βα+z0β\beta \gets \alpha + z_0 \beta \qquad (obliczanie p(z0)p'(z_0))
    2. αak+z0α\alpha \gets a_k + z_0 \alpha \qquad (obliczanie p(z0)p(z_0))
  4. return α,β\alpha, \beta

7.2. Newton (n,z0,a0,,an,M,ϵ)( p(r),p(r),r )(n, z_0, a_0, \dots, a_n, M, \epsilon) \to \big(~ p(r), p'(r), r~ ):

  1. for k1k \gets 1 to MM:
    1. [α,β][\alpha, \beta] \gets Horner(n,z0,a0,,an)(n, z_0, a_0, \dots, a_n) \qquad (obliczanie p(z0),p(z0)p(z_0), p'(z_0))
    2. z1z0αβz_1 \gets z_0 - \frac{\alpha}{\beta} \qquad (metoda Newtona)
    3. if z1z0<ϵ|z_1 - z_0| < \epsilon:
      1. return α,β,z1\alpha, \beta, z_1

8. Twierdzenie#4

Niech xkx_k oraz xk+1x_{k+1} będą kolejnymi przybliżeniami skonstruowanymi przez metodę Newtona zastosowaną do wielomianu pp stopnia nn.
Wówczas istnieje miejsce zerowe wielomianu pp oddalone od xkx_k w płaszczyźnie zespolonej o co najwyżej nxkxk+1n|x_k - x_{k+1}|.

8.1. Uwaga

W celu wyznaczenia pierwiastków zespolonych wielomianu p(z)p(z) za pomocą metody Newtona, musimy zaprogramować metodę Newtona w arytmetyce zespolonej.


9. DEF: Deflacja czynnikiem liniowym

Po wyznaczeniu pierwiastka r1r_1 wielomianu pp musimy wyznaczyć pozostałe pierwiastki r2,,rnr_2, \dots, r_n.
„Oddzielamy” więc obliczony pierwiastek r1r_1, tzn. wyznaczamy wielomian q(z)q(z) stopnia n1n-1: p(z)=(zr1)q(z)p(z) = (z - r_1) q(z).
Proces ten nazywamy deflacją.


Po znalezieniu pierwiastka r1r_1 wielomianu p(z)p(z), np. metodą Newtona, stosujemy deflację czynnikiem (zr1)(z - r_1). Następnie wyznaczamy pierwiastek r2r_2, np. metodą Newtona, zredukowanego wielomianu q1(z)q_1(z) i ponownie wykonujemy deflację czynnkiem (zr2)(z - r_2). Proces kontynuujemy aż wyznaczymy wszystkie pierwiastki.

Uwagi o deflacji


9.1. Przykład

Niech r1=1r_1 = 1 będzie obliczonym pierwiastkiem wielomianu p(z)=z3+z2z1p(z) = z^3 + z^2 - z - 1. Wykonać deflację czynnikiem (z1)(z-1), tzn. wyznaczyć wielomian q(z)q(z) stopnia 22.

Aby wyznczayć qq stosujemy algorytm Hornera. Konstruujemy tabelę do ręcznych obliczeń:

p(1)=0,q(z)=z2+2z+1p(1) = 0, q(z) = z^2 + 2z + 1, p(z)=(z1)(z2+2z+1) p(z) = (z-1) (z^2 + 2z + 1)