Perché il segnale acustico non è la mia frazione continua approssimando correttamente?
-
28-09-2019 - |
Domanda
lettura attraverso più SICP e mi sono bloccato su esercizio 1.3.8 . Il mio codice funziona correttamente per approssimare 1 / phi, ma non funziona per l'approssimazione 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))
Invece di ottenere 0,7 bla bla bla per l'e-2, sto ottenendo 0,5 bla bla qualcosa. Non riesco a capire perché. Sono abbastanza sicuro che ho "d" definito correttamente nella funzione "Eulero-e-2".
Modifica: Grazie ragazzi, mi stava calcolando all'indietro. Ecco il codice fisso.
(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)))
Soluzione
Sembra che tu stia calcolando il seguente:
N1/(D100 + (N101/ D99 + N100/(D98 + N99/(..))))
Al posto di
N1/(D1 + N2/(D2 + ...))
Dato che N e D sono gli stessi (tutti 1) per 1 / Phi, si ottiene la risposta giusta lì.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow