- Das oben war Pseudo-Code; kein Delphi.
- 1e-10 = 0.0000000001
Die Abbruchbedingung verdeutscht: Falls sich bei der Berechnung fast nichts mehr ändert (Änderung kleiner als eine Toleranz), dann wird abgebrochen.
Kleines Programmbeispiel, welches mittels Newton die Wurzel von 2 berechnet (in diesem Fall auch Heron-Verfahren genannt):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); function f(x: Extended): Extended; begin Result := x*x-2; end; function df(x: Extended): Extended; begin Result := 2*x; end; const tol = 1e-10; var x, lastx: Extended; begin x := 2; repeat lastx := x; x := x-f(x)/df(x); until abs(x-lastx)<tol; ShowMessage('Eine Nullstelle von x*x-2=0 ist an der Stelle '+FloatToStr(x)); end; |
Anmerkung: Der Newton funktioniert in dieser Form nur für einfache Nullstellen. Ansonsten braucht's einen Vorfaktor vor f(x)/df(x) (der Vorfaktor enstpricht der Häufigkeit der Nullstelle).