Ok ok also nochmal erklärt damit alle zufrieden sind
Ich gebs ja zu, nur für die interresant die auch mal andere Verfahren probieren wollen
InitialValueForHeron berechnet einen passenden Startwert für den Heron-Algorithmus :
A stellt den Radikanden dar. Wir wollen nun eine ganzahlige Näherung für den Radikanden finden.
Der Zähler i hat den Startwert 2, dann wird i^2 genommen, i inkrementiert, solange bis das i + 1 (also Inc(i)) größer oder gleich a ist.
Da bei der until-Abfrage nichts zugewiesen wird, gilt dann als Ergebnis das vorherige a.
Damit sind alle Vorbereitungen abgeschlossen :
Der Startwert ist x[0] := InitialValueForHeron(a).
Der Radikand a bleibt bestehen, es wird auch die Rundenanzahl (Genauigkeit) Rounds zugewiesen
Heron-Algorithmus :
Was jetzt passiert ist eine Mittelwertsannäherung des Radikands A
xN := (xN + a/xN) / 2
und das verpackt in eine For-Schleife, die zu der Rundenanzahl hochzählt.
Bei großen Extended-Zahlen reichen bereits 40 Runden und Delphi rundet den Näherungswert xn zu xN^2 = a.
mfG
Paul