Algorytm Jenkinsa-Trauba
Algorytm Jenkinsa-Trauba dla wielomianów zerowych to szybka globalnie zbieżna iteracyjna wielomianowa metoda wyszukiwania pierwiastków, opublikowana w 1970 roku przez Michaela A. Jenkinsa i Josepha F. Trauba . Podali dwa warianty, jeden dla ogólnych wielomianów o zespolonych współczynnikach, powszechnie znany jako algorytm „CPOLY”, oraz bardziej skomplikowany wariant dla szczególnego przypadku wielomianów o rzeczywistych współczynnikach, powszechnie znany jako algorytm „RPOLY”. To ostatnie jest „praktycznie standardem w wielomianowych wyszukiwarkach pierwiastków z czarną skrzynką”.
W tym artykule opisano złożony wariant. Biorąc pod uwagę wielomian P ,
ze złożonymi współczynnikami oblicza przybliżenia do n zer } P ( z ), po jednym na raz w mniej więcej rosnącym rzędzie wielkości. Po obliczeniu każdego pierwiastka jego czynnik liniowy jest usuwany z wielomianu. Użycie tej deflacji gwarantuje, że każdy pierwiastek zostanie obliczony tylko raz i że wszystkie pierwiastki zostaną znalezione.
Wariant rzeczywisty jest zgodny z tym samym wzorcem, ale jednocześnie oblicza dwa pierwiastki, albo dwa pierwiastki rzeczywiste, albo parę sprzężonych pierwiastków zespolonych. Unikając złożonej arytmetyki, wariant rzeczywisty może być szybszy (czterokrotnie) niż wariant złożony. Algorytm Jenkinsa-Trauba pobudził znaczne badania nad teorią i oprogramowaniem dla metod tego typu.
Przegląd
Algorytm Jenkinsa-Trauba oblicza wszystkie pierwiastki wielomianu ze złożonymi współczynnikami. Algorytm rozpoczyna się od sprawdzenia wielomianu pod kątem występowania bardzo dużych lub bardzo małych pierwiastków. W razie potrzeby współczynniki są przeskalowane poprzez przeskalowanie zmiennej. W algorytmie odpowiednie pierwiastki są znajdowane jeden po drugim i generalnie w coraz większym rozmiarze. Po znalezieniu każdego pierwiastka wielomian jest deflowany przez podzielenie odpowiedniego współczynnika liniowego. Rzeczywiście, faktoryzacja wielomianu na czynnik liniowy i pozostały wielomian deflowany jest już wynikiem procedury wyszukiwania pierwiastków. Procedura wyszukiwania korzeni składa się z trzech etapów, które odpowiadają różnym wariantom odwrotna iteracja mocy . Patrz Jenkins i Traub . Opis można znaleźć także u Ralstona i Rabinowitza, str. 383. Algorytm jest podobny w duchu do algorytmu dwuetapowego badanego przez Trauba.
Procedura wyszukiwania korzeni
Rozpoczynając od bieżącego wielomianu P ( X ) stopnia n , obliczany jest najmniejszy pierwiastek z P(x) . W tym celu konstruuje się ciąg tak zwanych wielomianów H. Wszystkie te wielomiany są stopnia n - 1 i mają zbiegać się do czynnika P ( X ) zawierającego wszystkie pozostałe pierwiastki. Sekwencja H występuje w dwóch wariantach, nieznormalizowanym wariancie, który umożliwia łatwy wgląd teoretyczny i znormalizowanym wariancie wielomiany, które utrzymują współczynniki w zakresie liczbowym.
Konstrukcja wielomianów H. zależy od ciągu liczb zespolonych zwane przesunięciami. Same te przesunięcia zależą, przynajmniej na trzecim etapie, od poprzednich wielomianów H. Wielomiany H są zdefiniowane jako rozwiązanie niejawnej rekurencji
- i
Bezpośrednim rozwiązaniem tego ukrytego równania jest
gdzie podział wielomianowy jest dokładny.
Algorytmicznie można by użyć na przykład i uzyskania ilorazów w samym czasie. Z wynikowych ilorazów p ( X ) i h ( X ) jako wyników pośrednich otrzymujemy kolejny wielomian H jako
Ponieważ współczynnik najwyższego stopnia uzyskuje się z P ( X ) , wiodącym współczynnikiem jest . Jeśli to jest podzielone, znormalizowany H wynosi
Etap pierwszy: proces bez zmian
dla zestawu s λ . Zwykle M=5 wybiera się dla wielomianów o umiarkowanych stopniach do n = 50. Ten etap nie jest konieczny z samych rozważań teoretycznych, ale jest przydatny w praktyce. Podkreśla w H kofaktor (czynnika liniowego) najmniejszego pierwiastka.
Etap drugi: proces na stałe
Przesunięcie dla tego etapu jest określane jako punkt bliski najmniejszemu pierwiastkowi wielomianu. Znajduje się quasi-losowo na okręgu o wewnętrznym promieniu pierwiastka, który z kolei jest szacowany jako dodatnie rozwiązanie równania
Ponieważ lewa strona jest funkcją wypukłą i rośnie monotonicznie od zera do nieskończoności, równanie to jest łatwe do rozwiązania, na przykład metodą Newtona .
Teraz wybierz na okręgu o tym promieniu. Ciąg wielomianów , , jest generowany ze stałą wartością przesunięcia . Podczas tej iteracji bieżące przybliżenie pierwiastka
jest śledzony. Drugi etap kończy się pomyślnie, jeśli warunki
- i
są jednocześnie spełnione. Jeśli po pewnej liczbie iteracji nie było powodzenia, próbowany jest inny losowy punkt na okręgu. Zazwyczaj stosuje się liczbę 9 iteracji dla wielomianów średniego stopnia, ze strategią podwojenia w przypadku wielu niepowodzeń.
Etap trzeci: proces zmiennej zmiany
H. użyciu zmiennych przesunięć które są generowane przez
będąc ostatnim oszacowaniem pierwiastkowym drugiego etapu i
- gdzie jest znormalizowanym wielomianem H , czyli podzielone przez wiodący współczynnik.
Jeśli wielkość kroku w etapie trzecim nie spada wystarczająco szybko do zera, etap drugi jest uruchamiany ponownie przy użyciu innego losowego punktu. Jeśli to się nie powiedzie po niewielkiej liczbie ponownych uruchomień, liczba kroków w etapie drugim jest podwojona.
Konwergencja
Można pokazać, że pod warunkiem, że L jest wybrane wystarczająco duże, s λ zawsze zbiega się do pierwiastka z P .
Algorytm jest zbieżny dla dowolnego rozkładu pierwiastków, ale może nie znaleźć wszystkich pierwiastków wielomianu. Co więcej, zbieżność jest nieco szybsza niż zbieżność kwadratowa iteracji Newtona-Raphsona, jednak wykorzystuje co najmniej dwa razy więcej operacji na krok.
Co daje algorytmowi jego moc?
Porównaj z iteracją Newtona-Raphsona
Iteracja wykorzystuje podane P i . W przeciwieństwie do trzeciego etapu Jenkinsa-Trauba
jest dokładnie iteracją Newtona-Raphsona wykonaną na pewnych funkcjach wymiernych . Dokładniej, Newton-Raphson jest wykonywany na sekwencji funkcji wymiernych
Dla wystarczająco dużego,
jest jak najbardziej zbliżony do wielomianu pierwszego stopnia
gdzie jest jednym z zer . Mimo że etap 3 jest dokładnie iteracją Newtona-Raphsona, różnicowanie nie jest wykonywane.
Analiza wielomianów H
Niech będą pierwiastkami P ( X ). Tak zwane czynniki Lagrange'a P(X) są kofaktorami tych pierwiastków,
Jeśli wszystkie pierwiastki są różne, to czynniki Lagrange'a tworzą podstawę przestrzeni wielomianów stopnia co najwyżej n - 1. Analizując procedurę rekurencji, stwierdza się, że wielomiany H mają reprezentację współrzędnych
Każdy czynnik Lagrange'a ma wiodący współczynnik 1, tak więc wiodący współczynnik wielomianów H jest sumą współczynników. Znormalizowane wielomiany H są zatem
Zamówienia konwergencji
Jeżeli warunek zachodzi dla prawie wszystkich iteracji, znormalizowane wielomiany H będą zbiegać się przynajmniej geometrycznie w kierunku .
Pod warunkiem, że
otrzymuje się asymptotyczne oszacowania dla
- etap 1:
- dla etapu 2, jeśli s jest wystarczająco blisko :
- i
- i dla etapu 3:
- i
- dając wyższy niż kwadratowy rząd zbieżności , gdzie to złoty podział .
Interpretacja jako odwrotna iteracja potęgowa
Wszystkie etapy złożonego algorytmu Jenkinsa-Trauba można przedstawić jako problem algebry liniowej wyznaczania wartości własnych specjalnej macierzy. Ta macierz jest reprezentacją współrzędnych mapy liniowej w n -wymiarowej przestrzeni wielomianów stopnia n -1 lub mniejszego. Główną ideą tej mapy jest interpretacja rozkładu na czynniki
z pierwiastkiem i pozostały współczynnik stopnia n − 1 jako równanie wektora własnego dla mnożenia przez zmienną X , po którym następuje obliczenie reszty z dzielnikiem P ( X ),
To odwzorowuje wielomiany stopnia co najwyżej n - 1 na wielomiany stopnia co najwyżej n - 1. Wartości własne tej mapy są pierwiastkami P ( X ), ponieważ równanie wektora własnego brzmi
co oznacza, że , czyli jest współczynnikiem liniowym P ( X ). W bazie jednomianowej mapa liniowa jest reprezentowana przez towarzyszącą macierz wielomianu P. , jak
wynikowa macierz współczynników to
Do tej macierzy stosuje się odwrotną iterację potęgową w trzech wariantach bez przesunięcia, stałego przesunięcia i uogólnionego przesunięcia Rayleigha w trzech etapach algorytmu. Bardziej wydajne jest wykonywanie operacji algebry liniowej w arytmetyce wielomianowej, a nie przez operacje macierzowe, jednak właściwości iteracji potęgi odwrotnej pozostają takie same.
Rzeczywiste współczynniki
Opisany wcześniej algorytm Jenkinsa-Trauba działa dla wielomianów o zespolonych współczynnikach. Ci sami autorzy stworzyli również trójstopniowy algorytm dla wielomianów o rzeczywistych współczynnikach. Zobacz: Jenkins i Traub Trzyetapowy algorytm dla wielomianów rzeczywistych z wykorzystaniem iteracji kwadratowej . Algorytm znajduje czynnik liniowy lub kwadratowy działający całkowicie w rzeczywistej arytmetyce. Jeśli złożone i rzeczywiste algorytmy zostaną zastosowane do tego samego rzeczywistego wielomianu, rzeczywisty algorytm jest około cztery razy szybszy. Prawdziwy algorytm zawsze jest zbieżny, a stopień zbieżności jest większy niż drugiego rzędu.
Połączenie z przesuniętym algorytmem QR
Istnieje zaskakujący związek z przesuniętym algorytmem QR do obliczania wartości własnych macierzy. Patrz Dekker i Traub Przesunięty algorytm QR dla macierzy hermitowskich . Ponownie przesunięcia można postrzegać jako iterację Newtona-Raphsona na sekwencji funkcji wymiernych zbiegających się do wielomianu pierwszego stopnia.
Oprogramowanie i testowanie
Oprogramowanie dla algorytmu Jenkinsa-Trauba zostało opublikowane jako Jenkins and Traub Algorithm 419: Zeros of a Complex Polynomial . Oprogramowanie dla algorytmu rzeczywistego zostało opublikowane jako Jenkins Algorithm 493: Zeros of a Real Polynomial .
Metody zostały gruntownie przetestowane przez wiele osób. [ kto? ] Zgodnie z przewidywaniami cieszą się zbieżnością szybszą niż kwadratowa dla wszystkich rozkładów zer.
Istnieją jednak wielomiany, które mogą powodować utratę precyzji, co ilustruje poniższy przykład. Wielomian ma wszystkie swoje zera leżące na dwóch półokręgach o różnych promieniach. Wilkinson zaleca, aby dla stabilnej deflacji pożądane było, aby najpierw obliczyć mniejsze zera. Przesunięcia drugiego etapu są dobierane tak, aby zera na mniejszym półokręgu znajdowały się jako pierwsze. Wiadomo, że po deflacji wielomian z zerami na półkolu jest źle uwarunkowany, jeśli stopień jest duży; patrz Wilkinson, s. 64. Pierwotny wielomian miał stopień 60 i miał poważną niestabilność deflacyjną.
Linki zewnętrzne
- Bezpłatna aplikacja Windows do pobrania wykorzystująca metodę Jenkinsa – Trauba dla wielomianów o rzeczywistych i zespolonych współczynnikach
- RPoly++ Zoptymalizowana pod kątem SSE implementacja algorytmu RPOLY w języku C++.