Warum ist die bleep nicht mein Kettenbruch Annäherung richtig?
-
28-09-2019 - |
Frage
Beim Lesen durch mehr SICP und ich bin fest auf Übung 1.3.8 . Mein Code funktioniert zum Annähern 1 / phi, aber nicht funktioniert zur Annäherung e -. 2
(define (cont-frac n d k)
(define (frac n d k)
(if (= k 0)
1.0
(+ (d k) (/ (n (+ k 1)) (frac n d (- k 1))))))
(/ (n 1) (frac n d k)))
(define (eulers-e-2)
(cont-frac (lambda (i) 1.0)
(lambda (i)
(if (= (remainder (+ i 1) 3) 0)
(* 2.0 (/ (+ i 1) 3))
1.0))
100))
(define (1-over-phi)
(cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
100))
Statt sich 0,7 bla bla bla für e-2, ich bin immer 0,5 bla bla etwas. Ich kann nicht herausfinden, warum. Ich bin mir ziemlich sicher, dass ich "d" definiert richtig in der "Eulers-e-2" Funktion haben.
Edit: Danke Jungs, ich war es rückwärts zu berechnen. Hier ist der festgelegte Code.
(define (cont-frac n d k)
(define (frac n d i)
(if (= k i)
(d i)
(+ (d i) (/ (n (+ i 1)) (frac n d (+ i 1))))))
(/ (n 1) (frac n d 1)))
Lösung
Sie scheinen die folgenden zu Berechnung:
N1/(D100 + (N101/ D99 + N100/(D98 + N99/(..))))
Anstelle von
N1/(D1 + N2/(D2 + ...))
Da N und D die gleichen sind (alle 1 s) für 1 / phi, erhalten Sie die richtige Antwort gibt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow