;; Die ersten drei Zeilen dieser Datei wurden von DrRacket eingefügt. Sie enthalten Metadaten ;; über die Sprachebene dieser Datei in einer Form, die DrRacket verarbeiten kann. #reader(lib "DMdA-beginner-reader.ss" "deinprogramm")((modname newton) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Berechne eine Näherung der Quadratwurzel (: sq-root (real -> real)) (check-within (sq-root 0) 0 0.1) (check-within (sq-root 4) 2 0.1) (check-within (sq-root 100) 10 0.1) (define sq-root (lambda (x) (sqrt-iter 1 x))) ; Berechne Näherung der Quadratwurzel aus einem Schätzwert (: sqrt-iter (real real -> real)) (define sqrt-iter (lambda (y x) (if (good-enough? y x) y (sqrt-iter (improve y x) x)))) ; Liefere einen verbesserten Schätzwert. (: improve (real real -> real)) (define improve (lambda (y x) (average y (/ x y)))) ; Berechne den Mittelwert zweier Zahlen. (: average (real real -> real)) (define average (lambda (x y) (/ (+ x y) 2))) ; Ist unser Schätzwert gut genug? (: good-enough? (real real -> boolean)) (define good-enough? (lambda (y x) (< (abs (- (* y y) x)) precision))) (: precision real) (define precision 0.000001)