Bairstow-Verfahren
Das
Bairstow-Verfahren ist ein Iterationsverfahren der
numerischen Mathematik und dient dazu, die
Nullstellen eines
Polynoms zu bestimmen. Genauer bestimmt dieses Verfahren einen reellen quadratischen Faktor eines
Polynoms mit reellen Koeffizienten. Die reellen oder komplexen
Nullstellen dieses quadratischen Faktors können dann mit der bekannten Formel zum Lösen
quadratischer Gleichungen bestimmt werden. Weitere
Nullstellen können aus dem verbleibenden
Polynom nach Abspalten des quadratischen Faktors gewonnen werden.
Wie jedes iterative Verfahren hängt der Erfolg und die schnelle Konvergenz von der Wahl eines guten Startpunktes, d.h. initialen quadratischen Faktors ab, der schon fast ein Faktor des
Polynoms ist. Im Falle eines zufällige gewählten Startpunktes ergibt sich ein Verhalten, wie es im Newton-Fraktal visualisiert wird. Hat das zu lösende
Polynom mehrfache
Nullstellen oder [!dicht] beeinanderliegende Cluster von
Nullstellen, so kann dieses Verfahren daran scheitern, diese zu finden.
Merkmale des Verfahrens
Die Merkmale des Verfahrens in der Zusammenfassung:
- Bei einem Polynom mit reellen Koeffizienten arbeitet das Bairstow-Verfahren vollständig im Reellen und
- findet auch eventuell auftretende, paarweise konjugiert komplexen Nullstellen (a+bi und a−bi).
- Die Nullstellenberechnung wird auch Programmen zugänglich, die mit komplexer Arithmetik nicht umgehen können
- Eine Iteration in reeller Arithmetik ist erheblich schneller als eine Iteration in komplexer Arithmetik.
Das
Bairstow-Verfahren ist aus dem
Newton-Verfahren abgeleitet und konvergiert wie dieses mit 2. Ordnung.
Beschreibung des Verfahrens
- f(x)=fn⋅xn+fn−1⋅xn−1+⋯+f1⋅x+f0.
Die Koeffizienten des
Polynoms sind sämtlich
reelle Zahlen. Würde man nun in einer direkten Anwendung des
Newton-Verfahrens auf die Gleichung
f(x)=0 mit einem reellen Startwert beginnen, so wären alle Glieder der Iterationsfolge wieder reell. Um auch komplexe
Nullstellen zu finden, müsste die Rechnung mit
komplexen Zahlen durchgeführt werden. Jedoch haben
Polynome f(x) mit reellen Koeffizienten die Eigenschaft, dass komplexe
Nullstellen immer in konjugiert komplexen Paaren auftreten, ist
z=u+iv eine
Nullstelle, so auch
zˉ=u−iv. Das quadratische
Polynom
- a(x)=(x−z)(x−zˉ)=(x−u)2+v2=x2−2ux+(u2+v2),
welches die
Nullstellen z,zˉ hat, ist auch ein Faktor des
Polynoms f(x) und hat ebenfalls nur reelle Koeffizienten. Statt also direkt
Nullstellen zu bestimmen, werden zunächst quadratische Faktoren gesucht.
Ist
a(x)=x2+a1x+a0 ein quadratischer Faktor von
f(x), so gibt es einen weiteren Faktor
b(x) vom Grad
n−2. Betrachtet man die Koeffizienten von
a und
b als Unbestimmte, so ist die Gleichung
f(x)=a(x)b(x) zu lösen. Nach einem
Koeffizientenvergleich ergibt sich ein System
quadratischer Gleichungen in den Koeffizienten
- fnfn−1fn−2fjf2f1f0===⋮=⋮===bn−2bn−3+a1bn−2bn−4+a1bn−3+a0bn−2bj−2+a1bj−1+a0bjb0+a1b1+a0b2a1b0+a0b1a0b0
Aus den oberen Gleichungen lassen sich die Koeffizienten von
b(x) aus denen von
a(x) und
f(x) bestimmen, aus den letzten zwei Gleichungen ergibt sich dann das System, welches mittels des
Newton-Verfahrens gelöst werden soll.
Die notwendige Bestimmung auch der
Ableitungen des Gleichungssystems kann mit algebraischen Mitteln vereinfacht werden.
Mathematische Begründung
Es wird eine Faktorisierung
f(x)=a(x)b(x) mit einem quadratischen Faktor
a(x) und einem verbleibenden Faktor
b(x) gesucht. Ist jedoch
a(x) nur ein näherungsweiser Faktor, so hinterlässt die
Division mit Rest von
f(x) durch
a(x) mit Ergebnis
b(x) einen Rest
r(x),
- f(x)=a(x)b(x)+r(x).
Da
a(x) quadratisch ist, ist
r(x) linear oder konstant. Es wird nun ein lineares
Polynom Δa(x) gesucht, so dass
a(x)+Δa(x) eine bessere Näherung für einen Faktor von
f(x) ist. Ist das verbesserte
Polynom sogar ein exakter Faktor, so gibt es ein
Polynom Δb(x) vom Grad
n−3 mit
- f(x)=(a(x)+Δa(x))⋅(b(x)+Δb(x)).
Im
Newton-Verfahren werden nur Terme erster Ordnung in den Koordinaten des Änderungsvektors betrachtet, alle höhergradigen Ausdrücke werden vernachlässigt. In erster Ordnung ergibt unter
Kombination beider Gleichungen
- r(x)=f(x)−a(x)b(x)=a(x)⋅Δb(x)+Δa(x)⋅b(x).
Diese Gleichung kann in ein
lineares Gleichungssystem für die Koeffizienten von
Δa(x) und
Δb(x) umgewandelt werden. Sie kann jedoch mit algebraischen Mitteln weiter vereinfacht werden, sodass das schließlich zu lösende lineare System zwei Variable und genausoviele Gleichungen hat.
Da
degΔa(x)<dega(x) gilt, ist das
Polynom Δa(x) der Vertreter kleinsten Grades in seiner Restklasse modulo
a(x). Da
a(x)Δb(x) in der Restklasse der Null liegt, muss
- r(x)≡Δa(x)b(x)moda(x)
gelten. Nun kann auch das
Polynom b(x) modulo
a(x) reduziert werden, nach einer weiteren
Division mit Rest ergeben sich ein
Quotient q(x) und ein linearer Rest
p(x) mit
b(x)=q(x)a(x)+p(x). Es ergibt sich
- r(x)≡Δa(x)p(x)moda(x) bzw. r(x)=Δa(x)p(x)−p1Δa1⋅a(x).
Als Gleichungssystem ausgeschrieben bedeutet dies
- (r0r1)=(p0p1−p1a0p0−p1a1)⋅(Δa0Δa1).
Die
Determinante der Systemmatrix ist
D=p02+p1(a0p1−a1p0). Ist diese von Null verschieden, so ergibt sich die Lösung des Systems und damit die Änderung des quadratischen Faktors
g(x) als
- (Δa0Δa1)=D1(p0−p1a1−p1p1a0p0)⋅(r0r1)=(p0r0+p1(a0r1−a1r0)p0r1−p1r0).
Für den nächsten Schritt wird
a(x) durch
a(x)+Δa(x) ersetzt und von vorn begonnen. Man kann abbrechen, wenn die Koeffizienten des Rests
r(x) sämtlich eine vorher gesetzte Schranke unterschreiten.
Grundzüge
Das Verfahren beruht auf folgenden Schritten:
- Aus den Startwerten der Iteration für zwei Nullstellen wird ein quadratisches Polynom konstruiert.
- Das Polynom n-ten Grades wird durch dieses quadratische Polynom dividiert
- Das bei der Division entstehende Polynom (n−2)-ten Grades wird erneut durch das quadratische Polynom dividiert
- Bei der Division entstehen Divisionsreste
- Aus den Divisionsresten wird ein verbessertes quadratisches Polynom bestimmt
- Wenn bei der Polynomdivision kein Rest mehr bleibt, sind die Nullstellen des quadratischen Polynoms auch Nullstellen des Polynoms n-ten Grades.
Iteration
- a(x)=x2+a1⋅x+a0
- erhält man ein Polynom (n-2)-ten Grades:
- b(x)=bn−2⋅xn−2+bn−3⋅xn−3+⋯+b1⋅x+b0
- Die Koeffizienten des zugehörigen beiden Divisionsrests r(x)=r0+r1x=p−ab können mit der folgenden Rekursionsformel zur Bestimmung von bi berechnet werden:
- bn=bn−1=0;
- bj=pi+2−a1⋅bj+1−a0⋅bj+2;j=n−2,n−3,…,0,−1,−2;
- r1=b−1 und
- r0=b−2+a1b−1;
- Erneute Division von b(x) durch a(x) ergibt ein neues Polynom q(x) und dessen Divisionsrest p(x)=p1x+p0, wobei eine analoge Rekursionsformel zum Einsatz kommt, es gelten wieder p1=q−1 und p0=q−2+a1q−1;
- Mit den Divisionsresten r0, r1, p0, p1 verbessert man die Koeffizienten des quadratischen Polynoms a(x):
- M=−a0⋅q−1−a1⋅q−2;D=q−22−M⋅q−1
- Δa1=Dq−1⋅b−2−q−2⋅b−1;Δa0=DM⋅b−1−q−2⋅b−2
- Die verbesserten Startwerte ergeben sich aus
- a1neu=a1alt−Δa1
- a0neu=a0alt−Δa0
Anmerkungen zum Ablauf
- Die Bestimmung von Δa0, Δa1 kann als Lösung des folgenden Gleichungssystems aufgefasst werden:
- (q−2Mq−1q−2)⋅(Δa1Δa0)=(−b−1−b−2)
- Das Verfahren lässt sich numerisch relativ einfach, schnell und speichergünstig umsetzen, wenn man nicht erst b(x) berechnet und speichert, sondern im Schritt j die bj,bj+1,bj+2 sofort dazu verwendet, auch den Koeffizienten qj=bj+2−a1qj+1−a0qj+2 zu berechnen.
- Als Startwerte für die Iteration kann man beispielsweise p=anan−1;q=anan−2 wählen. Wenn Näherungen für zwei Nullstellen x~1, x~2 vorliegen, kann auch alternativ p=−x~1−x~2; q=x~1⋅x~2 wählen.
- Die Iteration kann abgebrochen werden, wenn r0=r1=0 bzw. b−1=b−2=0 in der gewünschten Ergebnisgenauigkeit, dann wurden passende Nullstellen gefunden und a(x) ist ein Teiler von f(x). In diesem Fall lohnt es sich, alle Koeffizienten von b(x) zu bestimmen und dann mit b(x) die nächsten Nullstellen zu suchen. Denn wenn man von f(x) die Linearfaktoren zu den Nullstellen abdividiert, erhält man b(x).
Beispiel
- f(x)=6⋅x5+11⋅x4−33⋅x3−33⋅x2+11⋅x+6.
Die Startwerte der Iteration bestimmt man beispielsweise aus der Empfehlung
- a1=fnfn−1=611;a0=fnfn−2=−633
Die Iteration liefert folgende Werte: Nr a1 a0 0 1,83333333333333 -5,50000000000000 1 2,97902606854572 -0,03989678443826 2 3,63530605309108 1,90069300994740 3 3,06493803975823 0,19353087552890 4 3,46183419123714 1,38567973111800 5 3,32624438656387 0,97874292718913 6 3,33334090935105 1,00002270114662 7 3,33333333333992 1,00000000001968 8 3,33333333333333 1,00000000000000
Nach der 8. Iteration wurden a1 und a0 des Näherungspolynoms im Rahmen der Rechengenauigkeit exakt bestimmt. Die Lösung ergibt sich dann aus dem
Polynom
- a(x)=x2+310⋅x+1=0
- x1=−31x2=−3
Wenn man nun diese beiden
Nullstellen dem
Polynom f(x) abdividiert, kann das quadratische
Polynom gleich als Startwert für die nächste Iteration verwendet werden.
a(x)=(Z−x)2+∣y∣⋅y für
(x,y)∈[−3,3]2
Im allgemeinen kann man die Konvergenz dieses Verfahrens jedoch nicht garantieren, wie sich an den schwarzen Flächen des nebenstehenden Bildes ablesen lässt. Für diese findet die Iteration in den ersten 100 Schritten keinen Faktor hinreichender Genauigkeit. In den weißen
Gebieten wird ein guter Faktor schon im ersten Iterationsschritt erreicht, die farbigen
Punkte liefern Startwerte, deren Iteration zu dem entsprechend gefärbten Bassin um einen der Faktoren führt.
Siehe auch
Ein Mathematiker, der nicht irgendwie ein Dichter ist, wird nie ein vollkommener Mathematiker sein.
Karl Weierstraß
Anbieterkеnnzeichnung: Mathеpеdιa von Тhοmas Stеιnfеld
• Dοrfplatz 25 • 17237 Blankеnsее
• Tel.: 01734332309 (Vodafone/D2) •
Email: cο@maτhepedιa.dе