Bairstowsova metoda - Bairstows method - Wikipedia
tento článek příliš spoléhá na Reference na primární zdroje.Listopadu 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v numerická analýza, Bairstowova metoda je efektivní algoritmus pro nalezení kořeny skutečné polynomiální libovolného stupně. Algoritmus se poprvé objevil v příloze knihy z roku 1920 Aplikovaná aerodynamika podle Leonard Bairstow.[1][není nutný primární zdroj ] Algoritmus najde kořeny komplexní konjugát páry využívající pouze skutečnou aritmetiku.
Vidět algoritmus hledání kořenů pro další algoritmy.
Popis metody
Přístup společnosti Bairstow je použít Newtonova metoda upravit koeficienty u a proti v kvadratický dokud jeho kořeny nejsou také kořeny řešeného polynomu. Poté lze určit kořeny kvadratu a polynom lze rozdělit kvadratem, aby se tyto kořeny vyloučily. Tento proces je poté iterován, dokud se polynom nestane kvadratickým nebo lineárním, a nebyly stanoveny všechny kořeny.
Dlouhé dělení polynomu, který má být vyřešen
podle získá kvocient a zbytek takhle
Druhá divize podle se provádí, aby se získal kvocient a zbytek s
Proměnné a jsou funkce a . Lze je najít rekurzivně následujícím způsobem.
Kvadratik rovnoměrně rozděluje polynom, když
Hodnoty a pro které k tomu dojde, lze zjistit výběrem počátečních hodnot a iterací Newtonovy metody ve dvou dimenzích
dokud nedojde ke konvergenci. Tuto metodu pro nalezení nul polynomů lze tedy snadno implementovat pomocí programovacího jazyka nebo dokonce tabulky.
Příklad
Úkolem je určit dvojici kořenů polynomu
Jako první kvadratický polynom lze zvolit normalizovaný polynom vytvořený z předních tří koeficientů F(X),
Iterace pak vytvoří tabulku
Č | u | proti | délka kroku | kořeny |
---|---|---|---|---|
0 | 1.833333333333 | −5.500000000000 | 5.579008780071 | −0.916666666667±2.517990821623 |
1 | 2.979026068546 | −0.039896784438 | 2.048558558641 | −1.489513034273±1.502845921479 |
2 | 3.635306053091 | 1.900693009946 | 1.799922838287 | −1.817653026545±1.184554563945 |
3 | 3.064938039761 | 0.193530875538 | 1.256481376254 | −1.532469019881±1.467968126819 |
4 | 3.461834191232 | 1.385679731101 | 0.428931413521 | −1.730917095616±1.269013105052 |
5 | 3.326244386565 | 0.978742927192 | 0.022431883898 | −1.663122193282±1.336874153612 |
6 | 3.333340909351 | 1.000022701147 | 0.000023931927 | −1.666670454676±1.333329555414 |
7 | 3.333333333340 | 1.000000000020 | 0.000000000021 | −1.666666666670±1.333333333330 |
8 | 3.333333333333 | 1.000000000000 | 0.000000000000 | −1.666666666667±1.333333333333 |
Po osmi iteracích způsobila metoda kvadratický faktor, který obsahuje kořeny −1/3 a −3 v rámci zobrazené přesnosti. Délka kroku od čtvrté iterace ukazuje superlineární rychlost konvergence.
Výkon
Bairstowův algoritmus zdědí lokální kvadratickou konvergenci Newtonovy metody, s výjimkou případu kvadratických faktorů multiplicity vyšších než 1, kdy je konvergence k tomuto faktoru lineární. Zvláštní druh nestability lze pozorovat, když má polynom lichý stupeň a pouze jeden skutečný kořen. Kvadratické faktory, které mají v tomto skutečném kořenu malou hodnotu, se obvykle rozcházejí do nekonečna.
Obrázky představují dvojice . Body v horní polovině roviny t > 0 odpovídá lineárnímu faktoru s kořeny , to je . Body v dolní polovině roviny t <0 odpovídá kvadratickým faktorům s kořeny , to znamená, , tedy obecně . Body jsou vybarveny podle posledního bodu iterace Bairstowa, černé body označují odlišné chování.
První obrázek je ukázkou jediného skutečného kořenového případu. Druhý naznačuje, že lze napravit odlišné chování zavedením dalšího skutečného kořene za cenu zpomalení rychlosti konvergence. Lze také v případě lichých stupňů polynomů nejprve najít skutečný kořen pomocí Newtonovy metody a / nebo metody zmenšování intervalů, takže po deflaci zůstane lépe vychovaný sudý polynom. Třetí obrázek odpovídá výše uvedenému příkladu.
Odkaz
- ^ Bairstow, Leonard (1920). „Dodatek: Řešení algebraických rovnic s numerickými koeficienty v případě, že existuje několik párů komplexních kořenů“. Aplikovaná aerodynamika. London: Longmans, Green and Company. str. 551–560.
externí odkazy
- Bairstowův algoritmus na Mathworld
- Numerické recepty ve Fortranu 77 online
- Příklad řešení kořene polynomu (deg (P) ≤ 10) pomocí Bairstowovy metody
- LinBairstowSolve, open-source implementace metody Lin-Bairstow v C ++ dostupná jako metoda knihovny VTK
- Online kořenový nález polynomu - Bairstowova metoda autor: Farhad Mazlumi