Pourquoi le bip sonore est pas ma fraction continue d'approximation correctement?
-
28-09-2019 - |
Question
En lisant plus SICP et je suis bloqué sur exercice 1.3.8 . Mon code fonctionne correctement pour l'approximation 1 / phi, mais ne fonctionne pas pour l'approximation 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))
Au lieu d'obtenir ,7 bla bla bla pour e-2, je reçois quelque chose de 0,5 bla bla. Je ne peux pas comprendre pourquoi. Je suis sûr que j'ai « d » défini correctement dans la fonction « Eulers-e-2 ».
Edit: Merci les gars, je calculais en arrière. Voici le code fixe.
(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)))
La solution
Vous semblez calculer les éléments suivants:
N1/(D100 + (N101/ D99 + N100/(D98 + N99/(..))))
Au lieu de
N1/(D1 + N2/(D2 + ...))
Depuis N et D sont les mêmes (tous les 1) pour 1 / phi, vous obtenez la bonne réponse là.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow