Heron-Verfahren

Berechnung von 5 {\displaystyle {\sqrt {5}}} mit dem Heronverfahren

Das Heron-Verfahren, Heronsche Näherungsverfahren oder babylonische Wurzelziehen ist ein Rechenverfahren zur Berechnung einer Näherung der Quadratwurzel einer reellen Zahl a > 0 {\displaystyle a>0} . Hierbei wird die Zahl a {\displaystyle a} als Flächeninhalt eines Rechtecks aufgefasst (z. B. mit Seitenlängen a {\displaystyle a} und 1 {\displaystyle 1} ). Dieses Rechteck wird dann schrittweise in ein flächengleiches Quadrat transformiert, indem man in jedem Rechenschritt die längere Seite des vorherigen Rechtecks verkürzt und seine kürzere Seite so verlängert, so dass der Flächeninhalt a {\displaystyle a} erhalten bleibt. Die verkürzte neue längere Seite berechnet sich dabei als Mittelwert der beiden Seiten des vorherigen Rechtecks (siehe Grafik rechts). Das Verfahren ist nach dem griechischen Mathematiker Heron von Alexandria benannt, der es in seinem Werk Metrika beschrieb. Allerdings wurde es schon über 1000 Jahre früher von den Babyloniern benutzt.

Im Gegensatz zum schriftlichen Wurzelziehen benötigt man keinen festgelegten, also korrekten, Ausgangswert. Zudem ist das Verfahren relativ robust gegen Rundungsfehler und konvergiert in der Regel schneller. Jedoch können Wurzeln mit dem Heronverfahren prinzipiell nur näherungsweise berechnet werden.

Geometrische Veranschaulichung und Grundidee

Die ersten vier Schritte zur Berechnung der Wurzel aus 9 mit dem Heron-Verfahren

Dem Heron-Verfahren liegt die Idee zu Grunde, dass ein Quadrat mit Flächeninhalt A {\displaystyle A} eine Seitenlänge von A {\displaystyle {\sqrt {A}}} hat. Ausgangspunkt des Verfahrens ist ein beliebiges Rechteck mit Flächeninhalt A {\displaystyle A} . Schritt für Schritt wird das Seitenverhältnis des Rechtecks so geändert, dass sich seine Form immer mehr der eines Quadrats annähert, während der Flächeninhalt gleich bleibt. Die Seitenlängen des Rechtecks sind die Näherungswerte für A {\displaystyle {\sqrt {A}}} .

Im ersten Schritt wird eine beliebige Seitenlänge x 0 {\displaystyle x_{0}} für das Rechteck gewählt. Damit dieses den gewünschten Flächeninhalt hat, wird die zweite Seitenlänge mit der Formel

y 0 = A x 0 {\displaystyle y_{0}={\frac {A}{x_{0}}}}

berechnet. Als Beispiel soll die Wurzel aus 9 berechnet werden. Für die eine Seitenlänge wird der Wert 9 gewählt, sodass sich die andere Seitenlänge zu 1 berechnet. Das erste Rechteck hat deshalb die folgende Form.

Die Ähnlichkeit dieses Rechteckes mit einem Quadrat ist gering. Das kommt auch dadurch zum Ausdruck, dass die Seitenlängen 1 und 9 sehr schlechte Näherungen für die Wurzel aus 9 sind.

Um eine bessere Annäherung an ein Quadrat zu erhalten, muss die lange Seite gekürzt und die kurze Seite verlängert werden. Als neue Länge der langen Seite wird der Mittelwert

x 1 = x 0 + y 0 2 {\displaystyle x_{1}={\frac {x_{0}+y_{0}}{2}}}

der beiden bisherigen Seitenlängen genommen. Die Länge der anderen Seite berechnet sich wie oben zu

y 1 = A x 1 {\displaystyle y_{1}={\frac {A}{x_{1}}}} .

Im Beispiel ergibt sich als Mittelwert die Seitenlänge 5. Die dazugehörige kurze Seite hat eine Länge von 1,8.

Auch hier ist die Ähnlichkeit zu einem Quadrat noch gering. Allerdings ist das neue Rechteck im Vergleich zum vorhergehenden kompakter.

Der beschriebene Ablauf wird in jedem weiteren Schritt des Heron-Verfahrens wiederholt. Der Mittelwert der Seitenlängen eines Rechtecks entspricht der Länge der langen Seite des neuen Rechtecks und die Länge der kurzen Seite lässt sich daraus jeweils wie oben beschrieben berechnen. Im Beispiel entstehen so in den nächsten zwei Schritten die folgenden beiden Rechtecke.

Das letzte Rechteck ist schon annähernd quadratisch. Die Seitenlänge 3,024 liegt entsprechend nah bei 3, dem exakten Wert von 9 {\displaystyle {\sqrt {9}}} .

Iterationsverfahren

Heron-Verfahren zur Berechnung von 2 {\displaystyle {\sqrt {2}}} mit drei verschiedenen Startwerten

Aus der geometrischen Grundidee erhält man ein allgemeines Iterationsverfahren zur näherungsweisen Berechnung der Wurzel einer reellen Zahl a > 0 {\displaystyle a>0} :

Man geht von einem beliebigen Startwert x 0 0 {\displaystyle x_{0}\neq 0} (idealerweise in der Nähe von a {\displaystyle {\sqrt {a}}} ) aus und setzt y 0 = a / x 0 {\displaystyle y_{0}=a/x_{0}} . Da in jedem Iterationsschritt die eine Seite durch den Mittelwert der beiden Seiten ersetzt wird und die andere Seite so angepasst wird, dass der Flächeninhalt unverändert bleibt, lautet die Iterationsvorschrift

x n + 1 = x n + y n 2 und y n + 1 = a x n + 1 {\displaystyle x_{n+1}={\frac {x_{n}+y_{n}}{2}}\quad {\text{und}}\quad y_{n+1}={\frac {a}{x_{n+1}}}} .

Häufig wird die Iteration in einer Form geschrieben, in der nur noch die Variable x {\displaystyle x} vorkommt. Dazu setzt man y n = a x n {\textstyle y_{n}={\frac {a}{x_{n}}}} in die Gleichung für x n + 1 {\displaystyle x_{n+1}} ein und erhält die Rekursionsgleichung

x n + 1 = 1 2 ( x n + a x n ) {\displaystyle x_{n+1}={\frac {1}{2}}\cdot \left(x_{n}+{\frac {a}{x_{n}}}\right)} ,

die eine Folge x 0 , x 1 , x 2 , {\displaystyle x_{0},x_{1},x_{2},\ldots } („Heron-Folge“) von immer besseren Näherungen von a {\displaystyle {\sqrt {a}}} liefert.

Alternativ kann diese Rekursionsgleichung auch aus dem Newton-Verfahren für die Nullstelle der quadratischen Funktion f ( x ) = x 2 a {\displaystyle f(x)=x^{2}-a} hergeleitet werden.

Beispiel

Die Folgenglieder der babylonischen Wurzelfolge mit dem Startwert a 0 = 1 4 {\displaystyle a_{0}={\tfrac {1}{4}}} .

Mithilfe des Heron-Verfahrens soll die Wurzel aus 2 angenähert werden. Als Startwert wird x 0 = 2 {\displaystyle x_{0}=2} gewählt. Die ersten Glieder der Heron-Folge lauten

x 1 = 1 2 ( 2 + 2 2 ) = 3 2 = 1 , 5 {\displaystyle x_{1}={\frac {1}{2}}\cdot \left(2+{\frac {2}{2}}\right)={\frac {3}{2}}=1{,}5}
x 2 = 1 2 ( 3 2 + 2 3 2 ) = 17 12 = 1,416 66666 {\displaystyle x_{2}={\frac {1}{2}}\cdot \left({\frac {3}{2}}+{\frac {2}{\frac {3}{2}}}\right)={\frac {17}{12}}=1{,}41666666\dots }
x 3 = 1 2 ( 17 12 + 2 17 12 ) = 577 408 = 1,414 21568 . {\displaystyle x_{3}={\frac {1}{2}}\cdot \left({\frac {17}{12}}+{\frac {2}{\frac {17}{12}}}\right)={\frac {577}{408}}=1{,}41421568\dots .}

