为什么我的持续分数不能正确地近似?
-
28-09-2019 - |
题
阅读更多SICP,我一直困扰着 练习1.3.8. 。我的代码适用于近似1/PHI,但在近似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))
我没有得到.7等等的blah等等E-2,我得到了.5等等。我不知道为什么。我很确定我在“ Eulers-e-2”功能中正确定义了“ D”。
编辑:谢谢大家,我正在向后计算它。这是固定的代码。
(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)))
解决方案
您似乎正在计算以下内容:
N1/(D100 + (N101/ D99 + N100/(D98 + N99/(..))))
代替
N1/(D1 + N2/(D2 + ...))
由于N和D对于1/PHI都是相同的(全1秒),因此您在那里得到正确的答案。
不隶属于 StackOverflow