Nach drei Iterationen ist die Näherung bereits auf fünf Nachkommastellen genau und die Abweichung vom wahren Wert 2 = 1,414 21356 {\displaystyle {\sqrt {2}}=1{,}41421356\ldots } beträgt somit weniger als 0,0001 %.

Konvergenz

Die Heron-Folge ( x n ) {\displaystyle (x_{n})} mit x n = 1 2 ( x n 1 + a x n 1 ) {\textstyle x_{n}={\frac {1}{2}}\left(x_{n-1}+{\frac {a}{x_{n-1}}}\right)} konvergiert für jeden Startwert x 0 > 0 {\displaystyle x_{0}>0} gegen a {\displaystyle {\sqrt {a}}} . Somit kann jede Wurzel durch das Iterationsverfahren beliebig angenähert werden.

Beweis  

Alle Glieder der Heron-Folge sind positiv. Man kann nun zeigen, dass sie auch alle wenigstens so groß wie a {\displaystyle {\sqrt {a}}} sind und die Heron-Folge somit nach unten beschränkt ist. Dazu zeigt man für beliebiges n 1 {\displaystyle n\geq 1} die Ungleichung x n 2 a 0 {\displaystyle x_{n}^{2}-a\geq 0} :

x n 2 a = 1 4 ( x n 1 + a x n 1 ) 2 a = 1 4 ( x n 1 a x n 1 ) 2 0 {\displaystyle x_{n}^{2}-a={\frac {1}{4}}\cdot \left(x_{n-1}+{\frac {a}{x_{n-1}}}\right)^{2}-a={\frac {1}{4}}\cdot \left(x_{n-1}-{\frac {a}{x_{n-1}}}\right)^{2}\geq 0} .

Weiter zeigt man, dass die Heron-Folge monoton fallend ist:

x n + 1 x n = 1 2 ( x n + a x n ) x n = a 2 x n x n 2 = a x n 2 2 x n 0 {\displaystyle x_{n+1}-x_{n}={\frac {1}{2}}\cdot \left(x_{n}+{\frac {a}{x_{n}}}\right)-x_{n}={\frac {a}{2x_{n}}}-{\frac {x_{n}}{2}}={\frac {a-x_{n}^{2}}{2x_{n}}}\leq 0} .

Aufgrund der Beschränktheit und Monotonie muss die Folge nach dem Monotoniekriterium gegen einen Grenzwert x {\displaystyle x} konvergieren. Es bleibt noch zu zeigen, dass x = a {\displaystyle x={\sqrt {a}}} . Hierzu ist es zweckmäßig, die Folge x 0 2 , x 1 2 , x 2 2 , {\displaystyle x_{0}^{2},x_{1}^{2},x_{2}^{2},\ldots } zu betrachten, die gegen x 2 {\displaystyle x^{2}} konvergiert. Aus x n 2 a > 0 {\displaystyle x_{n}^{2}\geq a>0} folgt x 2 a > 0 {\displaystyle x^{2}\geq a>0} , also ist x 0 {\displaystyle x\neq 0} . Nun lässt sich der Grenzwert x {\displaystyle x} berechnen:

x = lim n 1 2 ( x n + a x n ) = 1 2 ( x + a x ) {\displaystyle x=\lim _{n\to \infty }{\frac {1}{2}}\cdot \left(x_{n}+{\frac {a}{x_{n}}}\right)={\frac {1}{2}}\cdot \left(x+{\frac {a}{x}}\right)} .

Hieraus erhält man durch elementare Termumformungen x 2 = a {\displaystyle x^{2}=a} , woraus schließlich x = a {\displaystyle x={\sqrt {a}}} folgt.

Der Startwert x 0 {\displaystyle x_{0}} der Iteration kann sogar, solange er von Null verschieden ist, beliebig festgesetzt werden, die Iteration konvergiert immer. Zu beachten ist, dass bei negativen Startwerten die Iteration gegen die negative Quadratwurzel konvergiert. Da sich das Heron-Verfahren aus dem Newtonschen Näherungsverfahren ableiten lässt und die zu berechnende Nullstelle einfach ist, ist die Konvergenzordnung 2. Die Zahl der richtigen Stellen wird mit jedem Schritt etwa verdoppelt.

Bei einem Startwert x 0 {\displaystyle x_{0}} in der Nähe von a {\displaystyle {\sqrt {a}}} erhält man mithilfe des Heron-Verfahrens schnell gute Näherungswerte, wie das Beispiel verdeutlicht. Wenn die Anfangsnäherung jedoch schlecht ist, sind viele Schritte für eine gute Näherung nötig. Wenn zum Beispiel die Wurzel einer ganzen Zahl a {\displaystyle a} mit 200 Binärstellen berechnet werden soll und man x 0 = a {\displaystyle x_{0}=a} als Startwert verwendet, dann wird die Näherung mit jedem Schritt um etwa eine Binärstelle kürzer, d. h. erst nach etwa 100 Schritten hat die Näherung die richtige Länge von 100 Stellen. Danach reichen sechs bis sieben weitere Schritte ( log 2 ( 100 ) {\displaystyle \log _{2}(100)} ), um alle 100 Stellen vor dem Komma richtig zu berechnen. Es empfiehlt sich somit, einen möglichst genauen Startwert x 0 {\displaystyle x_{0}} zu bestimmen. Im Beispiel sollte man zuerst die Bitlänge log 2 ( a ) + 1 {\displaystyle \lfloor \log _{2}(a)\rfloor +1} von a {\displaystyle a} ermitteln und einen Startwert mit der halben Länge verwenden.[A 1] Eine qualifizierte Schätzung für den Startwert erhält man aus der Taylorreihen-Entwicklung der binomischen Reihe um 1, deren zwei erste Glieder die Gleichung x 0 = a + 1 2 {\displaystyle x_{0}={\tfrac {a+1}{2}}} liefern.

Das Heron-Verfahren gehört zu den Fixpunktverfahren. Setzt man φ ( x ) = 1 2 ( x + a x ) {\textstyle \varphi (x)={\frac {1}{2}}\cdot \left(x+{\frac {a}{x}}\right)} , so gilt für den Fixpunkt (der die Bedingung φ ( x ) = x {\textstyle \varphi (x)=x} erfüllt) x 2 = a {\textstyle x^{2}=a} mit der (positiven) Lösung x = a {\textstyle x={\sqrt {a}}} .

Fehlerabschätzung

Für die Heron-Folge ( x n ) n 1 {\displaystyle (x_{n})_{n\geq 1}} gilt die Abschätzung

a x n a x n {\displaystyle {\frac {a}{x_{n}}}\leq {\sqrt {a}}\leq x_{n}} ,

und für den Fehler die Abschätzung

x n a = 1 2 x n 1 ( x n 1 a ) 2 1 2 x n 1 ( x n 1 a x n ) 2 = 1 2 x n 1 x n 2 ( x n 1 x n a ) 2 {\displaystyle x_{n}-{\sqrt {a}}={\frac {1}{2x_{n-1}}}\left(x_{n-1}-{\sqrt {a}}\right)^{2}\leq {\frac {1}{2x_{n-1}}}\left(x_{n-1}-{\frac {a}{x_{n}}}\right)^{2}={\frac {1}{2x_{n-1}\cdot x_{n}^{2}}}\left(x_{n-1}\cdot x_{n}-a\right)^{2}} .

Angewandt auf obiges Beispiel erhält man:

x 3 2 = 1 2 x 2 ( x 2 2 ) 2 1 2 x 2 x 3 2 ( x 2 x 3 2 ) 2 = 0,000 00212 {\displaystyle x_{3}-{\sqrt {2}}={\frac {1}{2x_{2}}}\left(x_{2}-{\sqrt {2}}\right)^{2}\leq {\frac {1}{2x_{2}\cdot x_{3}^{2}}}\left(x_{2}\cdot x_{3}-2\right)^{2}=0{,}00000212\dots }

Für den relativen Fehler

ε n = x n a a {\displaystyle \varepsilon _{n}={\frac {x_{n}-{\sqrt {a}}}{\sqrt {a}}}}

gilt die Rekursion

ε n + 1 = ε n 2 2 ( 1 + ε n ) {\displaystyle \varepsilon _{n+1}={\frac {\varepsilon _{n}^{2}}{2(1+\varepsilon _{n})}}} .

Die Folge der ε n {\displaystyle \varepsilon _{n}} ist also bei gegebenem relativen Fehler ε 0 {\displaystyle \varepsilon _{0}} der Startnäherung unabhängig von a {\displaystyle a} .

Implementierung in Software

Das Verfahren eignet sich besonders gut zur Implementierung in Software, da nur Grundrechenarten benötigt werden, s. o. Es wird heute angesichts der breiten Verfügbarkeit numerischer Prozessorhardware aber nur noch selten benötigt.

Wenn dazu noch eine Gleitkommadarstellung mit einem Zweier-Exponenten benutzt wird, wird der Ansatz relativ einfach, als Beispiel wird die Wurzel aus 5 betrachtet und der relative Fehler zum Endwert | x i x | x {\displaystyle {\frac {|x_{i}-x|}{x}}} verfolgt:

  • Zunächst wird von diesem Zweier-Exponenten eine gerade Anzahl abgespaltet, so dass als Exponent entweder eine 0 oder 1 übrig bleibt, die Zahl also auf das Intervall [ 1 2 , 2 ] {\displaystyle [{\tfrac {1}{2}},2]} normalisiert wird. In diesem Intervall ist die Wurzelfunktion eine nur schwach gekrümmte Kurve, lässt sich also numerisch gut behandeln. Beispiel: 5 = 4 1 , 25 = 2 1 , 25 2 1,118 034 = 2,236 068 {\displaystyle {\sqrt {5}}={\sqrt {4\cdot 1{,}25}}=2\cdot {\sqrt {1{,}25}}\approx 2\cdot 1{,}118034=2{,}236068} , es wird also vorerst nur noch a = 1 , 25 {\displaystyle a=1{,}25} mit dem Ziel x = 1,118 {\displaystyle x=1{,}118} behandelt.
  • Als Startwert für die eigentliche Iteration approximiert man diese Kurve durch eine noch einfachere, die sich direkt ohne Iteration berechnen lässt. Mit dieser Anfangsberechnung wird der Startwert ermittelt, mit dem die folgende Iteration begonnen wird. Man kann diese Kurve mehr oder weniger aufwendig ansetzen, mit den steigend komplizierteren Ansätzen unten lässt sich gegebenenfalls ein Iterationsschritt einsparen:
    • eine einfache Konstante (beispielsweise 1),
      Beispiel: x 0 = 1 {\displaystyle x_{0}=1} , relativer Fehler 1 , 1 10 1 {\displaystyle 1{,}1\cdot 10^{-1}}
    • eine Gerade mit Steigung 1 2 {\displaystyle {\tfrac {1}{2}}} und einer additiven Konstante von 1 2 {\displaystyle {\tfrac {1}{2}}} als Vereinfachung des nachfolgenden Falls
      Beispiel: x 0 = 1 2 + 1 , 25 2 = 1,125 {\displaystyle x_{0}={\tfrac {1}{2}}+{\tfrac {1{,}25}{2}}=1{,}125} , relativer Fehler 6 , 2 10 3 {\displaystyle 6{,}2\cdot 10^{-3}}
    • eine Gerade mit Steigung 1 2 {\displaystyle {\tfrac {1}{2}}} und einer additiven, optimierten Konstante von ( 2 2 4 2 ) 2 / 2 0,464 8415 {\displaystyle \left(2\cdot {\sqrt[{4}]{2}}-{\sqrt {2}}\right)^{2}/2\approx 0{,}4648415} ,
      Beispiel: x 0 = 0,929 683 2 + 1 , 25 2 1,089 841 {\displaystyle x_{0}={\tfrac {0{,}929683}{2}}+{\tfrac {1{,}25}{2}}\approx 1{,}089841} , relativer Fehler 2 , 5 10 2 {\displaystyle 2{,}5\cdot 10^{-2}} .
    • eine Gerade mit optimierter Steigung und einer additiven Konstante hier nicht näher betrachtet.
  • Ausgehend von dem so ermittelten Startwert x 0 {\displaystyle x_{0}} führt man eine feste Anzahl von Iterationsschritten durch. Die nötige Anzahl, um die gewünschte Genauigkeit zu erreichen, lässt sich dank der obigen Fehlerabschätzung als Worst Case innerhalb des Startintervalls direkt ausrechnen. Bei 32 Bits Mantisse und dem mittleren Startansatz braucht man beispielsweise nur drei Schritte. Diese fest gewählte Anzahl erspart wesentlich aufwendigere Abfragen auf Erreichung der Genauigkeit. Der Ersatz der genannten Konstanten durch die Zahl 1,0 ändert daran nichts. Auch der noch kompliziertere Ansatz brächte zumindest bei dieser Genauigkeit keine Einsparung eines weiteren Iterationsschritts. Bei höheren Genauigkeitsanforderungen kann das anders aussehen.
    Beispiel mit drei Schritten nach Ansatz 1 (Konstante 1, mit den anderen Ansätzen konvergiert es noch einen Schritt schneller):
    x 1 = x 0 + a x 0 2 x 1 = x 0 + 1 , 25 x 0 2 = 1 + 1 , 25 1 2 = 1,125 {\displaystyle x_{1}={\tfrac {x_{0}+{\tfrac {a}{x_{0}}}}{2}}x_{1}={\tfrac {x_{0}+{\tfrac {1{,}25}{x_{0}}}}{2}}={\tfrac {1+{\tfrac {1{,}25}{1}}}{2}}=1{,}125} , relativer Fehler 6 , 2 10 3 {\displaystyle 6{,}2\cdot 10^{-3}} x 2 = x 1 + a x 1 2 = 1,125 + 1 , 25 1,125 2 1,118 056 {\displaystyle x_{2}={\tfrac {x_{1}+{\tfrac {a}{x_{1}}}}{2}}={\tfrac {1{,}125+{\tfrac {1{,}25}{1{,}125}}}{2}}\approx 1{,}118056} , relativer Fehler 2 , 0 10 5 {\displaystyle 2{,}0\cdot 10^{-5}}
    x 3 = x 2 + a x 2 2 = 1,118 056 + 1 , 25 1,118 056 2 1,118 034 {\displaystyle x_{3}={\tfrac {x_{2}+{\tfrac {a}{x_{2}}}}{2}}={\tfrac {1{,}118056+{\tfrac {1{,}25}{1{,}118056}}}{2}}\approx 1{,}118034} , relativer Fehler kleiner als 10 6 {\displaystyle 10^{-6}}
    Man sieht die Wirkung der quadratischen Konvergenz, dass sich der relative Fehler von Schritt zu Schritt jeweils quadriert oder die Anzahl gültiger Stellen bzw. der negative Fehlerexponent etwa verdoppelt.
  • Zum Schluss wird der Exponent restauriert, indem man die Hälfte des im ersten Schritt abgespalteten Werts wieder hinzufügt.
    Beispiel: 2 x 3 = x 2 + a x 2 = 1,118 056 + 1 , 25 1,118 056 2,236 068 {\displaystyle 2\cdot x_{3}=x_{2}+{\tfrac {a}{x_{2}}}=1{,}118056+{\tfrac {1{,}25}{1{,}118056}}\approx 2{,}236068} .

Verallgemeinerung des Verfahrens

Dieses Verfahren lässt sich verallgemeinern, um die k-te Wurzel einer Zahl a > 0 {\displaystyle a>0} näherungsweise zu berechnen. Je größer k {\displaystyle k} ist, desto mehr Schritte werden benötigt, um die Wurzel genau zu berechnen.

Dabei wird das Newton-Verfahren zur Bestimmung der positiven Nullstelle a k {\displaystyle {\sqrt[{k}]{a}}} der Funktion f ( x ) = x k a {\displaystyle f(x)=x^{k}-a} angewandt. Mit f ( x ) = k x k 1 {\displaystyle f'(x)=kx^{k-1}} folgt aus der Rekursionsformel des Newton-Verfahrens x n + 1 = x n f ( x n ) f ( x n ) {\displaystyle x_{n+1}=x_{n}-{\frac {f(x_{n})}{f'(x_{n})}}} die Iterationsvorschrift:

x n + 1 = x n x n k a k x n k 1 = ( k 1 ) x n k + a k x n k 1 = 1 k ( ( k 1 ) x n + a x n k 1 ) . {\displaystyle x_{n+1}=x_{n}-{\frac {x_{n}^{k}-a}{kx_{n}^{k-1}}}={\frac {(k-1)x_{n}^{k}+a}{kx_{n}^{k-1}}}={\frac {1}{k}}\left((k-1)x_{n}+{\frac {a}{x_{n}^{k-1}}}\right).}

Beispielsweise lautet die Rekursionsformel zur Berechnung der Kubikwurzel:

x n + 1 = x n x n 3 a 3 x n 2 = 2 x n 3 + a 3 x n 2 = 1 3 ( 2 x n + a x n 2 ) . {\displaystyle x_{n+1}=x_{n}-{\frac {x_{n}^{3}-a}{3x_{n}^{2}}}={\frac {2x_{n}^{3}+a}{3x_{n}^{2}}}={\frac {1}{3}}\left(2x_{n}+{\frac {a}{x_{n}^{2}}}\right).}

Hier muss die Folge mit einem geeigneten Startwert x 0 {\displaystyle x_{0}} für den gesuchten Wert von a k {\displaystyle {\sqrt[{k}]{a}}} gestartet werden.

Für ganzzahliges positives k {\displaystyle k} gelten die gleichen Konvergenzaussagen wie oben für k = 2. {\displaystyle k=2.}

Bestimmung des Kehrwerts

Für k = 1 {\displaystyle k=-1} erhält man ein Verfahren, mit dem (ohne Verwendung der Division!) der Kehrwert a 1 = 1 / a {\displaystyle a^{-1}=1/a} näherungsweise errechnet werden kann:

x n + 1 = ( 1 1 ) x n 1 + a ( 1 ) x n 1 1 = 2 x n a x n 2 = ( 2 a x n ) x n . {\displaystyle x_{n+1}={\frac {(-1-1)x_{n}^{-1}+a}{(-1)x_{n}^{-1-1}}}=2x_{n}-ax_{n}^{2}=(2-ax_{n})\cdot x_{n}.}

Dieses Verfahren konvergiert für alle x 0 ( 0 , 2 / a ) {\displaystyle x_{0}\in \left(0,2/a\right)} quadratisch gegen 1 / a . {\displaystyle 1/a.}

Die Iteration ermöglichte für erste Computer ohne eingebaute Division die Zurückführung dieser Operation auf Multiplikation und Subtraktion. Die Division von zwei Zahlen wurde so ausgeführt, dass der Kehrwert des Nenners bestimmt wurde und mit dem Zähler multipliziert wurde.

Beispiel

Es soll 1 / 3 {\displaystyle 1/3} näherungsweise berechnet werden mit dem Startwert x 0 = 1 2 < 2 3 {\displaystyle x_{0}={\tfrac {1}{2}}<{\tfrac {2}{3}}} :

x 1 = ( 2 3 1 2 ) 1 2 = 1 4 = 0 , 25 , {\displaystyle x_{1}=\left(2-3\cdot {\frac {1}{2}}\right)\cdot {\frac {1}{2}}={\frac {1}{4}}=0{,}25,}
x 2 = ( 2 3 1 4 ) 1 4 = 5 16 = 0,312 5 , {\displaystyle x_{2}=\left(2-3\cdot {\frac {1}{4}}\right)\cdot {\frac {1}{4}}={\frac {5}{16}}=0{,}3125,}
x 3 = ( 2 3 5 16 ) 5 16 = 85 256 = 0,332 03125. {\displaystyle x_{3}=\left(2-3\cdot {\frac {5}{16}}\right)\cdot {\frac {5}{16}}={\frac {85}{256}}=0{,}33203125.}

Für den Startwert x 0 = 2 3 {\displaystyle x_{0}={\frac {2}{3}}} erhält man

x 1 = ( 2 3 2 3 ) 2 3 = 0 , {\displaystyle x_{1}=\left(2-3\cdot {\frac {2}{3}}\right)\cdot {\frac {2}{3}}=0,}
x 2 = ( 2 3 0 ) 0 = 0 , {\displaystyle x_{2}=\left(2-3\cdot 0\right)\cdot 0=0,}

somit keine Konvergenz gegen den gesuchten Wert von 1 3 . {\displaystyle {\tfrac {1}{3}}.}

Geschichte

Das Verfahren war in Mesopotamien bereits zur Zeit des babylonischen Königs Hammurapi I. (ca. 1750 v. Chr.) bekannt.[1] Um 100 n. Chr. wurde es von Heron von Alexandria im ersten Buch seines Werkes Metrika beschrieben.[2]

Literatur

  • Jochen Ziegenbalg, Oliver Ziegenbalg, Bernd Ziegenbalg: Algorithmen: Von Hammurapi bis Gödel. 4. Auflage. Springer Spektrum, Wiesbaden 2016, ISBN 978-3-658-12362-8, S. 55–60.
  • David Fowler, Eleanor Robson: Square Root Approximations in Old Babylonian Mathematics. In: Historia Mathematica, Band 25, Nr. 4, 1998, S. 366–378 (sciencedirect.com).
  • Hans Rudolf Schwarz, Norbert Köckler: Numerische Mathematik. 7. Auflage. Vieweg+Teubner, Wiesbaden 2009, ISBN 978-3-8348-0683-3, S. 192–194.
  • Dietmar Herrmann: Die antike Mathematik. 3. Auflage. Springer Spektrum, Berlin 2024, ISBN 978-3-662-68477-1, S. 337–339.
Commons: Heron-Verfahren – Sammlung von Bildern, Videos und Audiodateien
  • Das Heron-Verfahren zur Wurzelberechnung auf arndt-bruenner.de (Erläuterung und Beispielrechner)
  • Interaktive Illustration in GeoGebra (Papp)
  • Interaktive Illustration in GeoGebra (Leo)

Anmerkungen

  1. Startwert: Sofern der Ausgangswert bereits als Binärzahl (im Stellenwertsystem) vorliegt, kann einfach gezählt werden, an welcher Stelle i {\displaystyle i} seine höchstwertige '1' steht; Startwert wird dann 1 2 i / 2 {\displaystyle 1\cdot 2^{i/2}} . Sofern der Ausgangswert in (Binär-)Exponentialdarstellung vorliegt, kann als Startwert einfach der Exponent halbiert werden (um 1 Bit nach rechts schieben). Siehe auch Abschnitt Implementierung in Software

Einzelnachweise

  1. Jochen Ziegenbalg, Oliver Ziegenbalg, Bernd Ziegenbalg: Algorithmen: Von Hammurapi bis Gödel. Springer Spektrum 2016, S. 55 (Auszug (Google)).
  2. John J. O’Connor, Edmund F. RobertsonHeron-Verfahren. In: MacTutor History of Mathematics archive (englisch).